« Control surfaces | Main | Better living through television »

Writing code for others that use it

Greg Wilson has written an op-ed piece for DDJ, Selling Open Source. He's calling out the fact that Python has too many web frameworks, and suggests the community needs to get its act together. He does ask the key question about the Python community's motivations - why should 'they' bother to rationalise the situation? The counter-arguments are suppplied:

"The answer two-fold. First, as long as development effort is spread out over so many competing projects, none of them will reach the critical mass needed to build something that can hold its own against PHP, Mason (in Perl), or RubyOnRails, which in turn weakens Python as a whole. Second, the fact that the Python community can't get its act together and speak with a single voice in such a key area sends a disturbing message to outsiders who are used to more established ways of doing business. "

I don't know, the idea that people who write open source software need to get their "act together" for the benefit of those who choose to use it in a business context I find hugely problematic. That open source software is some kind of entity which ought to act in the best interests of those that do not write the code, or is engaged in a war with commercial code offerings, are myths, and in the worst case acts to foster a bogus entitlement culture around open source. It's your choice to use open source software, period. No-one working on OSS is obliged to get their act together to simplify your decision making processes or make something palatable to existing business structures - which is not to say some projects are not focused on that. If you are using OSS code to do some lifting in a commercial IT scenario, then you need to do your due diligence and put some thought into the ramifications of introducing it, just like you would with any bespoke or commercial offering. The need for sound management and clear thinking around IT are not obviated by OSS.

"Think about it: If a new language appeared tomorrow, and had five different, incompatible regular expression libraries, what would you think about its stability, and likely longevity?"

So, there's an actual example of this happening - Java! Java had a few active regular expression libraries for years as the JDK didn't ship with one until JDK1.4. So, no standard regex library in Java for about the first 6 years, give or take, and it didn't seem to hurt the language's longevity. The web frameworks situation in open source Java is probably 'worse' by Greg's criteria - our collective back teeth are floating in Java web frameworks. Struts dominates the Java IT enterprise marketplace but is by no means considered ideal and is effectively being phased out to make way for JSF.

"Bringing any one of them up to "click and run" standards wouldn't be rocket science."

The piece is arguably a selective reading of the situation - a lot of people who read Dr. Dobbs won't neccessarily be up to speed with what's actually going on in the Python world and will go away with the wrong idea. Greg could go back and take a second look at what's happening in the Python web world where there is community coordination - Plone, MoinMoin, Zope. I think he'd be impressed. Plone is unsurpassed in the click and run department for a CMS. MoinMoin is instantly useful as a wiki, and has a great plugin model. Zope can be complicated, it certainly shows its evolution in someplaces, but there's not much you can't do with it as an app server - for example Plone is built on it. A follow-up piece focusing on those systems would provide a more balanced view for DDJ readers.

The real problem isn't that the Python community needs to get its story straight on the web frameworks front; it's that there is a lot choice which makes demands on people's attention, and that's not just a problem restricted to the Python world, or even the open source world.

June 14, 2005 09:36 PM


T. Joad
(June 15, 2005 01:19 AM #)

Java is a poor example of OSS longevity. Major corporate backing encourages the PHB hordes to forgive its many sins and omissions.

A good deal of Rails' success is that is has been hyped to those who know little about actual programming and simply want whatever gets them that 80/20 win. Within the Ruby community there is an actual diversity of Web framework usage, though you'd never know that from reading OnLAMP or slashdot.

But Rails is a great example of packaging an OSS application for general consumption. You don't have to be a non-geek to appreciate the ease with which Rails gets you up and running, and a lot of that is simply developers taking the time to write code wizards and high-level methods to wrap the mundane.

What puts me off many frameworks and applications (Zope being an example, last I tried it) is that is often so damn annoying just to install and configure a simple example. Whereas Rails or Nitro make life easy for me.

Maybe the Python community could look at what they have and see if they can make things simpler, rather than build anything new?

Assaph Mehr
(June 16, 2005 06:38 AM #)

The real problem isn't that the Python community needs to get its story straight on the web frameworks front; it's that there is a lot choice which makes demands on people's attention, and that's not just a problem restricted to the Python world, or even the open source world.

Why is that a problem? Is the other end where you have one commercial vendor for office software applications so big, that people have stopped paying any attention any better? In my view, choice mandating attention can lead to better results.

More thorough reply at http://www.bloglines.com/blog/AssaphMehr?id=8.

Bill Seitz
(June 16, 2005 05:16 PM #)

Maybe the CMS is a good vertical app to focus people on, but an awful lot of places are more interested in building internal web apps that talk to a SQL back end.

Zope is a scary direction to point a relative newbie.

It's all about removing a barrier to easy toe-dipping that could lead to market growth (following the Perl/PHP and now RubyOnRails patterns). Python developers don't want to end up like SmallTalk guys...