[<<] Industrie Toulouse

I hear and hear and hear and read and read and read and interpret that there are too many web frameworks for Python. Why does the Python community seem to think this is limited to just them? Yeah, So there's Nevow, Quixote, Zope 2, Zope 3, CherryPy, WebWare, Spyce, bla bla bla. There are just as many different things available for Java, if not more. I can't keep up with Java Server Faces, Struts, Tapestry, J2EE's web parts, JSP, Servlets, on and on and on. I even see Python people look at all of the development and excitement around Ruby On Rails. But on RubyForge's WWW/HTTP - Dynamic Content listing, there are numerous other "web frameworks" and other libraries/toolkits for dynamic content. A similar listing on the Python Package Index (PyPI) is also a fairly big list. The point is - who cares?

There will never be one and only one magnificent web framework. For any language. Ever. Different toolkits have different strengths and play to different audiences. I HATE those who say "there should only be one. Everyone else only has one!" It's just not true.

What I do wish is that people would better explore the unique features of their languages in their web frameworks. I think Ruby On Rails does this expertly in Ruby. Seaside does this well for Smalltalk. I think that Bobo did this well for Python and so did Principia / Zope 1 and 2. Those are unique systems. Yes, Zope 2 has its faults, but it is still wildly successful. Zope and its predecessors were not trying to copy Rails, JSP, PHP, ASP, ColdFusion, CGI.pm or Java Servlets. I see too much of this. Even I was guilty of that, writing my own in the mid nineties inspired too much by NeXT's WebObjects. A model that makes sense for Java does not necessarily make sense for Python.

So, I applaud Quixote, which seems to take some of the concepts of early Bobo/Principia and cleans them up a bit. I applaud Nevow, what little I've seen of it. I've seen even less of CherryPy, which I've seen even less of, but looks to be "pythonic" as well. To a lesser extent, I even applaud Subway. Subway is trying to be a stack similar to Ruby On Rails, but I give it credit for utilizing many pre-written components. So, it's half copy, half original.

I still throw my personal weight and preference behind Zope 3. Zope 3 is simultaneously young and mature. In its released form, it's young. But it's been in development for years and already has some rather successful deployments and projects. I've only barely started working with it myself, but I've liked my experiences. Loose coupling is a magnificent thing. As I'm trying to integrate a well written but monolithic Zope 2 forum product into a more general web site, I realize the benefits of loosely coupled systems written as small components instead of a large monolithic class. I like the way that Zope 3 encourages code structure. More small collaborating objects instead of large massive-inheritance classes.

When it comes down to it, I'd rather have many web frameworks than one way to do it. The chances that any one style will fit everyone in the Python community are slim to nil. Both 'Quixote' and 'CherryPy' claim themselves to be "highly Pythonic." But what does that really mean?