Copland is an operating system developed by Apple for Macintosh computers between 1994 and 1996 but never commercially released. It was intended to be released as System 8, and later, Mac OS 8. Planned as a modern successor to the aging System 7, Copland introduced protected memory, preemptive multitasking, and several new underlying operating system features, while retaining compatibility with existing Mac applications. Copland's tentatively planned successor, codenamed Gershwin, was intended to add more advanced features such as application-level multithreading.
Development officially began in March 1994. Over the next several years, previews of Copland garnered much press, introducing the Mac audience to operating system concepts such as object orientation, crash-proofing, and multitasking. In May 1996, Gil Amelio stated that Copland was the primary focus of the company, aiming for a late-year release. Internally, however, the development effort was beset with problems due to dysfunctional corporate personnel and project management. Development milestones and developer release dates were missed repeatedly.
Ellen Hancock was hired to get the project back on track, but quickly concluded it would never ship. In August 1996, it was announced that Copland was canceled and Apple would look outside the company for a new operating system. Among many choices, they selected NeXTSTEP and purchased NeXT in 1997 to obtain it. In the interim period, while NeXTSTEP was ported to the Mac, Apple released a much more legacy-oriented Mac OS 8 in 1997, followed by Mac OS 9 in 1999. Mac OS X became Apple's next-generation operating system with its release in 2001. All of these releases bear functional or cosmetic influence from Copland.
The Copland development effort has been described as an example of feature creep. In 2008, PC World included Copland on a list of the biggest project failures in information technology (IT) history.
Design
Mac OS legacy
The prehistory of Copland begins with an understanding of the Mac OS legacy, and its architectural problems to be solved.
Launched in 1984, the Macintosh and its operating system were designed from the start as a single-user, single-tasking system, which allowed the hardware development to be greatly simplified. As a side effect of this single application model, the original Mac developers were able to take advantage of several compromising simplifications that allowed great improvements in performance, running even faster than the much more expensive Lisa. But this design also led to several problems for future expansion.
By assuming only one program would be running at a time, the engineers were able to ignore the concept of reentrancy, which is the ability for a program (or code library) to be stopped at any point, asked to do something else, and then return to the original task. To be reentrant, any local data and state has to be stored out when another program calls the code, and if one does not require reentrancy, saving out the state can be skipped. In the case of QuickDraw for example, this means the system can store state information in the library, things like the current location of the window or the line style, knowing it would only change under control of the running program. Taking this one step further, the engineers left most of this state inside the application rather than in QuickDraw, thus eliminating the need to copy this data between the application and library, the program can make changes to these settings to its own internal storage and QuickDraw finds this data by looking for these values in known locations within the applications.
This concept of sharing memory is a significant source of problems and crashes. If an application program writes incorrect data into these shared locations, it could cause QuickDraw to crash, thereby causing the computer to crash. Likewise, any problem in QuickDraw could cause it to overwrite data in the application, once again leading to crashes. In the case of a single-application operating system this was not a fatal limitation, because in that case a problem in either would require the application, or computer, to be restarted anyway.