• • • • • • • • • • • •
Here are some more demos of the initial graphics routines. Bill made line-drawing blindingly fast with an algorithm that plotted “slabs” of multiple pixels in a single memory access. The rightmost picture shows how nonrectangular areas could also be filled with patterns.
• • • • • • • • • • • •
Here are some scanned images, showing off Lisa’s impressive resolution for the time, which Bill scanned using a modified fax machine. He was always tweaking the half-toning algorithm, which mapped grayscales into patterns of monochrome dots. Bill had made versions of these for the Apple II that Apple distributed on demo disks, but these higher resolution Lisa versions were much more impressive.
The left and middle pictures show off the first sketch program, an early ancestor of MacPaint, that allowed mouse-based drawing with patterns and a variety of brush shapes. I think these are perhaps a bit out of sequence, done in early 1980. The rightmost picture shows the final soft-key-based UI, which is about to change radically ...
... into a mouse/windows-based user interface. This is obviously the biggest single jump in the entire set of photographs, and the place where I most wish Bill had bothered to date them. It’s tempting to say the change was caused by the famous Xerox PARC visit, which took place in mid-December 1979, but Bill thinks the windows predated that, although he can’t say for sure.
The leftmost picture shows different fonts in overlapping windows, but we didn’t have a window manager yet, so they couldn’t be dragged around. The middle window shows the first pop-up menu, which looks just like Smalltalk, as does the simple, black title bar. The rightmost picture shows we hadn’t given up on the soft-keys yet.
By now, it was the spring of 1980 and things were happening fast. The leftmost picture shows the earliest text selection, using a different highlighting technique than we ended up with. It also shows a “command bar” at the bottom of the screen. We had also started to use non-modal commands (make a selection, then perform an action, instead of the other way around).
The middle picture shows the very first scroll bar, on the left instead of the right, before the arrow scroll buttons were added. It also has a folder-tab style title bar, which would persist for a while before being dropped (Bill says that at that point, he was confusing documents and folders). The rightmost photo shows we adopted the inverse selection method of text highlighting.
• • • • • • • • • • • •
By the summer of 1980, we had dropped the soft-keys. The leftmost photo shows we had mouse-based text editing going, complete with the first appearance of the clipboard, which at that point was called “the wastebasket.” Later, it was called the “scrap” before we finally settled on “clipboard.” There was also a Smalltalk-style scrollbar, with the scroll box proportional to the size of the document. Note there are also two sets of arrows, since a single scrollbar weirdly controlled both horizontal and vertical scrolling.
The next picture shows that we dropped the proportional scroll box for a simpler, fixed-size one, since we were afraid users wouldn’t understand the proportionality. It also shows the I-Beam text cursor for the first time. At this point, we were finally committed to the one-button mouse, after a long, protracted, internal debate.
The rightmost picture shows Bill playing around with splines, which are curves defined by a few draggable control points. QuickDraw didn’t end up using splines, but the picture is still notable for the first appearance of the “knobbie” (a small, draggable, rectangular affordance for a point).
• • • • • • • • • • • •
By now, it was the fall of 1980. The middle picture shows us experimenting with opened and closed windows, which were eventually dropped (but made a comeback in the 90s and are in most systems today one way or another). The rightmost picture shows the first window resizing by dragging a gray outline, although it’s not clear how resizing was initiated.
• • • • • • • • • • • •
The middle picture shows that windows can be repositioned by dragging a gray outline. We wanted to drag the whole window, like modern user interfaces do today, but the processors weren’t fast enough in those days. As far as I know, NeXTStep was the first system to drag the entire window.
The rightmost picture shows the first appearance of pull-down menus, with a menu bar at the top of the window instead of the top of the screen, which is the way it’s still done in Windows. By this point, we also gave up on using a single scroll bar for both horizontal and vertical scrolling; it’s looking very much like what the Mac shipped with in 1984 now.
This set of pictures illustrates the Lisa desktop, circa the end of 1980, with a tab-shaped title, followed by a menu bar attached to the window. Windows could be reduced to tabs on the desktop. We’ve also changed the name of the clipboard to “the scrap,” an old typesetting term.
• • • • • • • • • • • •
The leftmost picture mentions the first use of double-clicking to open and close windows. The middle picture represents a real breakthrough by putting the menu bar at the top of the screen instead of the top of each window. The menu bar contains the menus of the “active folder,” which is the topmost window. By this point, the grow icon found its way to the bottom right, at the intersection of the horizontal and vertical scrollbars, which stuck. This is the first picture that is really recognizable as the shipping Macintosh.
• • • • • • • • • • • •
By now, it was early 1981, and the UI was beginning to shape up. The leftmost picture shows a window with scrollbars that look a lot like the ones in the final UI. The middle folder illustrates split views, which were used by Lisa’s spreadsheet application. The rightmost picture contains the first appearance of a dialog box, which at the time ran the entire length of the screen, just below the menu bar.
Now that the basic window structure was stabilizing, Bill turned his attention back to the graphics routines. He worked more on the Sketch program (the forerunner of MacPaint); the snowman drawing on the left is a clue that it’s now winter 1981. He added algorithmic text styles to the graphics, adding styles of bold (pictured on the right), as well as italic, outline, and shadow.
• • • • • • • • • • • •
At this point Bud Tribble was living at Bill’s house, and he tended to sleep during the day and work all night, so Bill drew the phase diagram on the left with the sketch program. The middle picture shows fast ovals, which were added to LisaGraf as a basic type in Spring 1981, using a clever algorithm that didn’t require multiplication. They were quickly followed by rectangles with rounded corners, or “roundrects”, illustrated on the right, which were suggested by Steve Jobs (see “Round Rects Are Everywhere!” on page 46).
• • • • • • • • • • • •
By May 1981, the Lisa user interface was beginning to solidify. The leftmost photo shows scrollable documents of different types in overlapping windows, still sporting folder tabs for titles. The middle picture shows how roundrects began to creep into various UI elements, such as menus, providing a more sophisticated look, especially when combined with drop shadows. The rightmost photo shows how menus could be graphical, as well as text-based.
The Lisa team was worried about the closed window tabs being obscured by other windows on the desktop, so Bill added a standard menu on the extreme left called “the tray,” which could show and hide opened windows. The middle and right pictures portray a prototype Bill created for the Lisa Graphics Editor (which eventually evolved into MacDraw), to demonstrate that modes could sometimes be useful; it was the first program to select modes with a graphical palette, which eventually became the main user interface of MacPaint.
• • • • • • • • • • • •
The last major change in the Lisa User Interface was moving to an icon-based file manager in March 1982. The leftmost picture
is an early mock-up done in the graphics editor, using a two-level hierarchy; selecting an icon in the top pane displays its contents in the bottom one. By the middle photo, Bill had arrived at something very similar to the shipping design, complete with a trash can at the lower right (see “Rosing’s Rascals” on page 74). Note that the folder tab on windows had disappeared, replaced by a rectangular title bar that’s partially inverted when highlighted.
Finally, Bill renamed “LisaGraf” to “QuickDraw” in the spring of 1982 because he wanted a name that was also suitable for the Macintosh. He added two related features to meet the burgeoning needs of the Lisa applications: pictures and scaling. Pictures were a way of recording graphics operations into a data structure for later playback; this became the basis of both our printing architecture and cutting and pasting graphics. Since pictures could be drawn into an arbitrarily sized rectangle, it also caused Bill to add bitmap-scaling features as well.
Most users and developers experienced the user interface as a completed whole only, so they tended to think of it as static and never changing, when in fact these pictures show it was always evolving as we gained more experience and tackled more application areas. A user interface is never good enough, and, while consistency between applications is an important virtue, the best developers will continue to innovate when faced with new problems or when they see a much better way to accomplish something. As usual, Bob Dylan said it best when he wrote in 1965: “He not busy being born, is busy dying.”
Steve Jobs and Bill Atkinson in January 1984
I Still Remember Regions
April 1982
We almost lose Bill in a car accident
The single most significant component of the original Macintosh technology was QuickDraw, the graphics package written by Bill Atkinson for the Lisa project. QuickDraw pushed pixels around the frame buffer at blinding speeds to create the celebrated user interface. One of QuickDraw’s main jobs was to provide the primitives for quickly drawing text and graphics into overlapping windows whenever the window a user was drawing into was partially obscured by other windows. Applications could just draw without worrying if their window was obstructed because QuickDraw, with a little help from the Window Manager, took care of the clipping to make sure pixels stayed inside of their window.
Overlapping windows could form complex shapes, especially if their corners were 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 such as 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.
The region data structure was a variable-sized list of what Bill called “inversion points,” the coordinate values where black changed to white or vice versa. Since most regions were mostly rectangular, there weren’t many inversion points, so regions were quite compact. But occasionally there were lots of inversions, like in a circle, so regions grew as necessary.
QuickDraw was written entirely by Bill Atkinson, and in the spring of 1982, it was still evolving. He had recently sped up region operations by more than a factor of 4. The concept of “pictures,” a set of drawing operations grouped together for easy playback, was recently added to the package and hadn’t really settled down yet. At this point, the Lisa applications were beginning to come together and Bill was changing QuickDraw in response to what they needed.
One morning, we were shocked to hear Bill had gotten into a really bad car accident on his way into work. Apparently he had turned a corner and not seen a parked truck. He slammed his little Corvette into the truck, shearing the roof off the top of his car. Bill was knocked unconscious and got pretty banged up, but he was still in one piece. One of the police officers who surveyed the wrecked Corvette commented that it was a miracle Bill wasn’t decapitated. This was a little more than a year after Woz’s plane crash, but it brought back memories of that.
When Steve Jobs heard about the accident he immediately jumped into his car and drove to the hospital where Bill had been taken. He was in a hospital bed, and had only recently regained consciousness by the time Steve arrived. He sustained a head injury and lost some blood, but luckily there were no major problems.
“Is everything OK?” Steve asked upon entering Bill’s room. “We were pretty worried about you.”
Bill turned his head and looked at Steve. He managed a painful smile. “Don’t worry, Steve, I still remember regions.”
I must add a few details to Andy’s story of Bill’s accident. The truck Bill hit straddled a road he drove on every day near his home. There had never before been a vehicle at that location. He didn’t see it soon enough to stop. But he rolled his upper body onto the passenger seat and thus avoided decapitation. The Corvette emerged from the other side of the truck and proceeded down the road on its own. After a block or so, it crossed a major boulevard and came to rest on the other side. Bill regained consciousness just long enough to tell the police officer, “Call Larry Tesler and tell him I’ll be late for the meeting.” He then passed out and forgot the conversation. But I did get the call.
Larry Tesler
You Can’t Fire Bruce!
May 1982
The software team has a personality clash
Even though he was only 22 years old when he joined the Mac team, Bruce Horn already had 7 years of experience tinkering with graphical user interfaces. He was recruited as a 14-year-old by Ted Kaehler to do some programming experiments in Smalltalk at Alan Kay’s Learning Research Group in the mid-70s, and he took to it so well that he had worked part-time at Xerox PARC ever since. By the time he joined the Mac team in late 1981, he was an expert in object-oriented programming and graphical user interfaces.
Bruce was a bright, idealistic, and uncompromising programmer who fit right in with the prevailing values of the team, and he quickly became an important contributor to the Macintosh system software effort. He was slated to work on the application that graphically represented files, which Bud Tribble had dubbed the “Finder.” But after a few weeks, he convinced us we were missing a crucial part of the system he called the “Resource Manager,” which managed the various chunks of data—such as text strings and images—that an application relied on. According to Bruce, the Resource Manager would also be used by the Finder application for managing icons and bindings between documents and applications (see “Resource Manager Countdown” on page 116).
Bruce was busy implementing the Resource Manager when Bob Belleville arrived on the scene as the new software manager in April 1982, replacing Bud Tribble, who had returned to medical school at the end of 1981. Bob was also a Xerox alumnus, but otherwise he and Bruce couldn’t have been more different. Bob was pragmatic and somewhat authoritarian, with a worldview substantially forged by his stint in the Navy. He immediately began to clash with Bruce’s idealism.
I spent a lot of time helping Bob get up to speed when he first started on the project, and we got along well at first even though we had very different perspectives. Bob was a little bit older than most of the core team and had a wife and children. He was also naturally skeptical. He didn’t understand why we were so excited about the Macintosh, which he saw as just another increment along a continuum. “I don’t get it,” he complained to me. “This computer will be obsolete in a year, and then there will be another one, and another one after that. What’s so special about this one?”
The first software team meeting Bob presided over took place soon after we moved from Texaco Towers to Bandley 4. The meeting was held in the main conference room around a long table Burrell and I used for after-hours ping-pong. Up to this point, the software team had a very loose management style, without forma
l meetings, so this was something new for us. Bob went around the table and had each person tell the group what they were currently working on and when they were planning to complete it.
When it was Bruce Horn’s turn, he described his Resource Manager work but refused to give a date as to when it would be finished. Bob visibly bristled and asked him to make the best estimate he could, which Bruce refused to do, claiming that it wouldn’t be accurate. Bob wanted Bruce to put the Resource Manager aside to work on the Finder, which Bob thought had much higher priority, but Bruce refused to go along with him because of the dependence of the Finder design on the Resource Manager. They were at an impasse, but finally Bob said he’d resolve it by talking with Bruce privately, and the meeting was able to progress.
I was worried about how the obvious tension between Bruce and Bob would be resolved. A few days later, Bruce came to me in the late afternoon, visibly shaken.
“You wouldn’t believe what just happened! I finally had my meeting with Bob about the Resource Manager.”
“So what happened?”
“We started off talking about the work that was needed to finish it, but I guess I said something he didn’t like. He started getting all weird, and told me I was insubordinate, that he was my manager, and that I had to follow his orders or else. ‘Or else what?’ I asked him. You wouldn’t believe what he did!”
“What did he do?” I asked, not knowing what to expect.
“He threatened me! Can you believe that? For a second I thought we were going to have a fistfight, but he started smiling as if he was joking. I didn’t know what to think. Finally, he said we’d talk more later and walked away.”
Revolution in The Valley [Paperback] Page 10