Reply to "Things You Should Never Do, Part I

By Rob Landley

So I'm reading through Joel Spoklsky's old articles, currently on "Things You Should Never Do, Part I", and thinking about it in the context of Open Source. His thesis is that throwing out your old codebase and starting over is always a bad idea because A) years of debugging and adapting to strange real-world cases are buried in the old code, and recorded nowhere else, B) your corporation can't afford any delay if it's to stay ahead of competitors. His main example is Netscape's painful journey from 4.0 to 6.0.

This is mostly good advice, and the reason the Linux kernel developers tend to evolve old code into new code when they rewrite it via the "trail of breadcrumbs" approach. Joel's also right that lots of knowledge tends to get baked into code, and attempts to clean it up have to be careful to salvage that old knowledge. But "never do" doesn't quite hold true for open source for a number of reasons.

First of all, many other things doomed Netscape, the largest being their decision to stop giving their browser away for free, and instead start charging for it as a product. By the time Netscape reversed this disastrous decision, IE had a significant foothold (about 30% market share) and leveraged its windows bundling the rest of the way.

Secondly, open source works significantly differently than the propreitary environment Joel's describing. He warns that centralized organizations managing finite resources shouldn't take a course of action that comes naturally to open source development.

Open source and proprietary development are very different things. Fundamentally, proprietary development is centralized and open source is decentralized. Proprietary development is about work assigned to the developers who do it. Open source is a bunch of submissions into an editorial slush pile. Proprietary development is a manufacturing model, open source is a publishing model. Proprietary development is aimed at capturing the most value from each line of code written, and open source is designed around discarding most of the slush pile to fight off sturgeon's law. The basic assumptions are very different.

A few specifics: