Why there is no POSIX standard for a Unix GUI

September 27, 2010

The other day I was reading A Tale of Two Standards, where Jeremy Allison mentions in passing:

Interestingly enough the SUS doesn't cover such things as the graphical user interface (GUI's) elements, as the history of Unix as primarily a server operating system meant that GUI's were never given the importance needed for Unix to become a desktop system.

I don't think that this is the real reason that there is no POSIX or equivalent standard for Unix graphical user interfaces. Because I am a jaundiced and cynical person, I think that the real reason GUIs were not standardized is that they could not be, because they were being viciously fought over by the vendors all through the period when Unix standards were being created.

POSIX is effectively a common core of Unix, ie what everyone could more or less agree on and was basically already doing. Where it wasn't that, it was in an area (such as regular expressions or threading) where no one was really doing anything and so there were going to be no active losers. Where POSIX required that vendors change, the change were generally small (and often could be contained off in a corner that didn't disturb the rest of the system).

This did not describe GUIs in the Unix standardization period, not in the least. There was no common core; indeed, for a long time there was not even an agreement on the underlying graphical system being X Windows. Standardizing a GUI would have meant either inventing one from scratch or picking one vendor's GUI to basically win; this would screw either all vendors or all but one vendor (or group in the case of Motif).

Compounding the problem was licensing. GUIs are big and complex, which means that they are expensive to develop, which means that everyone who had one wanted money to let other people use it (well, their code for it). This significantly increases the stakes involved in the standardization of one; if you win, you probably get to collect a bunch of licensing money, and if you lose, as a practical matter you probably have to pay a rival a bunch of money. Is it any wonder that no vendor was interested in losing?

(This is the political perspective. There was also a technical perspective, which I would characterize as saying that GUI standardization was vastly premature at the time because we didn't know enough to make a good, enduring GUI standard, in either appearance or API. It may even be premature now, given that all of the de facto standard GUIs today are still evolving and changing.)


Comments on this page:

Because I am a jaundiced and cynical person, I think that the real reason GUIs were not standardized is that they could not be, because they were being viciously fought over by the vendors all through the period when Unix standards were being created.

Was this meant to read jaded? Anyway, GUIs certainly could have been standardized, but UNIX isn't a graphical operating system, and the lack of standardization makes this very clear.

GUIs are big and complex, which means that they are expensive to develop, which means that everyone who had one wanted money to let other people use it (well, their code for it).

I can agree they're big, complex, and expensive, under UNIX. I've not read any such thing about Xerox PARC's GUI, but hey, they only invented the modern GUI while Ritchie and Thompson were still playing with teletypewriters, and it's hardly the fault of UNIX that it still can't do something people did half a century ago; that's just how UNIX is.

There was also a technical perspective, which I would characterize as saying that GUI standardization was vastly premature at the time because we didn't know enough to make a good, enduring GUI standard, in either appearance or API.

It's fair to say that a low-level GUI API is an oxymoron. It's easy when one lifts himself out of the tarpit of managing individual bits, and unreasonably difficult otherwise.

It may even be premature now, given that all of the de facto standard GUIs today are still evolving and changing.

Well, nearly fourteen years later, it's safe to say the situation is even worse. Now people seriously use possibly the worst possible system for designing a GUI: HTML, CSS, and JavaScript.

Written on 27 September 2010.
« Why Grub2 doesn't solve my Ubuntu kernel problem
A surprise about random IO versus unnecessary IO »

Page tools: View Source, View Normal.
Search:
Login: Password:

Last modified: Mon Sep 27 22:47:15 2010
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.