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 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.
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.