Here's a quickie reply to Jeff Atwood's blog posts on the decay of software:
Why does software spoil?
Are Features the Enemy?
Of course, what he's talking about in these last two posts is basically endemic to the way in which packaged software is sold. It's not the very nature of software, packaged software is sold as a physical good, but it's not.
All of this feature bloat is an attempt to justify future sales, but sometimes problems arise from below as well. For all the "stableness" of packaged product it's all running on shaky ground. Hardware and software are evolving so quickly that even stable software will die. But that's the fundamental problem!
Building and then packaging software is analogous to building a house on top of a sand-dune and then selling the house. When the house inevitably crumbles we run out and sell a new house. Of course, the crumbling may have nothing to do with the quality of the house itself, it's just that you built it on a fricken sand dune!
This is why we need to move to subscription-based software services. I can't buy software for $100 today and simply expect it to function correctly on my new computer 10 years from now. Software isn't like a shovel or a bed or a fridge. Software is organic, it grows, it evolves, it lives within an eco-system of other related software.
For software to grow correctly, we need to move to a subscription model so that we can afford to keep programmers as tenders of the garden as well as tillers of the new land. Right now, we're not tending our gardens. The packaged software guys are being constantly forced to till new soil with no one left behind to tend gardens. But again, this is because we're pretending that selling software is like selling a shovel.
Good software doesn't need to spoil, instead it needs to be sold in a way that will allow it grow and to be tended. Maybe I'm just a dreamer, but imagine a world where Quicken charged an annual software fee? Then instead of "sun-setting" features, they'd just extract cash for keeping their software up to date and ensuring that it satisfies current/future customer needs.
It'd probably be a better software world, it's just a long ways off.