Thursday, January 04, 2007

Where Zope Leads, Python Follows

A few months ago, Philipp von Weitershausen asked me to write a foreword for the new edition of Web Component Development with Zope 3, which is about to become available in the US.  The following is what I wrote.

Where Zope leads, Python follows.

So it has been for a decade, and the trend doesn't show any signs of stopping.  Whatever the latest buzzword -- be it RESTful web programming, standardized interfaces, pluggable components, or practical restricted-execution environments, Zope has quietly led the way, delivering the goods years ahead of anyone else.  Not just as technology concepts, but shipped and working in paying clients' offices.

And yet, strangely, Zope's role in the ongoing development of Python is little-known and little-appreciated among Python developers.  It is frequently the case that some new and much-touted development in the Python community -- especially in the web application and object security arenas -- is something that Zope has already been doing for many years.

I'm somewhat baffled by this peculiar blind spot in the Python community.  Even when I tell people that Zope's already done something that they're working on, the response is usually a blank look, or no response at all.  It's almost as if the innovations of Zope don't really exist until somebody else reinvents them.  In fact, the pattern has led me coin this little saying:

Those who do not study Zope, are condemned to reinvent it.

And it doesn't matter if you don't plan to actually use Zope.  Frankly, I haven't used Zope in years.  But the lessons I learned from Zope, I use constantly.  Studying Zope -- Zope 3 in particular -- will make you a better programmer, without question.

Of course, "better programmer" begs the question: better how?  Better at achieving what?

Zope was created so that the Zope Corporation (originally Digital Creations, LLC) could do contracting business more efficiently.  It allows them to keep an ever-growing toolkit of reusable solutions for their clients, reducing the costs of development and maintenance of these applications.  Its purpose is to let you "write once, use many": a multiplier of economic effectiveness.

If this is the path your career is taking, you can only benefit from studying how this has been achieved in Zope, whether you actually use Zope for this purpose or not.

If you are developing any new or cutting-edge technology for Python, you can only benefit by asking, "Does Zope already have this, or something like it?  And if not, how would Zope use this?"  These are the questions I asked when developing Python Eggs, setuptools, and even the WSGI (Python Web Server Gateway Interface) specification.  The success of these projects is a direct reflection of me asking WWZD: What Would Zope Do (with this idea)?

That's because what's good for Zope, is usually good for Python.  Not in the language sense -- Python's "Benevolent Dictator" and the "Zope Pope" often disagree quite strenuously on how the language should change.

What I mean is, tools that make Zope a better platform, make Python a better platform.  And if you study Zope diligently, you may begin to understand why.

And maybe, just maybe, you'll begin to find yourself a little bit ahead of other programmers, especially when it comes to new ideas...  but hopefully, not so far ahead, that they begin to act as though you don't exist, either!

Good luck!