From Babel to NAMCUB -- a history of UIs ending in our vision of the future
User interfaces are a form of graphical communication, so to understand the problems in UI design and their possible solutions, we should start with the first systems of writing.
The first system of writing was Sumerian. Sumerian was an ideographic system (pictures standing for ideas, much like icons), and was written on clay tablets. Once baked, the tablets were more or less immutable, which is why the only practical limit to the info we can dig up on the Sumerians is how long we keep digging.
A sumerian tablet
Later on, ideograms progressively gave way to phonemic orthography (symbols representing sounds). This allowed for more variety, but required more abstraction.
The history of computer user interfaces progressed from this relatively static world (the printing press simply widened literacy and made text more generally readable -- it did not change the actual concept of text). Although there were attempts to do more interesting and innovative things with text before the computer age (ex. the creative printing styles of Dada), many if not most of the creative orthographies of today come from the computer age.
Inheriting from the book and the page, the original UIs for computers were textual (discluding the invariably terse and obfuscated world of bit-twiddling, much of which was simply a debugging aid). Around this time (the 1960s), Ted Nelson, et al. started Project Xanadu, which gave birth to the ideas of hypertext and transparent versioning, among others. Project Xanadu was founded with the intention to improve on the book and on writing systems -- to use the computer to make something better than paper, rather than emulating paper.
Unfortunately, Xanadu's time came too late. By the time that anyone had really heard of them, computers had already progressed from the command line phase into a primarily graphical phase, wherein the GUIs were a simulation of multiple pieces of paper on a desk. A "window" in the classic WIMP mentality is a piece of paper, perhaps rolled up on either end (hence the term "scroll bar"), or perhaps having pictures on it. It resembles more a minimally interactive piece of paper in many cases than what Nelson had hoped for.
The world wide web, which was born from Project Xanadu's concept of hypertext (and which Nelson insists is a bastardization of the concept), did little more than automate footnotes, and as it evolved, it typically remained far more static and paper-like than it could have (or should have) been. In retaliation, Project Xanadu implemented a few version of Nelson's old idea of the zzStructure, which simply removed one limiting aspect of paper media: finite dimensionality.
The zzStructure is essentially a simple data structure, allowing storing some data, and having an arbitrary number of global links to other structures (think of it as a node with n pointers elsewhere and a bit of space for its own data). The user interface was also quite simple, initially. This is my own variant of the ZigZag UI (I term it the Z2):
The Z2 UI, which uses the zzStructure as a backend, and is similar to Project Xanadu's original ZigZag UI
The idea of "Web 2.0", which has caused endless controversy due to hype and terminology butchering, was initially termed as an attempt to make the web less static. One would think that perhaps this would initiate progress towards a more Xanadu-like web (as the web, web 2.0, and the semantic web were all arguably inspired by the Xanadu designs). However, Nelson has argued (and I myself agree) that the web and its standards are too stale and crufty to make an especially decent Xanadu system. While Nelson and his Xanadu team have actually attempted to ride the wave and integrate the Xanadu ideas atop the web, this is where his ideas and mine diverge.
Web 2.0 is not the future: it is a simulacrum of the future through the rear view mirror (to borrow a term from McLuhan). Which is to say that Web 2.0 is a view of what the web should have been all along, and a view of what will replace it, as seen through the dirty rose goggles of the web of the past. We cannot simply cram all this new functionality into the old, cruddy, poorly designed, poorly implemented, non-standards-compliant web infrastructure, and anyone who has ever done web design should know why. The Acid2 test (which tests web browsers for standards compliance) has, until recently, not been passed by any major browsers. Every browser views the same page a little differently, and so a web designer must write more or less completely different code for each browser. Is this what we want the future to be?
Not only that, but look at our desktop user interfaces! Most people use windows, mac OS, or some variation thereof. The windows UI has not changed significantly since 3.1, from a functionality point of view -- the 3.x series was simply a poor replica of the original mac interface, which in of itself was a poor replica of Xerox's initial UI design, itself only a slight improvement over Doug Englebart's original wooden mouse and non-overlapping windows. The UI for Windows Vista is essentially a skin on top of the normal windows UI to make it look vaguely like Mac OS X, and Mac OS X uses a UI whose very code was taken mostly from NeXTSTeP, and written more than 10 years ago! Most of the "new features" added to OSX and Vista are essentially shoddy implementations of simple features that various desktop environments and window managers on UNIX have had for years (multiple/virtual desktops hails from the hey-day of CDE, at the latest). Even so, UNIX GUIs are now progressively becoming more like windows and mac, and innovating progressively less.
So, okay. NeXT had a neat UI for its time. Enlightenment 1.6 (e16) had something decently original. Practically everything else consists of copying ideas that have been around since the 1970s. About the most original UI I've seen as an integrative desktop barring the Xanadu team's demos is Ion3, which in of itself is mainly original because of its minimalism and keyboard orientation.
What do I see in our future?
Well, here are some of the designs I've worked on over the years:
An early mockup of a XU88-like UI
A mockup of an experimental UI using a zzStructure-like backend with XU88-like elements (the 'Zig' or the 'Galaxy menu')
A later refinement of the early mockup, adding some ideas from the 'Zig'
All of these UIs are elements in what I see in the future -- a larger system with organically growing, infinitely customizable UIs. Our so-called 'Project NAMCUB' uses these elements (as well as something resembling the Z2) in combination with other elements more reminiscent of The Croquet Project and Project Xanadu's new demo UI. The backend, a distributed predicate logic system with distributed storage and processing, is already complete, and the UI is built flexibly on top.
What do you want the future to be? Should it be static? Stagnant? A cess-pool of rotting software and protocols and interfaces that should have been chucked out ten or fifteen years ago? Or should it be new, innovative, fluid, and flexible enough for its very essence to be modified on the fly in new and diverse ways with nary a line or two of code?
I pick the second. And to quote Alan Kay, "The best way to predict the future is to invent it".
The first system of writing was Sumerian. Sumerian was an ideographic system (pictures standing for ideas, much like icons), and was written on clay tablets. Once baked, the tablets were more or less immutable, which is why the only practical limit to the info we can dig up on the Sumerians is how long we keep digging.
A sumerian tablet
Later on, ideograms progressively gave way to phonemic orthography (symbols representing sounds). This allowed for more variety, but required more abstraction.
The history of computer user interfaces progressed from this relatively static world (the printing press simply widened literacy and made text more generally readable -- it did not change the actual concept of text). Although there were attempts to do more interesting and innovative things with text before the computer age (ex. the creative printing styles of Dada), many if not most of the creative orthographies of today come from the computer age.
Inheriting from the book and the page, the original UIs for computers were textual (discluding the invariably terse and obfuscated world of bit-twiddling, much of which was simply a debugging aid). Around this time (the 1960s), Ted Nelson, et al. started Project Xanadu, which gave birth to the ideas of hypertext and transparent versioning, among others. Project Xanadu was founded with the intention to improve on the book and on writing systems -- to use the computer to make something better than paper, rather than emulating paper.
Unfortunately, Xanadu's time came too late. By the time that anyone had really heard of them, computers had already progressed from the command line phase into a primarily graphical phase, wherein the GUIs were a simulation of multiple pieces of paper on a desk. A "window" in the classic WIMP mentality is a piece of paper, perhaps rolled up on either end (hence the term "scroll bar"), or perhaps having pictures on it. It resembles more a minimally interactive piece of paper in many cases than what Nelson had hoped for.
The world wide web, which was born from Project Xanadu's concept of hypertext (and which Nelson insists is a bastardization of the concept), did little more than automate footnotes, and as it evolved, it typically remained far more static and paper-like than it could have (or should have) been. In retaliation, Project Xanadu implemented a few version of Nelson's old idea of the zzStructure, which simply removed one limiting aspect of paper media: finite dimensionality.
The zzStructure is essentially a simple data structure, allowing storing some data, and having an arbitrary number of global links to other structures (think of it as a node with n pointers elsewhere and a bit of space for its own data). The user interface was also quite simple, initially. This is my own variant of the ZigZag UI (I term it the Z2):
The Z2 UI, which uses the zzStructure as a backend, and is similar to Project Xanadu's original ZigZag UI
The idea of "Web 2.0", which has caused endless controversy due to hype and terminology butchering, was initially termed as an attempt to make the web less static. One would think that perhaps this would initiate progress towards a more Xanadu-like web (as the web, web 2.0, and the semantic web were all arguably inspired by the Xanadu designs). However, Nelson has argued (and I myself agree) that the web and its standards are too stale and crufty to make an especially decent Xanadu system. While Nelson and his Xanadu team have actually attempted to ride the wave and integrate the Xanadu ideas atop the web, this is where his ideas and mine diverge.
Web 2.0 is not the future: it is a simulacrum of the future through the rear view mirror (to borrow a term from McLuhan). Which is to say that Web 2.0 is a view of what the web should have been all along, and a view of what will replace it, as seen through the dirty rose goggles of the web of the past. We cannot simply cram all this new functionality into the old, cruddy, poorly designed, poorly implemented, non-standards-compliant web infrastructure, and anyone who has ever done web design should know why. The Acid2 test (which tests web browsers for standards compliance) has, until recently, not been passed by any major browsers. Every browser views the same page a little differently, and so a web designer must write more or less completely different code for each browser. Is this what we want the future to be?
Not only that, but look at our desktop user interfaces! Most people use windows, mac OS, or some variation thereof. The windows UI has not changed significantly since 3.1, from a functionality point of view -- the 3.x series was simply a poor replica of the original mac interface, which in of itself was a poor replica of Xerox's initial UI design, itself only a slight improvement over Doug Englebart's original wooden mouse and non-overlapping windows. The UI for Windows Vista is essentially a skin on top of the normal windows UI to make it look vaguely like Mac OS X, and Mac OS X uses a UI whose very code was taken mostly from NeXTSTeP, and written more than 10 years ago! Most of the "new features" added to OSX and Vista are essentially shoddy implementations of simple features that various desktop environments and window managers on UNIX have had for years (multiple/virtual desktops hails from the hey-day of CDE, at the latest). Even so, UNIX GUIs are now progressively becoming more like windows and mac, and innovating progressively less.
So, okay. NeXT had a neat UI for its time. Enlightenment 1.6 (e16) had something decently original. Practically everything else consists of copying ideas that have been around since the 1970s. About the most original UI I've seen as an integrative desktop barring the Xanadu team's demos is Ion3, which in of itself is mainly original because of its minimalism and keyboard orientation.
What do I see in our future?
Well, here are some of the designs I've worked on over the years:
An early mockup of a XU88-like UI
A mockup of an experimental UI using a zzStructure-like backend with XU88-like elements (the 'Zig' or the 'Galaxy menu')
A later refinement of the early mockup, adding some ideas from the 'Zig'
All of these UIs are elements in what I see in the future -- a larger system with organically growing, infinitely customizable UIs. Our so-called 'Project NAMCUB' uses these elements (as well as something resembling the Z2) in combination with other elements more reminiscent of The Croquet Project and Project Xanadu's new demo UI. The backend, a distributed predicate logic system with distributed storage and processing, is already complete, and the UI is built flexibly on top.
What do you want the future to be? Should it be static? Stagnant? A cess-pool of rotting software and protocols and interfaces that should have been chucked out ten or fifteen years ago? Or should it be new, innovative, fluid, and flexible enough for its very essence to be modified on the fly in new and diverse ways with nary a line or two of code?
I pick the second. And to quote Alan Kay, "The best way to predict the future is to invent it".
Labels: croquet, project namcub, udanax, UI, web 2.0, web 3.0, xanadu