Why Does Software Spoil?

@Daniel Lehmann

Ubuntu?!?

Are you kidding?

Any Linux distribution that installs KDE or Gnome by default is by definition bloated. Then add in all the daemons for PnP and all that imitation-windows garbage…

Give me fvwm or give me death!

Most Windows apps, including Windows, expand to fill the available CPU, memory, HD space.

Windows OSes have done more to promote hardware upgrade cycles than we realize. Hardware manufacturers would be nowhere without Windows bloat.

orange

I’ve often been amazed how MS Office and the like force people to buy the latest and greatest versions. People have to upgrade because other people have upgraded and are sending them documents in the latest format which older versions can’t read. So everyone upgrades just to allow them to keep doing what they were doing before. I currently use OpenOffice but find it difficult to e-mail documents to clients because no one else uses it, and they refuse to install it - even though it’s free. So I have to export to MS Office format, which isn’t 100% perfect so the formatting gets messed up. Perhaps proprietary file formats should be outlawed.

Skizz

I think there are some similarities to companies too. Most companies have a certain lifetime.

In the beginning they do their thing really good (which is why they succeed, if they do), then they are expanding business and “taking on new opportunities” making their “code base” much more larger, complex and bloated. In the end you end up with these huge giants that seem to do everything and have a hand in everything. Some of them stays alive for longer, others don’t. None of them stays forever.

I guess the companies who make it longer are the ones with better structure. That doesn’t mean that they have more of it, rather less. It is the same with software. The more you let the different parts of the software live their own life, and by that I mean that they are separated from the rest of the software, the longer it seems to last. Firefox manages this by extensions, but other software like Windows Media Player and Paint Shop Pro tries to put everything under one roof. Doesn’t seem to work out, does it?

Users will never live inside one software only, back to the mantra Mike Minutillo mentioned: “You can’t be everything to everyone so be be something for someone.”

I have always weighed upgrades, and if they didn’t please me, I kept the old version. Simple as that, and no whining because I already had something that did what I wanted.

I liked Paint Shop Pro because it wasn’t the huge waste of resources that Photo Shop was (and still is). I despise the newer iterations, so I’ve been carting my copy of v4.12 to every new computer I’ve gotten for almost ten years. Whenever I load it up at work, somebody always says something like “Paint Shop Pro? Why are you using that? Don’t you know Photo Shop is installed on all of our machines?” And my response is “yes, but in the time it took you to say that, I’ve already loaded the image I need to work with, and if I weren’t explaining that to you, I’d already be done with the changes I need to make. By now, Photo Shop would be about 10% through loading all the filters nobody ever uses.”

However, sometimes slow software is good. If you need to take a break, get something to eat or drink, whatever, loading up a resource hog will do the trick. “Oh no, I’m not goofing off. I’m just waiting for Illustrator to load.”

How about Visual Studio 2005? Even the code you create with it can be spoiled at birth if you are not careful… i.e. DataAdapters that generate thousands of lines of codes that are very difficult to customize or extend.

With VS2005, the multitude of options that a developer is faced with when solving a problem is mind boggling… The IDE itself has become slow and buggy (in particular the BI version). Finally, people who complain about problems/bugs in VS2005 are told by MS itself on some of its forums that the fix is coming… in the form of VS2008. How about fixing VS2005 first? Also, if MS wants developers to produce less buggy code, IMO, they should slow down the pace of change for the tools they use. How about an IDE/Framework release every 5 years instead of every 2 to 3 years? How can one master a tool to use it properly if they keep changing the tool???

Note that each release of the Framework/IDE adds more spoilage to the package…

@Mike: The .NET framework is bloated, in the way that it adds way too much complexity – just think about all the different collection and list APIs. On a positive note, they are doing something to clean it up, so it is moving in the right direction (away from bloat/complexity).
You could also view LINQ as a way to reduce complexity by adding components of dynamic languages.

I also like the fact that the upcoming version 2 of the Ruby on Rails framework will be removing a lot of component (they will be plug-ins instead) and generally clean up and simplify the APIs.

Maybe you just have to remember to remove some of the old stuff as you add the new…

UltraEdit by IDM Software is the only example I can think of that I have been using for nearly 10 years without suffering from bloat. I used it exclusively for 6 years for all my ASP development at my last job because Visual Interdev was such a bloated beast (the tool I was supposed to use there).

UltraEdit has been able to continuously upgrade itself without becoming bloated or unusable. They seem to have got it right. I can’t imagine being a developer without it.

We ran into this conundrum while writing SpamAssassin – every new subsystem bloated the core. The solution, IMO, is plugins. De-bloat – move subsystems out of the core into optional plugins – and the problem is greatly ameliorated.

I think you described here why software should be free, open. Although the process is present in the open source world, it’s easy to “fork” and “patch”. The process of adding useless or just to much features is mostly driven by (weird) economics and marketing. The symbiose between hardware and software doesn’t exist anymore. On that point, I think only one type of software wins the cup: games.

