Tinker in Peace

A closed-source code base is a huge, ever-fading inertial mass. When it begins, with those first exhilarating lines, or even up through the first few releases, you can truly say that you are writing it. But after a while, it is more like you are tending it – or feeding it. It becomes an investment, an asset, a castle you are protecting, which means all your strategies are defensive and your dreams will not stray far from your spot of holy ground.

The bigger and more grandiose a code base becomes, the more time and effort it takes to nurture and sustain it, and even with all your love and effort, it still starts to look ragged after enough time – no matter what you do or how much you care. When the time comes for it to become something completely different, you can’t just re-form it like silly putty. The best you can hope is to tweak it around the edges and force it into some kind of tenuous interface with the tools of the next generation. Eventually, the details of maintaining that interface start to undermine the aura of technical relevance one needs to sell the software. So it was with MS-DOS, Novell NetWare, and Mac OS 9.