Saturday, September 23, 2006

Not Everyone Suffers from Zope Blindness

The news this week that former "Zope dealers" Nuxeo were switching to Java has an interesting footnote that nobody else seems to have commented on:

We had a look at other Python web frameworks, but quickly figured out that they were behind Zope in terms of enterprise-readiness and features that we needed to support our ECM developments.

I'm not especially fond of Zope myself -- especially not Zope 2, where programming is concerned -- but there are certainly application areas where it is the uncontested heavyweight champion.  Nuxeo's announcement also noted that the thing that pushed them to look for other alternatives was the need to handle data sets larger than 5 terabytes.  If they were getting anywhere near that with Zope, I'd have to say that's pretty damn impressive.

Recently, I was trying to choose a software package to create a CMS and forum for my Seven Days to Live Your Dreams coaching program participants.  Zope was really the only contender from the Python world; everything else I looked at was PHP-based.  Interestingly, the PHP world has a lot of content management systems, and a lot of them seemed pretty competitive at a framework level with where Zope was several years ago.  However, in terms of how polished individual features were, and how nice the eye candy was, the PHP frameworks tended to exceed what was available for Zope.

I finally settled on Plone and Ploneboard, but am not entirely happy with the decision.  I initially tried to use Python 2.4, Zope 2.9.4 and Plone 2.5, but the latter had a showstopper bug that prevents creating new Plone sites.  I'm astonished that a major release would have a bug like that; aren't there any tests?

So I rolled that back and eventually got Python 2.3.5, Zope 2.8.8 and Plone 2.1.4 to work.  The site's not entirely done yet, and it's been an interesting experience.  So far, the performance seems pretty dreadful compared to the PHP systems I test-drove.  The ZMI (Zope Management Interface) doesn't seem to have changed much in the last five years or so (which is about how long it's been since I last tried to do anything serious with Zope 2).

Well, it's changed in the sense that it seems to have become more cryptic and colorful, due to the never-ending proliferation of new and weird icons for obscure special objects that do magical things.  I kind of expect a "Folder of +1 Eyecandy" or "Template of -1 Execution Time" to show up in there some day.  I guess there are limits to the applicability of an object-oriented metaphor for constructing sites via direct manipulation.

Meanwhile, the number of permissions needed to run a site seems to have exploded; I didn't even try to count how many different security permissions Plone added to the ZMI, but I'm pretty sure I'll be intimately familiar with them soon enough, as I go through disabling anything I don't understand.  Which is most everything, since the permissions aren't named in a very enlightening fashion nor do they manifest with links to help or documentation.

All that being the case, I still have a major comfort level provided by Zope that the PHP solutions can't compete with.  For example, whatever my security needs, I know that there will be some way to hack Zope's authorization system to do what I want, almost certainly without coding.  I know that, as long as I can find the template that controls something I want to change, I can click a button and customize it, again almost certainly without coding.

And that, perhaps, is the source of Zope blindness in the Python world to begin with.  Zope is a thing that helps you make sites, mostly without coding.  Which is heresy enough to start with, but when you add in the fact that it tends to make life rather difficult when you do have to start coding something, then I suppose it's not surprising that most of the Python community pretends it doesn't exist.

Unfortunately, although Zope 3 "gets it right", it's fairly clear that it will remain a rather niche web framework in the Python world at large.  The jobs for which it is manifestly "the right tool" remain primarily in the arena of difficult content management applications.  Luckily for Zope Corp., this is a profitable niche to be in.  As far as I know, being popular with the Python community has never made anybody much money.

In fact, I've found that in general, one's willingness to be unpopular with some people, in order to better serve another group of people, is strongly correlated with one's ability to make a profit.  And that makes me suspect that Zope Corp.'s investors are probably crying all the way to the bank at how unpopular they are with the Python community.

<< Jul 26: Symbols in Python
>> Oct 03: Like XP For Your Brain

^^ Home