It’s really about another kind of code, but read on a bit…
This is an old dream: making the tax code shorter, simpler. From time to time, a politician of the populist persuasion comes out and promises to get things right. The ultimate expression for this drive towards simplicity is the Flat Tax movement: a single fixed (as opposed to today’s progressive, accelerating) tax rate for everyone. Google ‘‘flat tax” and you get more than 40 million hits. A popular fantasy. And not one just held by kooks, conspirationists and other End of Times prophets. Stanford University hosts the very serious right-wing Hoover Institution, a think tank that publishes scholarly papers such as this one. Or we have Steve Forbes, as in Forbes Magazine, proudly posing, postcard in hand, on the cover of his book: Flat Tax Revolution: Using a Postcard to Abolish the IRS.
Fun stuff, or sad, you pick your perspective. (Speaking of fun, this note’s title is a reference to a cult movie: Honey, I shrunk the kids!)
The basis for the agitation is a feeling of hopelessness. Year after year, we add articles to the tax code, to adapt to new circumstances, to new projects, to plug loopholes. As a result, the code grows and buggier.
This latter phrase, “the code grows fatter and buggier”, also applies to our high-tech spaghetti code: operating systems. Every new rev served with fresh bugs!
Software is… soft, malleable. Next to hardware, adding/changing features is comparatively easy, tempting. With features added upon features, bug fix patches over earlier generations of patches, the whole edifice soon starts to look like the accumulated layers of a Babylonian archeological dig.
Over time, the mess resulting from this “organic” growth gets worse and worse because OS developers are caught between the past and the future.
Looking forward, happily fueled by relentless technical progress, our industry constantly comes up with new hardware features and more modern software techniques. These improvements result in new ways application programs “talk” to the system. We use the acronym API (Application Programming Interfaces) for the way application software accesses OS resources.
Looking back, companies and individuals have huge investments of money and people in application software. OS improvements can’t come at the expense of backward — an ominous adjective — compatibility.
When making improvements, the system must add new APIs and keep the old ones around. Add but never subtract: he result is bloatware. More