What do you do then, when your company writes only one piece of software, and that software is as good as perfect?

Make it Blue and Call it Office 2007? ;o)

If it makes anyone feel any better, feature creep/bloat/spoilage/whatever you want to call it isn’t a development of the Internet age, much less the PC age - Fred Brooks described it in The Mythical Man-Month as the second-system effect ( http://en.wikipedia.org/wiki/Second-system_effect ) - after a first system that’s successful, architects/designers are less wont to be judicious with what gets left on the cutting room floor (hey, we know what we’re doing!), so their systems/applications become less driven to solve a particular problem set really well and more, well, either a candidate for The Daily WTF or in sore need of an armada of well-paid consultants to get it up and running because it’s so feature-y.

Hey Now Jeff,
After reading I remember the days I really enjoyed Winamp. I guess software is just like milk.
Coding Horror Fan,
Catto

Notepad doesn’t suffer from bloat :slight_smile:

OK, let me dig up a model on software evolution:

There are basically two phases:

-= The evolutionary phase =-

The software follows the path of what a customer base wants until it gets to the point where the customer is greatly satisfied. Once the software creature fits this environment, there’s no need to change anymore.

That’s the state open source software usually stays in until its environment changes. Commercial software behaves differently:

To stay successful (sell copies) past the point of fitness, you need to change the environment. From that point on, you’re in phase two:

-= The extinction phase =-

You get bigger, fatter, slower until some more efficient creature kills you (either directly or indirectly) and takes your place. Then the cycle starts again.

-= Appendix =-

Sometimes you happen to see a third phase creep in between, the metamorphosis. That’s where the creature - instead of trying to change the environment itself - rather changes to fit into another set of the same old environment (your favorite music player more and more changes to become CD burning software).

That can be counted as just another appearance of phase two. It usually still leads to extinction.

-= Disclaimer =-

Any similarities to actual events are just coincidence.

I’ve often pondered this myself - why does a ‘nice’, small, functional piece of software get bloated beyond what it did so beautifully when you first found it and started using it?

The answer I’d come up with is that a combination of the user base requesting little additions, which in turn get additions - and the developers want to add features - over time shift the seemingly simple, single focus into a do-everything-please-everyone-jack-of-all-trades monstrosity.

The thing I’ve noticed is that this is cyclical - when the software gets too ‘spoiled’ then the user base migrates to a ‘new’ piece of software that, because it’s ‘new’, hasn’t gone through countless rounds of additions yet.

Your point about this being a business decision to have feature bullet points is something I handn’t considered before and makes a lot of sense to sell new versions.

I think the move towards the web-based alternatives, for many of the reasons that Curtis Chambers points out (comment #4) is mostly because the web is the next logical development platform for ‘new’ applications - not necessarily because they need to be on the web - it’s just the best way to get a wide user base.

Therefore I think the cycle of ‘new’ applications will increasingly be web-based where possible.

p.s. This is my first post to CodingHorror, which I’ve been a avid reader of since I found out about it almost 6 months ago, and I’d just like to say that I look forward to every post you make, Jeff ;o)

I think that the spoiled feeling in software in the same feeling Robert Pirsig had regarding society in the 70’s when he wrote his famous book (Read it if you haven’t). Nothing is made with quality , everything tends to be stylized crap. I think we are doing the same thing to software and computer that we have done to society. We are spoiling software and computer hardware. Sure some people will resist and continue to use command lines (grep, awk, sed, etc…) and small/ useful software (Total Commander, vim) but the vast majority will follow the death procession and upgrade their pc every 2 years or when it’s unusable because of spyware. Like Metallica said it’s “Sad but True”.

mIRC comes to mind - massive feature list if you’re a script writer - and a huge amount of upgrade potential by loading scripts - but all conveniently hidden away from the every day user.

Most people just need to point, click, connect to some channels, and they’re done. Then never play around with the option menu again.

Personally I think the extension system is brilliant - it can be applied to nearly any software. I think of Photoshop here. The craziest piece of software to use because of the abundant features. During setup you should be able to add a whole lot of plugins that you would use or potentially use, and leave out the rest. If you’re missing something, do a quick search on what you need, add the plugin, and you’re ready to go.

Same principle can be applied to most software. This [should be] the way of the future.

Good post.

For me, besides PSP, the other software that spoiled over time to the point of non-usability was MusicMatch. I loved it up through version 7 (“loved” as in “paid for the pro version”). I upgraded to 10 (paid for it, too) and they had changed the UI in ways that were non-intuitive. Then Yahoo bought 'em and completely and totally ruined it forever. I will not look back. Of course, since my home workstation and server are Linux, I have great alternatives, but I still have to administer (and find decent music playing apps for) my wife’s and mother’s machines, so it is still an issue for me.

Per the comments on emacs and whether it’s bloatation has ended up in spoilage or the best software ever, I’ve always liked the old joke, “emacs is a great operating system, but it could use an editor.” (NOT trying to start a “which editor is better” war here! :slight_smile: