[Zope] Zpatterns / SmartObjects

ra@burningman.com ra@burningman.com
Wed, 29 May 2002 14:15:35 -0700


Oliver Marx wrote:
> The ideas behind seems good.

They are, IMHO.  Very good.

> But all development seems to have stopped in 2001!???

Sadly, yes... *sigh*

> Why is that?

I can't say for sure, but I have a couple of ideas...

First, the learning curve for understanding ZPatterns is very, very 
steep.  The learning curve for Zope itself is rather steep, but compared 
to ZPatterns, Zope is completely transparent.  There is a fair amount of 
documentation, but it is not very organized, it's hard to find, and it's 
very obtuse, due to the fact that it is littered with a great deal of 
complicated nomenclature, none of which makes any sense until you 
understand the rest of it.  The aspiring ZPatterns developer is required 
to deal with and grok terms such as Specialist, DataSkin, DataManager, 
Rack, PlugIn, PlugInContainer, SkinScript, Sheet/AttributeProvider, and 
the RIPP (i.e. "Racks, Implementors, PropertyHandlers, and Predicates") 
design pattern.  Since these ideas are all interrelated, usually the 
learning process involves reading pages and pages of documentation 
littered with all of these terms for weeks at a time, understanding very 
little, until finally a gestalt occurs and the whole thing begins to 
make sense.  Very few folks have the patience that an undertaking like 
this requires.

This seems to me to be the most likely reason that ZPatterns was not 
widely adapted by the Zope developer community.  Since a critical mass 
of users never developed, investing the amount of time required to keep 
the ZPatterns code base current with new versions of Zope probably 
didn't seem worth it to the developers.  This is a tragedy, in my eyes, 
because I think that the value that ZPatterns brings to the table for 
Zope application development far outweighs the time invested in learning 
the system.

All is not lost, however... Philip Eby (ZPatterns creator) is currently 
working on TransWarp (http://telecommunity.com/TransWarp/), which is, as 
far as I can tell, a generalization of the ZPatterns ideas out of the 
Zope framework and into Python itself.  (ZPatterns is essentially 
useless outside of Zope...)  Since Zope3 will allow for much better 
integration of non-Zope specific Python classes into its framework, it 
is to be expected that the benefits of ZPatterns will eventually 
resurface in some sort of Zope3/TransWarp-based set of tools.  In the 
meantime, however, folks who want to keep current with Zope and still 
use ZPatterns (and possibly even LoginManager) are out of luck.

ZPatterns is not supported beyond the Zope 2.3 series.  I, however, have 
a tarball that integrates the ZedPatterns/TransactionAgents patches and 
LoginManager, and it works quite well with an out-of-the-box 2.4.4 Zope. 
   (Unfortunately, it doesn't work w/ 2.5... and I don't have the time 
to port it...)  I haven't looked at the Zope licenses to see if 
redistributing this would be allowed, but if anyone's interested in 
getting their hands on it, send me an email off-list.  If I get enough 
responses (and the license allows) then I'll put a member page w/ the 
tarball up on zope.org.  I'd love to see ZPatterns get revived.

-r