There seems to be an ongoing debate in the software world about features. You know, the “new toys” that come with software each time you get a new version. There was a time where you would always ask “what new features does it add?” when upgrading a software package. The end result of this practice was bloated software with more features than anyone could ever manage to use. A more modern practice is to “remove features” hoping to simplify software for the end user. Asa Dotzler’s recently said:
“I’d be pleased as punch if we could remove a couple features for the upcoming Firefox release. A feature is a flaming hoop we make our users jump through and if we’re doing our jobs — writing software that actually works for people — we’d be removing those hoops, not adding more.”
I’m going to respectfully disagree with Asa on this one. Partially on a technicality, and partially on theory.
First of all, I’d like to distinguish the difference between features and usability. Features can have a negative impact on usability, but there’s no written rule stating that must be the case. For example, web browsers added support for the PNG image format without negatively impacting the user experience (I’d bet most end users don’t even know about PNG, but it silently works). That is a clear feature. There’s really no UI to go along with it, so usability is not negatively impacted. No “hoops” to jump through as Asa put it.
On the other hand, you can have a “feature” like Microsoft Office’s Mail Merge. It’s messy, has an awkward UI, and doesn’t always behave as the user would expect. It’s often considered to be one of the worst features in the entire suite (besides Microsoft Access with is a UI disaster). I think that’s an example of the ugliness Asa hopes to rip out (though different product).
I disagree with the philosophy of removing features, instead I believe the best method is to revamp the user experience. For example, the “new window” ability in web browsers was a problem. Managing windows is a sore spot in many operating systems (in particular pre-Windows XP where it would appear as small specs rather than collapse into groups when many windows were open). Rather than limit the web browser to one window, a clever solution was to use “tabs”, effectively creating many windows within one. This alleviated the sore spot in most operating systems, and provided a more inclusive way of managing websites currently being visited.
About a month ago, I proposed we cut out the current bookmarking system and replace it with a more modern and usable Intelligent Bookmarking system. Such a system is actually adding many features (including machine logic), but would improve the user experience by getting rid of awkward menu’s and by intuitively letting the user auto-program (without any effort on the user’s part) the bookmarks system. It would essentially minimize (if not eliminate) the need to manage bookmarks. Is this adding or removing a feature? Would this be adding or removing hoops?
Innovation is about adding features within intuitive yet minimal UI. If you want a great example check out Mac OS X. It’s loaded with it. Lots of features to support everyone from kids and computer novices to expert hackers. It’s a great OS for that reason. It’s also one of the persistent problems with Windows and Linux. Both have some good features, but they are implemented in ways that are very hard for people who aren’t geeks to understand and use.
rsync is way ahead of it’s time. But try explaining rsync to someone who doesn’t use a computer to often. Even most wrappers I’ve seen to give
rsync a UI do a pretty pathetic job. They are complex, use technical language, are confusing and intimidate the user. Want to see why Apple’s .Mac does such a great job? Because it’s simple to use. It adds a feature (backup), but makes it easy to use (no hoops). Another great example is the PalmOS. It had two handicaps (no effective keyboard, and small screen), not to mention for the longest time PDA’s were mainly grayscale. But still it provided a robust usable experience with an easy to use UI.
Google has done a similar feat. Their homepage is still extremely plain, but you can do a surprising amount with their search box. They have kept a minimal UI, but allowed the user to do great things with it. They can add entire features without expanding on the UI. Google Maps added hurricane Katrina coverage with a single button. They added movies in a similar intuitive way. They didn’t create new services, vast menu’s, registration for these features. They integrated them tightly and made them easy to use. I don’t need to really learn anything new to use these add-ons. They just work.
Can mature products change? I see no reason why they can’t. Take a look at Netscape 6. It was a bloated immature product. Slow, very unintuitive and had menu’s that could confuse even pro’s. It took time, but it got separated from it’s sibling mail client, and both matured into much cleaner applications (Firefox and Thunderbird respectively). Are they done? I don’t believe so. They can still slim down their UI more. Bookmarking is in my opinion the ugliest part. The only reason it’s acceptable in it’s current state is because nobody has a really good system (yet). But there is still room to improve.
In conclusion, I see no reason to remove features, or even block features from becoming part of a product. I think the essential requirement is to get beyond the “ooh new toy” feeling and demand that the UI be minimal, and intuitive. Features are important. Could you imagine a web browser without FTP support? Needing to open another program to download a file. That wouldn’t be intuitive. But integrated into the browser and using the same download manager as HTTP downloads allows it to integrate so well most users forget what they are using. The same can be done for BitTorrent. We could add the functionality without causing a bad user experience. It’s essentially another protocol. The key is to not use a new or awkward UI, instead using the Download Manager perhaps just modifying to reflect the upload dynamic of the protocol. Other than that, it should should be completely transparent to the end user. They shouldn’t be able to distinguish what protocol they are using in any other way.
Features are good. They set Firefox apart from others, and attract users. What bothers users is features that don’t have a mature user interface. The solution should be to fix the interface, not drop the feature.