This post originated from an RSS feed registered with Python Buzz
by Ben Last.
Original Post: Heart Transplants For Fun And Profit
Feed Title: The Law Of Unintended Consequences
Feed URL: http://benlast.livejournal.com/data/rss
Feed Description: The Law Of Unintended Consequences
To quote Eric S. Raymond writing in his response to the Alexis de Tocqueville nonsense; Software is not composed of interchangeable parts that can be hodded from one project to another like a load of bricks. Context and interfaces are everything; unless it has been packaged into a library specifically intended to move, moving software between projects is more like an organ transplant, with utmost care needed to resect vessels and nerves.
I have distinctly mixed feelings regarding Mr Raymond; I admire much of what he's written, the way in which he writes it and the ability of the mind that does the writing. On the other hand, my politics and his are incompatible in the same way a three-phase 1kV supply is incompatible with the tiny socket in my watch in which the tiny battery fits. Plus I have this built-in aversion to homophobes... nevertheless, I must applaud the section I quoted above; he's also as relevant as all hell to my current preoccupation with Zope and content management.
If you don't know about Zope's acquisition, then think inheritance. The "branches" of your website can inherit all sorts of clever things from further up the "tree". Nice, but there are a number of gotchas that can trap you as you crawl your way up the steep and slippery Zope learning curve. For acquisition is close enough to inheritance to lead you astray.
Let's consider this very common newbie situation: In the root of my website, I create an Images folder. In there go all my standard images. Now, under the root, I also create me a LookAndFeel folder that overrides certain of the website's core bits and pieces to provide a different look and feel (the clue was in the name). In here, too, I create an Images folder. The idea I have, you see, is that I can override specific images in here to vary the look and feel where needed. Ah, but I have been led astray. The "local" Images folder overrides the other one completely, like a subclass method hiding a superclass one. But whereas in a programming language one might arrange for the subclass method to call the superclass, that doesn't happen in Zope, at least without a certain amount of Python scripting.
So I look at the various content management systems built on Zope, starting with the Zope CMF (wittily, this stands for Content Management Framework) and working my way up to the pleasingly named Plone (imagine if all future products had to be named by Stephen Fry. Wouldn't that be nice?) And they're all too much for me. To further extend Mr Raymond's simile above, I just want the heart, but it comes with this entire respiratory system wrapped around it. Each tool, though often well-conceived and well-designed, makes assumptions about the entire problem I'm considering and lifts it entirely out of my hands, muttering soothingly to trust it, and all will be well.
Anyway, it's an excuse for some creative Pythoning.