Too old to rock and roll, too young to die
November 19th, 2007
Does software have a natural life? At some stage, does it become too difficult to maintain, and the kindest thing to do is to retire it gracefully and do a complete re-write?
I voiced this suggestion on an OpenOffice.org mailing list, and was immediately referred to this article by Joel Spolsky which states (about Netscape):
They did it by making the single worst strategic mistake that any software company can make: they decided to rewrite the code from scratch.
Joel’s article rambles a bit, but it’s a good polemic, and still worth a read. However, I think he’s fundamentally wrong.
Joel states that software isn’t a mechanical thing that can wear out. True, but like an old car, it can become prohibitively expensive to maintain because:
- no-one can remember how the damn thing works (remember Y2K?)
- you need to keep adding new bits to make it comply with the new requirements (those old oil lamps just aren’t legal any more)
- at some stage the supporting infrastructure is no longer available (tried to buy unleaded five-star petrol recently?)
As Joel freely admits, software grows as people patch it to meet changing requirements. Unfortunately there is no automatic process which monitors when a piece of code no longer serves a useful purpose, and gracefully removes it from the codebase. It just lies there, at best hindering maintenance through obfuscation, and at worst harbouring security vulnerabilities. There is a name for this: bloatware
It is also to be hoped that over the decades we have managed to make some progress in the profession of software engineering, in the methodologies, languages, and tools that we use. If it requires the same effort today to produce a piece of software that it did twenty years ago then there’s something sadly wrong.
The fact is that in the real world, user requirements frequently evolve at such a pace that it is more attractive to go out and build or buy a new system, rather than try and botch a legacy system do things it was never designed to do.
The same will be true for any piece of software we use today, whether it’s proprietary or open-source. In the case of OpenOffice.org, people need to be able to dream dreams about what office software could be, without being constrained within the dreary straitjacket of spreadsheet, word processor, and presentations. If those dreams produce a radically new vision, then the “Next Generation OpenOffice.org” may mean a complete rewrite.
With the move to storing documents in OpenDocument Format, OpenOffice.org has ensured users’ real investment (their files) is future-proofed. The trick will be to bring our over twenty years’ elapsed engineering experience to bear in the “Next Generation OpenOffice.org”. Not this year, maybe not next … but it will happen.
