Some weeks ago noted Open Source advocate Eric S. Raymond complained at length about his troubles in configuring a network printer using the well-known Common Unix Printing System (which is, by the way, used under the hood in Mac OS X). He also published a follow-up article with further comments. His main point seems to be that, now that the main technical problems in Unix/Linux have been solved, it’s time to build decent user interfaces on top of the existing solutions.

John “Daring Fireball” Gruber has now written an excellent critique of Raymond’s position, appropriately called Ronco Spray-On Usability:

…UI development is the hard part. And it?s not the last step, it?s the first step. In my estimation, the difference between:

– software that performs function X; and

-software that performs function X, with an intuitive well-designed user interface

isn?t just a little bit of extra work. It?s not even twice the work. It?s an entire order of magnitude more work. Developing software with a good UI requires both aptitude and a lot of hard work. Raymond acknowledges neither.

…the undeniable truth is this: successful open source software projects tend to be at the developer-level, not the end-user level. E.g., successful open source projects have programming interfaces, not user interfaces. Apache, Perl, Python, gcc, PHP, the various SQL databases. The list of fantastic open source developer software is long.

The list of fantastic open source GUI software is short. This is not a function of chance.

If you’re a serious developer on any platform, reading both sides of this argument is a must. Despite my agreement with Raymond in many of his writings, on this issue I side with Gruber. Good user interface design is an art, and must be done first.