Edd Dumbill: Opinions and opinionated software
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...)


