Jeff Atwood wrote on the spoilage of software and laments on how software seems to be doomed by the fact that people will pay for features but not bug fixes.

This is something I've thought long and hard about for the better part of a half hour over the last year or so. And every time I start up Paint.NET, I wonder, "how long, dear friend, how long?"

Here's what I would like to see more of, if you'll forgive a humble hillbilly ending statements on a preposition: Software where features are plug-ins, not reasons to upgrade. The basic application is nothing more than a shell. You want your word processor to be able to italicize text? Download the "Slanty Text" plug-in. You need to add shadow effects to your images, grab the Shadowizer plug-in. And so on and so forth.

One of the nice parts about this, assuming it can be pulled off, is that the core application needn't change often. Only when something fundamental needs fixing or adding. Or when you want to allow a whole new class of plug-ins.

This isn't to say you leave the app wide-open for third-party developers to mix and match any way they want. Yes, you allow for those types of plug-ins but for the "core" plug-ins, those are all you. You build them, you distribute them, you decide where they go in the application. Third-party plug-ins can be handled the same way these applications handle them now.

Another bonus could be in the economics. The core shell costs relatively little and each plug-in costs a couple o' bucks. And of course, you could create bundles for common plug-ins at some reduced price. This would allow people that "just want something that works" to go with a default configuration that costs something reasonable in total.

This mere theory and conjecture, mind you, despite the deep thought that went into it. It probably would work only for a certain class of operations, despite my previous example that implied Word could pull it off. And I'm sure there are a few logistical problems I haven't considered or thought through. For example, it's hard to take advantage of new UI paradigms when you are saddled with a shell you wrote five years ago (unless that is pluggable as well, I suppose).

Still, when I can type an entire blog post while waiting for an application to load up, one has to wonder...

Kyle the Patient