The Dude abides.

Posted
25 May 2007

Tagged
Free Software
Technology

A Million Deaths, A Million Resurrections

There is a yet another post on whether Plone is dead. Of course, Zope/Plone has been technologically dead for years now, but like Jehovah Witnesses, those hyping it refuse to go away. A comment at the end of the post caught my attention:

OK.. I think I may have solved the problem of the hanging. It was a product named COREBlog that allowed comments, and likely spammers had spammed thousands of comments into the blog to the point where requesting to view the blog caused it to load all of the comments .. this would lock up Zope.

Which, of course, has been my argument against Zope or any other application server: it is based on a shared model that has proven to fail in the long run. The problem always has been that any of the running applications on the application server may fail, thus bringing down all the applications that are working fine on that server. Not to mention that scaling is still a problem, requiring all sorts of additional layers of caching to keep up with the 20000 feet of abstractions application server developers seem to love to build in.

Some time ago, a friend buying into the whole Zope/Plone hype told me that a wrong attribute in a CSS file caused CPU usage to shoot up to 100% and stay there. A CSS file bringing down Zope? Yes, that’s exactly what happened. If this was the exception instead of the rule, that’s fine. But it is not. Another proponent of Zope I know moved quietly to Django after trying to get damn Zope to scale correctly … we chuckled quietly to ourselves at that point; a “I-Told-You-So” was tempting but unneccessary: failing projects serve to indicate that in bold, stark and unadulterated fashion.

Simple rules of software engineering points to the correct solution. Firstly, abstractions in the same system inevitably lead to coupling. Secondly, abstractions always leak. Thirdly, abstractions coupling with each other a single system leads to an exponential complexity function. Thus, building complexity through abstractions in a single system is really asking for trouble. Good systems are engineered in such a way to intentionally minimize coupling. The UNIX guys learnt this ages ago with the Rule of Modularity and Rule of Composition. For web applications, the only model that use these rules and have been proven to work relatively well is the shared-nothing model. This has been proven over and over and over again. Blind faith doesn’t make code run faster, good engineering does. The Zope community would do well to learn this now.

So enough with rants. Time for merriment: Terry Chay’s “Is Ruby The Dog and PHP the Dogfood?” is highly entertaining and a much needed respite from the Ruby hype we see :)


ANTLR 3.0 Released The Tak Nak OOXML Campaign