Lightweight vs Heavyweight
Nik Silver has a thought-provoking piece on Heavyweight vs Lightweight content management. As the (former) architect of what you might call a middleweight CMS, I find his argument almost totally wrong. As far as I can tell, it amounts to a false syllogism that goes like this:
- WordPress is a lightweight CMS
- The Guardian use a heavyweight CMS
- WordPress cannot do everything needed for the the Guardian website
- Therefore, a heavyweight CMS is better than a lightweight CMS
I think the argument he’s trying to make is that a well-designed system with a judicious amount of abstraction is better than one without the abstraction. But I don’t follow his argument that any changes to WordPress would necessarily result in unmaintainable code. In fact, there are numerous newspapers who use WordPress, and several very high traffic sites that use it too. His argument is basically a retread of the tired old-skool IT dirge “but this isn’t enterprise software”. I find this surprising given that Nik is an eloquent advocate of agile methodologies and should, in theory, be sceptical of the idea that software needs to be big to be effective.
He says:
Lightweight is often good, but it must have its tradeoffs, otherwise other technologies wouldn’t exist.
Really? He seems dangerously close to the ‘one true language’ trap here – an El Dorado of a language that would be perfect for every job and everyone would agree on. This is absurd. Heavyweight software will continue to exist for a long time in my view, mainly because of the vested interests of the corporations that sell it. And not all heavyweight software is bad of course.
Every single decision you make when designing a software system is about compromise – manageability vs performance, explicitness vs extensibility, productivity vs complexity and so on. Every system you ever use has tradeoffs: not every system needs to be extensible, and not every system needs to be optimised to the limit. I prefer the Pragmatic Programmers’ advice: “do the simplest thing that could possibly work.”
To suggest that WordPress is, out of the box, a viable alternative to an existing bespoke system is faintly silly. Is WordPress the cleanest abstraction possible for a CMS? No – it’s targeted pretty much exclusively at blogging. But to suggest that there’s something difficult about getting ads into a page is a bit weird – check out TechCrunch if you don’t believe me.
Lightweight languages and frameworks (for example, Ruby or Python) are all the rage because they make developers very productive. There are downsides, performance being the most often raised one. Many of these downsides are FUD though. Everything I see at the moment leads me to think that the days of Java and C# are numbered as the ‘enterprise way’. The productivity you can get out of things like Ruby on Rails is so great that people are going to be forced to re-evaluate the ‘heavyweight’ options. The (perceived) performance problems of scripting languages are sure to go away. Remember the days when people hand-wrote assembler because they didn’t trust the C compiler to optimise their code properly?
In 2007 I failed to learn a new programming language, although I dabbled with Objective-C and Cocoa. 2008 will be the year of Python (with a smattering of PHP) for me. There are many places to read more about extending your language knowledge, but I recommend Martin Fowler’s One Language and Improvement Ravine.
Comments
3 Responses to “Lightweight vs Heavyweight”
Leave a Reply

If my article came across as saying heavyweight is better than lightweight, then I failed to communicate what I wanted. I had hoped that at no point I said anything as crude as “A is better than B”, for life isn’t as simple as that. Instead, the article was an attempt to clarify “what lightweight really means, both in terms of benefits and drawbacks”.
The scenarios I walked through should have helped show situations where lightweight systems were not appropriate, not that they never are appropriate. For example, I agree with you that getting ads into a WordPress is perfectly reasonable; indeed I said this: “a lightweight CMS such as WordPress could probably do any one of these things [such as contextual ad inclusion]“. My point there was that anyone would be mistaken if they thought WordPress could be evolved to become the CMS that Guardian Unlimited required, with all the features I listed (and many more I didn’t).
The message of the piece should have been “it’s horses for courses” (not very earth-shattering), and to give a guide as to which courses might be appropriate for the various horses.
By the way, I thought you were very thought-provoking when you contrasted lightweight systems with “enterprise” software. I didn’t use the word “enterprise”, and it made me ask myself the question: What does it mean to be an enterprise system? Does it mean the opposite of lightweight? I’m not sure it does. It’s perfectly possible for a lightweight system to be fit for the enterprise, and I know a number of companies, including my own, which run them and for which they are just the right thing doing just the right job.
I’m going to have to continue to disagree. The scenarios you’ve highlighted are ones where (a) there is a bespoke ‘heavyweight’ system that is fit for purpose and (b) there is a ‘lightweight’ system that is not fit for purpose. These two facts do not inform a discussion about whether lightweight systems are *inherently* worse in some situations that heavyweight ones. I’ll bet there are lightweight CMS systems that could do a good job on the Guardian website. (Incidentally, I wonder how you’re getting on with Movable Type on Comment is Free.)
I expanded the discussion to include heavyweight vs lightweight languages because I didn’t think you were comparing apples to apples – languages are clearly trying to solve exactly the same problem but do so in different ways. WordPress is, despite its claims to be a CMS, a blogging platform and not much more. It’s very good at being a blogging platform.
I spent 5 years writing and maintaining a CMS/Community Platform – on which we built quite a number of blogs. But if *all* you are doing is a blog, I’d still recommend using WordPress (as I do myself). The comparison you should be doing is between a full-featured but lightweight CMS and your bespoke one. That might be instructive.
[...] has some interesting thoughts on WordPress itself, incidentally. My own feeling (which won’t come as any surprise) is that I’ve been able [...]