Monday, May 16, 2005

Interfaces Again

Early in my career, I wrote a book on Macintosh programming. Having worked on LISP workstations, I had used, and coded, graphical user interface programs, on one of the earliest systems to put a lot of effort into providing the tools to create a visual user interface. I was drawn to the Mac by the fact that a $3,000 computer could do what a $100,000 workstation did, and provide a much nicer look and feel. It was the first instance where I had seen, in depth, the benefits of balancing the effort that went into a GUI toward providing a pleasing user experience. The Mac was also a marvel of design compromise and implementation expediency – if it hadn’t been, it would have cost like a LISP workstation. Few now remember that the Mac was Apple’s second try. The Lisa, uglier and costlier, came first.

“A ‘pleasing’ user experience? And compared to what?” At the time, those were novel questions. The desktop metaphor design pattern and underlying architecture of multiple graphical contexts were solidly in place by then, but Steve Jobs was the first to get it right. The Mac had an interface that was up to standards that could be analogized to professional print layout design, while retaining all the structure of the desktop metaphor and windowing graphics system.

Since that time, the desktop metaphor got deconstructed into something more like the rock and roll magazine metaphor, as Web hypertext interfaces became the dominant area of interface design activity (desktop productivity having been pretty much done to death). Meanwhile, Sun tried to turn Java into a multi-platform GUI system, and, as if to illustrate the difficulty, is only now getting to a satisfactory result with the latest version of Swing, which still has no substantial library of applications.

Today, we are replaying this phase of user interface evolution in miniature. The memory and processor resources of mass-market mobile phones are about the same as the early Mac systems. A cut-down version of Java has evolved, in its MIDP 2.0 form, a usable user interface system for the small-screen medium – something short of a windowing GUI system, but good enough if one takes a more free-form approach to UI presentation.

The commercial and design contexts of mobile user interface creation are very different from the coherent drive to a desktop metaphor productivity suite that propelled early desktop GUI efforts. Mobile handsets have terrible user interfaces. Many mass-market phones don’t even try to have a good UI. Nokia’s Series 60 and Symbian UIQ are in danger of becoming obsolete before they fully evolve, having developed on too-limited platforms, and lacking a modern garbage-collecting implementation language. Windows Mobile is a very credible effort, with a long life ahead of it, but it suffers from Microsoft’s failure to develop momentum for Windows Mobile and of the curious and persistent incompleteness of the .NET Compact Framework to encapsulate all the platform APIs and become the unequivocal choice for UI implementation on the Windows CE platform. BREW, like Symbian-platform UIs, is stuck with C++ and an API that is inferior to the mobile version of Java, but BREW, at least, has been explicitly targeted at providing a customized user experience in Qualcomm’s new UIOne initiative.

Any serious effort to create a widely used GUI on mobile handsets has to encompass Java, BREW, and Symbian, and it has to provide a road map to cover Windows Mobile, Palm, RIM, and Linux-based 3G and VoIP handsets. It has to be designed in the context of present realities in handset hardware content, likely new applications like mobile video, and one-handed operation where the thumb – the least dexterous digit – is made to do all the work.

The Web has influenced UI design again. This time it isn’t by deconstructing the UI into an interactive hypertext Web, but by being the place where user interface has evolved toward search being the starting point of interaction.

So this is the environment into which my current effort at creating an ambitious non-game mobile application is launched. Compared with desktop GUI applications, the evolutionary stage of mobile platforms makes things more challenging: more variation in the platform. More technologies to understand. A necessarily multi-platform implementation. Fewer design rules, and certainly no Steve Jobs and his salutary UI fascism, but in a world with a lot more interactive design sophistication.

Success requires remembering this evolutionary context and using the analogies it provides to navigate the new challenges. Those new challenges, and the solutions, will write a new chapter in UI design.