Open Source is unique in that much of it arises from a desire to scratch one’s own itches. Or at least the very best Open Source does. It’s written by the very people who will use it, and as a result, meets a real rather than perceived need. This lets it bypass any inane stupidity associated with Average Joe User.
Unfortunately, there is also a downside. A great deal of open source software is only developed to the point of being “Good Enough.” The program’s authors know exactly what they need to accomplish and do not extend the capabilities of the code much beyond their own front doors, which is a true shame.
I certainly understand their rationale. “Going the last mile” to a fully polished utility is a hell of a lot of work. In fact, the last mile may account for up to 60% of the man-hours (based on an unscientific survey of my work on LyX-Outline and Time Drive). It involves tracking down bugs, optimizing/refactoring code, and extensive testing. Underestimating challenges associated with the “last mile” have lead to delays in my projects, and I’ve heard the same thing from other developers.
What this often means is that the testing, polishing, and the other fine-tuning needed for superb software doesn’t happen. Even worse, many of the minor annoyances and inconsistencies never get addressed and are subsequently passed downstream to other projects and users.
Of course, what is a minor annoyance to upstream becomes a major headache to those downstream. After all, such projects (like Linux distributions) not only have to deal with the “minor” problems of one upstream source, but of thousands. Moreover, the annoyances build upon one another until they become paralyzing and impede forward progress.
The Ubuntu project has a term for these annoyances/inconsistencies that I quite like. It refers to them as “paper cuts”. In the real world, a paper cut is a trivial wound that hurts far more than it should. Ditto for the software equivalent. In the big picture, the problem shouldn’t be a big deal; but it is, and whenever you run into it, it stings.
Here’s Ubuntu’s formal definition:
A paper cut is a trivially fixable bug. They may be an unintended problem occurring within an existing piece of software, the presence of which makes a computer more difficult or less pleasant to use, that is easy to fix [and really shouldn’t be there].
As you can probably tell, I think that resolving these annoyances is important.
To users, Paper Cuts influence their perception of the platform, and may be responsible for driving people away from Linux; and overcoming a first impression is ludicrously difficult. If someone has had a poor experience with Linux (or Open Source) in the past, it is not only likely to influence their own future choices, but also what recommendations they make to friends and colleagues. Put another way, the effect of poor impressions (such as those created by paper cuts) isn’t linear, it’s exponential, and far out of proportion to their overall severity. For this reason, the resolution of paper cuts might be the most important contribution that Ubuntu has made to the world of Open Source.
Now, before someone takes me task, let me explain. I’m not talking about the actual bug fixes themselves – even together, the fixes are trivial. I’m talking about the culture that has begun to permeate the Ubuntu project. You’ve probably run into evidence of it. It’s the culture that prompted to Mark Shuttleworth to get on stage at OSCON 2008 and encourage developers to out-prettify Apple within two years; the culture that values a highly polished product and says that we should refine existing functionality before piling on new features; and the culture that has caused Linux to hit its stride as an operating system.
And it’s a spectacularly Good Thing. Due to the culture shifts that Ubuntu (and related projects) have caused, there is finally some impetus for up-stream developers (like me) to polish our releases and create superb software. With impetus comes incentive, and incentive has the ability to actually change behavior.
(Which reminds me, I should probably get back to work on LyX-Outline.)