The main challenge comes from the fact that most software developers are too knowledgeable to really create easy to use system. As a result, new features are created daily for open source tools but little attention is being paid to making the overall tools easy to use. The challenge is that simple interfaces are hard to design and largely present a challenge that is woefully underappreciated. A good interface is one that is so in tune with user expectations that it becomes essentially invisible.
As a result, the balance in product development always happens between fewer features with an easier to use interface vs. large feature set with increased complexity. Weblog tools seem to manage a careful balance between the two but are unfortunately tied to a particular model, based on entries and list of entries. More complex sites, with different sections and other functionality do not fall well within that mold.
Let me go through an example to get a better idea of what I mean. The site that I am trying to create is for an organization. Most of the people in that organization are people with little to moderate computing experience. They know how to use a browser, they know how to type text into a form. That’s basically the level of knowledge that the system has to meet. However, the system should allow for a number of extra functionality such as the ability to create a set of navigations for a site, the ability to create new pages within that site, and some basic workflow components to divide between contributors (who may create content), editors (who authorize that content to be published and can create/edit/delete sections), and administrators (who will take care of adding new features, creating, editing and deleting users, and look and feel). There needs to be functionality to also allow members of the reading community to do some commenting on stories posted, and for editors to create polls.
So far, it seems like an easy thing to build. However, when one scratches the surface, complexity sets in. How does one get notified that content needs to be updated? How does a story make it to the site? How does the site look and feel change? Using tools like Slash or PHPnuke seemed like a good idea initially but they lock a site into a particular look and feel that can only be changed with a lot of hand-wringing development. Furthermore, the complexity of organization is something that the user community could not wrap their minds around.
As a result, I’ve discovered that simplicity was much more complex. What we, as programmers, expect a user to do is very different from how users expect a system to react. From there, a big disconnect arises. We know that there is only so much you can stuff on a screen. In terms of interface design, the best systems are generally systems that appear to provide less options to the user. For example, the success of web browser arise from the fact that their interface is relatively simple: an entry field (where you type the URL), some basic navigation (go forward, go back, reload, stop, and home) and a content window. By comparison, Microsoft Word has no less than 23 choices on its “standard” menu. I would hazard a guess that most people do not use most of the functions on this menu and that they therefore should be hidden.
In Don’t Make Me Think, Steve Krug points out that proper web design should ensure that users don’t have to think about where to look in order to find the information they need. This is a pretty major step in development that shows that users should be able to intuitively use a system. However, designing such a system is a very complicated endeavor.
Over a year ago, Matthew Thomas pointed out some of the usability issues presented to the open source community. A cursory look at open source applications since then has shown little progress on the simplicity front. As a result, I have started a Yahoo Group entitled Usability Bazaar (with apologies to Eric Raymond for stealing his line.) Please feel free to join in. Together, we might be able to start focusing on those issues and developing open source software that people other than us geeks will use.