Since
interviewing
the creator of
Ruby on Rails,
David
Heinemeier Hansson, I've been thinking a
little more about what he calls "opinionated software."
That handy little phrase seems to sum up what attracts me to a lot of
technology, at all levels.
What I like
Free software--it's not really economics that drew me to free
software, but the principles and aims. When you release or use free
software, you're exercising your right to free speech and adding your
voice to an argument.
Desktop environments--
GNOME 2.0:
The move from GNOME 1.0 to version 2.0 was highly opinionated (Mac
users, think OS 9 to OS X). Complexity of user interface was thrown
out in favour of sensible defaults.
Web standards--CSS, RDF, XHTML: not only
is there a right way to do
things, but it turns out to be
better too! I don't automatically
fall in love with everything that emerges from the W3C, but some
things are so obviously the right way it's impossible not to love
them--warts and all.
Muine music player--this player throws
out the paraphernalia of iTunes clones and gets you close to the
music. Queue, play. What I want to do.
Epiphany web browser--a
simple text bar does for bookmark lookup, search and URLs. The
bookmarks work like del.icio.us tags. Despite the lure of Firefox
extensions, simplicity and efficiency keeps me with Epiphany.
Make friends and enemies
The thing about opinions is that people are inclined to disagree with
them. Opinions won't please everybody and, being opinionated, you will
never carry everybody with you.
But opinions give you something with which to scythe through
indifference. In both my writing and software development work taking
a particular stance enables me to create interest, and gives direction
to my projects. I tend to get bored easily, and if I'm bored, then my
readers and users will never make it.
Being opinionated in software development is easier when there's a
strong leader, or it's a one-person project. It's more of a dilemma if
you're running a free software project with multiple contributors.
Such projects need such contributions, but run a risk of losing focus
and style. I think that there we need to be brave again. If being
opinionated means losing potential users, it also means losing
potential contributors.
Opinions help in dealing with users, too. It's obvious that the mere
act of listening to users isn't good enough. They often won't say
what they mean, or their requests mask a deeper issue. How often have
you given your boss exactly what he asked for, to find it wasn't what
he wanted? A combination of reading-between-the-lines and having
opinions helps cut a way through the noise of user feedback.
Stirring the pot
Here are a few wishes for some free software projects that I want to
see succeed further, but which really need to get opinionated to be
effective. These projects aren't failing, but they're not reaching
the potential I know is there.
Each of them are infrastructural in some way, and that's probably
where the temptation to avoid being opinionated is strongest. But
here's the genius: the rewards of being opinionated here are high.
Ruby on Rails is the existence proof.
- Beagle, live search technology for
GNOME. Needs to decide where its primary use will be, and get on
and hit the 1.0 point for that use only. Choose one or two neat
applications for integration, and be so utterly cool that every
other app author flocks to integrate too.
- Synchronization. First MultiSync, then
OpenSync, have rumbled on for ages,
without ever being truly effective for any particular device. My
take: choose a few "must-have" target devices--say, iPods and Nokia
phones--and make them work completely. Nearly-but-not-quite pleases
nobody.
- Mono. Mono's great, but where's the
story? There's loads of potential in the people and the ideas
behind the project, but playing catchup with Microsoft isn't very
inspiring. Early projects like Muine helped Mono's cachet here, but
we need more. My personal favourite option would have been a
completely free alternative to ASP.NET for web applications. (I've
seen a project called
MonoRail, but
don't know if it's the one...)
What's better? A handful of users with the "right" idea about how
fundamentally important you are to everything, or loads of users who
only see a portion of the capabilities of a project?
Copy the experts
It may seem like cheating to copy Apple's lead, but a lot of what
they've done in OS X is to take a stand on what's useful and not. On
many occasions this has inconvenienced people, but it's not eroded
that special lure that Apple products hold. There's not harm in
asking "What have Apple done?" with some of our projects.
Another poster-child for being opinionated is
Ubuntu
Linux. Technically, it's only marginally
better than other Linux distributions. Strategically, it's miles
ahead. Its founder, Mark Shuttleworth, had very solid opinions about
where Ubuntu should go, and pursued them. Over time, these have
pervaded the product itself, but at the start it was the message and
the style that made the difference.
Opinions not expressed are rarely effective.