In his article Ten Ways to Make More Humane Open Source Software, Jono DiCarlo picks his top 3 humane open-source applications. (Side note: When the Humanized guys say “humane”, they are talking about usability. They’ve got a blog post explaining why humane is a better word than usable). The first one on the list I expected, but the others came as a bit of a surprise:
This one was a no-brainer. It’s one of the most successful open-source applications ever, due in no small part to its excellent user interface. What impressed me the most when I first used Firefox was the simplicity of its preferences dialog.
I admit, I used to be an Emacs user. Powerful, sure. But good usability? Then again, just because something is difficult to learn doesn’t mean it’s not highly usable. In the article, Jono makes a good argument for calling Emacs humane.
I agree with Jono whole-heartedly on this one. The more time I spend writing Python code, the more I love it. I’m a firm believer in the Zen of Python:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
I was suprised to see Python included in this list though, because I’m not used to people talking about programming languages in terms of their usability. But I agree with Jono:
Programming languages are interfaces just as GUIs and command-lines are. Programming language are a way of giving instructions to a computer, just like a GUI or a command-line. Programming language design is user-interface design.
In the HCI class I took at Carleton last year, I actually wrote a paper that analyzed the pros and cons of static and dynamic typing from a usability perspective. Instead of the formalism vs. agility argument, I tackled it from a different point of view, asking “How can type systems make programming easier?”
The importance of the benevolent dictator
Jono’s post recommends a list of DOs and DON’Ts for producing humane open-source software. Number one on his list? Get a benevolent dicator:
- Get a Benevolent Dictator
Someone who has a vision for the UI. Someone who can and will say “no” to features that don’t fit the vision.