99
The history of Cocoa as a cult technology seems to have created a community in which the oldest members are also its most die-hard adherents. Before it was ever known as Cocoa or was the developer kit for the iPhone or the Mac, the technologies were part of NeXTSTEP, the operating system developed by NeXT. Much less has been written about NeXT than about Apple. According to biographies and other accounts of Job’s ouster at Apple, (Deutschman 2000; Isaacson 2011; Stross 1993;
Young 1988), Jobs founded NeXT both to redeem himself and to one-up the Apple executives who had kicked him out. After poaching key members of the Macintosh team to help start NeXT, Jobs attracted many of the best and brightest of the computer industry and academic research to his new company, among them Avie Tevanian, a Carnegie Mellon computer science Ph.D. who created the Mach kernel that would become the basis of NeXT’s operating system, and Bertrand Serlet, a researcher at Xerox PARC. NeXT was supposed to be a better Apple, and Jobs wanted to make bleeding-edge computers that would be light-years ahead of the Macintosh which only a few years before, Jobs had shepherded into the world.
Blaine Garst, a former NeXT and Apple engineer, noted that Jobs’ motivation to beat Apple was part of NeXT’s mission statement: “When he formed NeXT he wanted to build a better Apple, and that was actually in the… one-paragraph mission statement and it was basically ‘Here at NeXT we’re trying to build a machine that is better, the better machine. A better version of Apple for you and your friends and colleagues’
use.’” (Blaine Garst Interview, April 13, 2012)
In pursuit of this goal, NeXT’s hardware, the NeXT Cube, would be state of the art, including a Digital Signal Processor (DSP) chip that would give the computer advanced sound and graphics capabilities for a desktop machine. Jobs also insisted, in a move that proved to be too forward thinking, to not include a floppy drive but use instead a magneto-optical drive, which turned out to be too slow and expensive to be feasible. All of these capabilities would be housed in a sleek, black metal cube, manufactured in a state-of-the-art automated factory in California.
The NeXT computer’s software would be based on the Unix operating system, an operating system first created at AT&T in the 1970s for minicomputers, that had,
100
by the 1980s, become popular for desktop scientific workstations such as those sold by Sun Microsystems. Because Apple had previously achieved significant success in education, and Jobs believed that NeXT’s best shot would be to initially target American higher education as its key market, Unix’s heavy use in academic computer science likely played a role in this decision. Because Unix had run on larger computers from the beginning, it was technically more sophisticated than the disk operating systems that ran on early microcomputers, including that of the Macintosh. However, in the 1980s, Unix was still primarily a command-line based operating system, lacking the Macintosh’s friendly graphical user interface. NeXT’s version of Unix would build a graphical user interface on top of BSD, the open source Berkeley Standard Distribution of Unix popular in academia, along with Tevanian’s Mach kernel, making it the best of both worlds. The new operating system would be called NeXTSTEP.
There was one other key piece of NeXT’s technology: object-oriented programming. Like Unix, by the mid-1980s, object-oriented programming was a bleeding edge topic that was in vogue in academic computer science, and beginning to make in-roads into industry. Object-oriented programming is a methodology whereby programs are conceived of as arrangements of objects which communicate with each other. Programmers could better model real-world systems by modeling them as objects in code and combining them together in a complex, dynamically interacting system. In this way, object-oriented programming differs from procedural programming, the way all programs had been conceptualized before. Procedural programs are conceived of as processes, flows of operations between loops and branches, not as arrangements of abstract things. (Hence, procedural programs are depicted graphically using flow charts, while object-oriented programs are depicted using object diagrams.) What computer scientists consider to be the first object-oriented programming language, Simula-67, was created in 1967 for simulation. In the 1970s, Alan Kay at Xerox PARC coined the term “object-oriented” to describe his own language, Smalltalk, that he hoped would be a learning tool for children.
Smalltalk, which ran on the Xerox Alto, was more than just a language, it also
101
incorporated a development environment and the first graphical user interface (GUI), which, famously, was copied by Steve Jobs’ team at Apple for the Lisa and later the Macintosh. In those visits to Xerox PARC, Jobs and Apple had focused on the GUI, but had ignored object-oriented programming, as the technology was based on adding levels of abstraction that would have required significantly more powerful hardware than the personal computers Apple would be selling. However, by the late 1980s, at NeXT, the academic computer scientists Jobs was hiring had convinced him that object-oriented programming was the wave of the future, and that it had to be the basis for NeXT’s development environment.
NeXT eventually adopted Objective-C, a language developed by Brad Cox, an outspoken advocate of object-oriented programming. One of its advantages over Smalltalk was compatibility with C, the procedural language developed at AT&T in conjunction with Unix, and which by the 1980s had become the dominant language in the computer industry. C++, also developed at AT&T as an object-oriented
superset of C, would become the most popular object-oriented language by the 1990s because of its compatibility with C. Why did Objective-C, which also was an object-oriented superset of C, not become popular? One reason was that Objective-C’s object-oriented half was based on Smalltalk, a language radically different from C.
The resulting “bracket” syntax looked nothing like the procedural C half of the language, and many C programmers had difficulty getting used to it. C++, on the other hand, became popular in part because it did not force object-oriented concepts wholesale on C programmers, but allowed them to adopt it piecemeal, and its object-oriented dot syntax seemed to be a natural extension of C’s (Zepcevski 2012).
Using the Objective-C language, NeXT created a number of object libraries that developers could use themselves to help them build programs without having to rewrite a lot of basic functionality for themselves. For example, to facilitate usage of the NeXT’s DSP and sound capabilities, NeXTSTEP provided the SoundKit. An early DBKit provided rudimentary database capabilities. The FoundationKit, later known simply as Foundation, contained the fundamental objects which all Objective-C programs needed to run. Most importantly, for building applications with graphical
102
user interfaces, NeXT provided the Application Kit, known more commonly as the AppKit. Influenced by the GUI object libraries of Smalltalk, the AppKit provided a higher level, more abstract, and much faster way to create graphical applications than the low-level, procedural Pascal and C-based Macintosh Toolbox interfaces on the Apple Macintosh. A major contributor was that NeXT made programming itself partly graphical. Its development environment included Interface Builder, an application that a developer could use to graphically “wire up” interface objects, such as buttons or menus, to the actions or commands they were intended to execute.
This graphical method, while not removing the need to write code completely, seemed to many NeXT programmers to be a revolution in the way they designed programs—they could now prototype a user interface using Interface Builder, allowing them to change and iterate over the design quickly, and then turn the prototype into the real application itself by writing the code the user interface linked to, rather than being forced to rewrite the actual application from scratch.
NeXT’s marketing made a big deal of these capabilities, pointing out how the AppKit libraries and Interface Builder could improve programmer productivity by an order of magnitude. For example, a brochure advertising the advantages of NeXTstep software (the capitalization of operating system’s name changed a few times) had an entire spread devoted to Improv, an innovative new spreadsheet from Lotus, which was written using NeXT’s object kits from the ground up. Improv was widely praised and fondly remembered by former NeXT users for its innovation. Subsequent pages of the brochure focus on NeXTstep’s development advantages, and how it allowed such innovative software to be produced so quickly:
“On one level, NeXTstep is the user interface that makes all NeXT computers so very intuitive and visually interesting. On another, it’s a development environment that revolutionizes the way software is conceived and created. In fact, it’s the entire reason why the companies we just mentioned [Lotus, Ashton-Tate, WordPerfect, Adobe] could create such extraordinary software in a fraction of the time it would have taken with other computer systems.
But even more revolutionary is the fact that NeXTstep is just as accessible to you. So, for example, if you’re creating customized
103
software for people who take care of personnel, customer service or payroll, you can use the same tools Lotus used to create Improv…
The NeXTstep environment is an object-oriented world. It’s purely graphical, making Unix® easier to work with than DOS, OS/2,® Macintosh® or Windows™ environments. And it runs on every NeXT computer.®
One of the most extraordinary parts of NeXTstep is Interface
Builder,™ which lets you create an elegant application interface using little more than the mouse. You can choose from a palette of interface objects (such as menus, buttons and sliders) provided by the
Application Kit. ™ Then edit, link and arrange them the way you want them to appear in your finished application. In addition, you can easily build new palettes of objects that you design yourself. Or add your own customized objects to the NeXT Application Kit.
So with Interface Builder, you can rapidly generate a graphical front-end to a corporate database. You can also do some fast prototyping of new applications—which makes it that much easier to test your software with the people who will ultimately use it.
And the interface you create, which may have taken 90% of your time previously, now takes less than 5%…
Most important, the programs you create are… real, industrial-strength applications—every bit as fast as the applications you buy off the shelf, and every bit as complete.
Applications you develop with NeXTstep are modular, too, so you can reuse portions whenever you see fit. And they’re extremely easy to maintain. Now, when you update, there’s no need to rewrite your whole application—you simply update the parts you want to change.
In the words of the NeXT Development Team at Lotus, ‘NeXTstep is the best development environment available on any personal computer today.’ There really has never been an environment anything like
NeXTstep. And no machine is built to support it like a NeXT computer.
(NeXT Brochure, NeXT Computer, Inc. 1990, Box 26. Software and Peripherals, Mahoney Papers, Charles Babbage Institute.)
A few things stand out in this ad. Most striking is that the ad emphasizes how easy, and how simple, it is for the user to create his or her own custom software.
There are a number of reasons for this. Firstly, despite the few large applications from corporate firms touted by the ad, NeXT had a very small marketshare and very few applications, and a lot of the time, users had to create their own. Secondly,
104
however, the emphasis given to Interface Builder and its graphical way to build programs was in part the logical extension of the graphical dream: to democratize the next hurdle in computing, programming. This would be how Steve Jobs could one up his previous creation, the Macintosh. While the Mac had democratized computer use through the graphical user interface, NeXTstep, through the combination of object-oriented programming kits and the graphical programming tool Interface Builder, would bring programming to the masses. This was not too far from Alan Kay’s dream of making programming accessible to children with Smalltalk, or Seymour Papert’s vision of using programming as an educational children’s tool with Logo.
And indeed, Brad Cox, who created Objective-C, had also hoped that, in conjunction with a market of off-the-shelf, reusable software object modules, users could easily write their own programs: “The programmer shortage can be solved as the telephone-operator shortage was solved: by making every computer user a programmer.” (Cox 1990b, 30) NeXT, and Steve Jobs, was only the latest in a line of those who
envisioned a future where users were empowered because they could write their own computer programs. Nevermind that this utopia was overblown—NeXTstep
programming then, and Cocoa programming now, is not easy, Interface Builder not withstanding. Indeed, Interface Builder did not remove the need to write code completely. As we will explore later, the effect of Interface Builder, AppKit, and other technologies which make certain tasks more convenient (and thus more
productive) for the programmer was not to deskill those tasks, but rather, to increase the amount of knowledge and understanding necessary. Because the AppKit and Interface Builder hide a lot of things from the programmer, in order for the programmer to know what to do when he or she actually needs to write code, the programmer actually needs to understand what the AppKit is doing on a much deeper level than if the programmer wrote everything him or herself.
Secondly, a conclusion that can be reached by the end of the ad is that NeXT is selling object-oriented programming itself—or at least, the advantages of
NeXTstep as an object-oriented environment. It touts the modularity, reusability, and maintainability of applications written with NeXTstep—all advantages associated
105
with object-oriented programming. The fact that object-oriented programming is itself the product is made a lot more clear by the following ad from NeXTWorld magazine.
Figure 1: NeXTSTEP 486 advertisement (NeXTWORLD Magazine, October 1993, p. 24)
106
The ad makes clear that NeXTSTEP is the world’s “only object-oriented system software.” At this time, rivals Apple and IBM were teaming up to create their own object-oriented operating system, Taligent, while Microsoft attempted its own project, Cairo, neither of which shipped to the public. The small letters on the box box above the cubic building blocks, which represent objects, say “The premiere object-oriented software that dramatically simplifies developing and deploying client/server business applications.”
This ad must be put into context with the state of NeXT’s business at this time. The ad is for NeXTSTEP 486, a version of the operating system that ran on the Intel processors used in IBM compatible PCs. By 1992, it was clear that NeXT’s hardware business was a failure. Less than 50 thousand machines were ever shipped.
(Wil Shipley Interview, April 18, 2012) NeXT had made significant mistakes.
According to Randall Stross, Steve Jobs, having made his millions at Apple so quickly, had not been running NeXT in a frugal fashion, and had burned through much of its funding (and a considerable amount of his own fortune) pursuing
perfection (Stross 1993). In order to settle a lawsuit with Apple, NeXT had signed a non-compete agreement, which meant that it could not sell machines in the same price range as Apple. Nevertheless, NeXT tried to make a general-purpose computer with a graphical user interface, but much more advanced, and more expensive than the Macintosh. NeXT initially targeted universities, but its machines were too expensive to compete with Macs and IBM PCs, yet slower than the Sun and HP workstations at a similar price. It tried to target desktop publishing, a market already cornered by the Macintosh, and networked office computing with a buzzword that failed to catch on, “interpersonal computing.” However, because of their price premium, it was not clear why customers should choose NeXT machines over Macs or IBM compatibles. Unsure if they were PCs or workstations, NeXT computers were solutions looking for a problem. These problems were only exacerbated by a disastrous deal with computer retailer Businessland.
While NeXT was still trying to sell hardware, it needed third parties to write desktop productivity applications to become a viable consumer platform, and Steve
107
Jobs had used his industry fame and his considerable charisma to convince some large software publishers, such as Adobe and Lotus, to make applications for the end-user, including Lotus’s innovative NeXT-only spreadsheet, Improv. However, it was NeXT users at many of NeXT’s academic installations who needed no
convincing to tinker with NeXT’s included developer tools to write apps. These users became some of the first independent NeXT developers. One of the first was Andrew Stone of Albuquerque, NM, the counterculturalist and friend of EFF founders John Perry Barlow and John Gilmore who we met in chapter 1. Stone was a former
architect who had been introduced to NeXT at a Macintosh User’s Group, attended a NeXT Developer Training camp, and by 1992 had decided to try his hand at selling his apps over the nascent Internet, distributing software packages for free but selling license codes over e-mail. Stone became well known in the NeXT developer
community for his drawing application, Stone Design, and for a database, Dataphile.
(Andrew Stone, Interview, June 7, 2011.) Other small-scale operations included Glenn Reid’s RightBrain, which offered a desktop publishing alternative to Aldus Pagemaker, and Lighthouse Design. Co-founded by Jonathan Schwartz, Roger Rosner (now at Apple), and Kevin Steele, among others, Lighthouse produced an office suite of applications, which included a spreadsheet and a presentation tool, as well as an innovative program called Diagram! which could be used to quickly draw graphs and flow-charts.
Although NeXT made its money from selling boxes, NeXT developers argued that, the sleekness of the hardware notwithstanding, NeXT’s biggest competitive advantage was its object-oriented development environment. Eventually, NeXT, decided to hone its marketing to focus on this message, arguing that the productivity advantages of NeXTSTEP’s development environment were ideal for rapid
application prototyping, and “custom mission critical applications.” This term referred to the kinds of problems that were critical to the core business or mission of large Fortune 500 corporations or government institutions, so important to their existence that the cost of a solution was not a primary factor. NeXT would close down its money-losing hardware business, which included selling its state of the art,
108
automated but mostly idle California factory to Canon. Instead, it would sell licenses to its software and development environment as a custom, Do-It-Yourself solution for tens of thousands of dollars each, allowing the company to remake itself and survive. The downside was that, with no hardware, and marketshare continuing to slide, the packaged, “shrink-wrapped” NeXT software market contracted
considerably. Most of the corporate firms such as Lotus, Wordperfect, and Adobe, exited the market. Many smaller, independent firms, like Glenn Reid’s RightBrain, which had focused on desktop publishing, folded. Lighthouse Design sold itself to
considerably. Most of the corporate firms such as Lotus, Wordperfect, and Adobe, exited the market. Many smaller, independent firms, like Glenn Reid’s RightBrain, which had focused on desktop publishing, folded. Lighthouse Design sold itself to