If you were to ask people of a technically inclined nature who ‘invented’ the window, or where it first appeared, I’m sure you would get a lot of answers along the lines of Xerox PARC or Apple, and some might even be educated enough to come up with Douglas Engelbart, inventor of the mouse, and one of the driving forces behind the Online System (NLS). I will get to Englebart later, but I want to focus on someone else first.
Sketchpad and the NLS
His name and his pioneering work have been mentioned a couple of times before during this series: Ivan Sutherland’s Sketchpad, “released” in 1963. Regular readers will already know what Sketchpad was; Sketchpad was a sketching program, running on a Lincoln TX-2, and it allowed its users to draw various shapes, and manipulate these shapes. You interacted with the program using a laser pen and a keyboard with keys mapped to specific actions you could perform. The feature we are most interested in, however, is the program’s use of “instances”. While working on your master image, you could create an “instance”, draw a new shape there, and import it into the master image. However, Sketchpad didn’t have windows; instead, it just changed the entire screen. Still, its use of a master image and instances implies the use of windows as we know them today.
Sketchpad was revolutionary in that while not actually having a graphical user interface, it was the first program that actually implied a graphical user interface. Sketchpad was the first computer program that normal people could use, since it didn’t require any technical knowledge. This was revolutionary in a time where even the idea of a real-time command line interface was tantalising – computers were run in batch mode, using punch cards. Sketchpad was far, far, far ahead of its time, but in most articles on the history of the GUI, it is ignored.
While Sketchpad introduced the need for windows, Douglas Engelbart and his Online System were the first to actually introduce real windows, although you’d hardly recognise them. Englebart had been working on the conceptual ideas behind the NLS since the early ’60s, influenced by Vannevar Bush‘s Memex, and while employed at the Stanford Research Institute, he and his team were able to materialise his ideas into the oN-Line System (the NLS) in 1968. In a dramatic fashion (it was filmed by four television cameras), they demonstrated the NLS to a group of more than a thousand computer professionals. And left them completely breathless during what is now referred to as “The mother of all demos“. I often wonder how many of those one thousand people actually had any idea of what they had just seen.
With the NLS, Engelbart demonstrated, for the first time, several things that we are barely able to do even today. Hypertext linking, email, context-sensitive help, teleconferencing, instant messaging, full-screen text editing, networked document collaboration, and to top it all off, video conferencing. All this information was presented in a graphical user interface featuring a mouse and its pointer, and windows. The display used vector graphics, but was only able to display straight lines and uppercase letters. NLS sported real windows, but the windows didn’t have any boundaries such as window borders or titlebars.
The NLS was pure science fiction, but at the same time, it was difficult to use, and had a very steep learning curve. With the advent of mini and microcomputers, NLS faded into irrelevence, and many of Engelbart’s team members found their way to another company. This company was Xerox.
Before I move on to Xerox, however, let me say a few words on my apparant obsession with Sketchpad and NLS. The reason I keep reiterating the importance of Sutherland’s Sketchpad and Englebart’s NLS is because a lot of people today, especially younger people, seem to think that “Xerox invented the GUI, and Apple popularised it”. While true in a superficial sense, the real truth is that both Xerox and Apple were standing on the shoulders of giants – giants who had done most of the conceptual work decades earlier (and some, such as Engelbart and Sutherland even implemented their concepts into working prototypes). While Xerox and Apple made important contributions, it is simply historically inaccurate to credit them for the invention of the graphical user interface.
On to Xerox.
Xerox
Xerox played an important role in the development of the window. The NLS demonstrated to Xerox that a paperless future could become a possibility, and as a company built around paper, this was an obvious threat. Xerox decided that they needed to be part of this possible paperless future, and in order to achieve that, they set up the Palo Alto Research Center, or PARC.
At PARC, they started work on a computer that could be used to prepare advanced documents that could be printed using another PARC invention, the laser printer. This machine was the Alto (1973), and it featured several programs, such as a file manager, a paint program, and a word processor. These applications all sported different graphical user interfaces, and this was soon seen as a problem. The solution would prove to be revolutionary.
Enter Smalltalk (1974 and onwards). Smalltalk was not only a programming language – and the first an object-oriented programming language at that – but also a development environment (IDE), and a graphical user interface. It was launched from Alto’s file manager, and then took over the computer in a way similar to that of early Windows releases taking over DOS. Smalltalk had overlapping windows (with BeOS-like tabs), icons, scrollbars, pop-up context sensitive menus, radio buttons, dialog boxes, you name it. The Alto could also do email.
The Alto was the first true graphical user interface computer, thanks to Smalltalk. Sadly, Xerox’ management didn’t want to bring it to market. Instead, they made a less powerful and more limited version of the Alto, the Xerox Star, which lacked some of the more powerful features of the Alto; most notably, it lacked overlapping windows, opting for tiled windows instead (dialogs were allowed to overlap).
Sadly, the Star was too expensive, and didn’t make a noticable impact in terms of sales and adoption. No, the task of bringing the graphical user interface, and therefore the window, to the masses would fall upon the shoulders of a small company called Apple.
Apple
A number of ex-Xerox PARC employees joined Apple, and started to work on the company’s two graphical user interface projects: the Lisa and the Macintosh. These two projects – especially the Macintosh – would play a key role in firmly establishing the window as the concept we still know today.
Even though the differences between a window on the Xerox Star and the Lisa and Macintosh computers are small (originally, the Lisa even had tabs instead of full-width titlebars), there was one huge difference between the work done at PARC and Apple. The Star lacked overlapping windows, but Smalltalk on the Alto did have overlapping windows, and it achieved this by simply redrawing entire obscured windows. Apple’s QuickDraw, written by Bill Atkinson, had a different trick up its sleeve: regions. What is a region? I’ll let Andy Hertzfeld himself explain it:
Overlapping windows can form complex shapes, especially if their corners are rounded. The key data structure in QuickDraw was called a “region”, which compactly represented an area of the screen. QuickDraw provided routines that allowed the programmer to define regions by using the built-in drawing primitives, and to perform operations with them like union and intersection. Most importantly, all of the QuickDraw drawing primitives clipped to the intersection of three different regions, to allow drawing into obscured windows. We considered QuickDraw’s speed and deftness at region handling to be the most significant “crown jewel” in Apple’s entire arsenal.
Regions were adopted by basically all other graphical environments, and survived all the way up until Mac OS X, where windows are double-buffered in graphics memory for more efficient redrawing (flicker-free). Just like regions, this double-buffering technique also found its way to other graphical user interfaces (Windows Vista, Compiz). If you want to see regions in action, load up Windows XP, and move a window quickly across another, and you’ll see the regions redraw.
Now that we have a rough idea of the history of the window, let’s take a look at the elements of a default window.
I can only talk about the apps I use daily (Konqueror, Kate, Kile, Amarok, Kopete, Kontact, KPDF) but I can’t imagine what part of their user interface could be useless. So what exactly do you find useless/bogus?
Also: extravagent -> extravagant
i use KDE and the first thing i do in most KDE apps is turn off a lot of menubars and remove a lot of unnecessary(to me) buttons on toolbars i leave behind.
There is nothing wrong with having options in KDE, its just that KDE seems bloated if all available toolbars and buttons are displayed by default and leave it up the the user to remove what they dont need ..why not have a small set of mostly used toolbars and buttons and leave it to people to add additional functionality as they see fit instead of having on by default everything and leave it to people to remove what they dont need to remove clutter?
Indeed. Though I often change toolbars anyway, even in KDE 4 – but in 4 I generally ADD buttons, not remove them like in KDE 3 😉
From the article:
The Star didn’t have overlapping windows?:
http://toastytech.com/guis/starapp7.jpg
http://toastytech.com/guis/star6085-1.jpg
http://toastytech.com/guis/starscan.jpg
Also, the GUI history of the article goes directly from Xerox to Apple, leaving out a very important, independent GUI player (that predates the Apple Lisa) — the Three Rivers Perq (1979):
http://toastytech.com/guis/perquidoc.jpg
http://toastytech.com/guis/perq.html
That’s a later version of the software on the Star. The first version did NOT have overlapping windows (only dialogs). See here (use your browser’s search function for “overlap”):
http://www.digibarn.com/friends/curbow/star/retrospect/
As for PERQ – that’s an interesting one right there. It’s the work of ex-PARC employees, and is based on the Alto and the D* machines from PARC. I’m not all too familiar with it, though – I’ll gladly admit that I’m no walking encyclopedia, and I don’t know everything. However, I still think this article is pretty much accurate, but I don’t carry the illusion of having covered everything.
Yep, Engelbart would probably be my number one online collaboration and interactive human-computer interfaces visionary guru if I had to choose one. The other important researches in those IT fields often seem to only follow in his footsteps, much after him.
http://en.wikipedia.org/wiki/Douglas_Engelbart
Window managers, windowing systems and their design decisions seem more interesting to me than plain windows in themselves only. For example, stacking or tiling window managers have rather different ideas about useful window management.
At least the tiling window managers for Linux/Unix tend to be very minimalistic and spartan, and would probably turn away most but the more experienced computer users. I wonder how you could better combine some of the tiling window manager features into the easy to use desktop environment idea?
As an example, there’s a tiling plugin for Compiz-Fusion available: http://suasol.wordpress.com/2008/06/28/new-tiling-plugin-for-compiz…
Edited 2008-10-07 19:45 UTC
I think tiling features should be included by default in all window managers. I find myself often having to tile the windows myself when using a stacking wm. If I am pissed enough I restart a session with dwm(dmenu is great, no need to browse menu-of-the-day), but then I miss the taskbar with network, battery, etc.
I seem to remember that Windows 3 could tile windows but maybe it was just MDI children.
Windows up to Vista can tile windows. If you right click on the taskbar, it can tile them Vertically, or horizontally. Vista calls it “Stacking Windows”
I agree wholeheartedly.
Anyway, if you miss better window tiling features and use Compiz-Fusion, I recommend that you give the tiling/grid plugin, that I mentioned above, a try:
http://suasol.wordpress.com/2008/06/28/new-tiling-plugin-for-compiz…
It is really handy and one of the few reasons why using compiz feels actually useful (besides of just offering some visually pleasing effects) to me. The key combinations used in tiling are also easy to remember. I hope Compiz folks will integrate it (or something similar) to the mainline Compiz too.
wasn’t Smalltalk (1974); it was Simula (1967).