The OpenStep API was created as the result of a 1993 collaboration between NeXT Computer and Sun Microsystems, allowing this cut-down version of NeXT's NEXTSTEP operating system object layers to be run on Sun's Solaris operating system (more specifically, Solaris on SPARC-based hardware). Most of the OpenStep effort was to strip away those portions of NEXTSTEP that depended on Mach or NeXT-specific hardware being present. This resulted in a smaller system that consisted primarily of Display PostScript, the Objective-C runtime and compilers, and the majority of the NEXTSTEP Objective-C libraries. Not included was the basic operating system, or the display system.
The first draft of the API was published by NeXT in summer 1994. Later that year they released an OpenStep compliant version of their flagship operating system NEXTSTEP, rebranded as OPENSTEP and supported on several of their platforms as well as Sun SPARC systems. The official OpenStep API, published in September of 1994, was the first to split the API between Foundation and Application Kit and the first to use the “NS” prefix. OPENSTEP remained NeXT's primary operating system product until they were purchased by Apple Computer in 1997. OPENSTEP was then combined with technologies from the existing Mac OS to produce Mac OS X.
Sun originally adopted the OpenStep environment with the intent of complementing Sun's CORBA-compliant object system, Solaris NEO (formerly known as Project DOE), by providing an object-oriented user interface toolkit to complement the object-oriented CORBA plumbing. The port involved integrating the OpenStep AppKit with the Display PostScript layer of the Sun X11 server, making the AppKit tolerant of multi-threaded code (as Project DOE was inherently heavily multi-threaded), implementing a Solaris daemon to simulate the behavior of Mach ports, extending the SunPro C++ compiler to support Objective-C using NeXT's ObjC runtime, writing an X11 window manager to implement the NEXTSTEP look and feel as much as possible, and integrating the NeXT development tools, such as Project Manager and Interface Builder, with the SunPro compiler. In order to provide a complete end-user environment, Sun also ported the NEXTSTEP-3.3 versions of several end-user applications, including Mail.app, Preview.app, Edit.app, Workspace Manager, and the dock.
The OpenStep and CORBA parts of the products were later split, and NEO was released in late 1995 without the OpenStep environment. In March 1996, Sun announced Joe, a product to integrate NEO with Java. Sun shipped a beta release of the OpenStep environment for Solaris on July 22, 1996, and made it freely available for download in August 1996 for non-commercial use, and for sale in September 1996. OpenStep/Solaris only shipped for the SPARC architecture.
The API OpenStep contrasts with the earlier NEXTSTEP primarily in five ways:
However, OpenStep also specified the use of Display PostScript, a versatile and powerful PostScript-based method of drawing windows and graphics on screen. NeXT, with its devotion to implementing object-oriented solutions, supplied pswraps for interfacing C code to Display PostScript. pswraps acted in an encapsulative way and was somewhat object oriented. The Application Kit, Foundation, and Display PostScript comprise the three key technologies in the OpenStep specification; however, Display PostScript was featured in older NeXT technologies, such as NEXTSTEP.
The standardization on OpenStep also allowed for the creation of several new library packages that were delivered on the OPENSTEP platform. Unlike the operating system as a whole, these packages were designed to run stand-alone on practically any operating system. The idea was to use OpenStep code as a basis for network-wide applications running across different platforms, as opposed to using CORBA or some other system.
Primary among these packages was Portable Distributed Objects (PDO). PDO was essentially an even more "stripped down" version of OpenStep containing only the Foundation Kit technologies, combined with new libraries to provide remote invocation with very little code. Unlike OpenStep, which defined an operating system that applications would run in, under PDO the libraries were compiled into the application itself, creating a stand-alone "native" application for a particular platform. PDO was small enough to be easily portable, and versions were released for all major server vendors.
PDO became somewhat infamous in the mid-1990s when NeXT staff took to writing in solutions to various CORBA magazine articles in a few lines of code, whereas the original article would fill several pages. Even though using PDO required the installation of a considerable amount of supporting code (Objective-C and the libraries), PDO applications were nevertheless considerably smaller than similar CORBA solutions, typically about one-half to one-third the size.
The similar D'OLE provided the same types of services, but presented the resulting objects as DCOM objects, with the goal of allowing programmers to create DCOM services running on high-powered platforms, called from Microsoft Windows applications. For instance one could develop a high-powered financial modeling application using D'OLE, and then call it directly from within Microsoft Excel. When D'OLE was first released, OLE by itself only communicated between applications running on a single machine. PDO enabled NeXT to demonstrate Excel talking to other Microsoft applications across a network before Microsoft themselves were able to implement this functionality.
Another package developed on OpenStep was Enterprise Objects Framework (EOF), a tremendously powerful (for the time) object-relational mapping product. EOF became very popular in the enterprise market, notably in the financial sector where OPENSTEP caused something of a minor revolution.
NeXT's first operating system was NEXTSTEP, a sophisticated Mach-UNIX based operating system that was ported to run on several architectures (PA-RISC, SPARC, i386 and 68k). However, NeXT's new direction for NEXTSTEP was to free the operating system libraries from being tied to UNIX and becoming more device independent.
NeXT completed an implementation of OpenStep on their existing Mach-based OS and called it OPENSTEP for Mach 4.0, 4.1 and 4.2. It was, for all intents, NEXTSTEP 4.0, and still retained flagship NEXTSTEP technologies (such as DPS, UNIX underpinnings, user interface characteristics like the Dock and Shelf, and so on), and retained the classic NEXTSTEP user interface and styles. OPENSTEP/Mach was further improved, in comparison to NEXTSTEP 3.3, with vastly improved driver support – however the environment to actually write drivers was changed with the introduction of the object-oriented DriverKit.
OPENSTEP/Mach supported Intel x86, Sun's SPARC and NeXT's own Motorola based 68k architectures, while the HP PA-RISC version was dropped. These versions continued to run on the underlying Mach-based OS used in NEXTSTEP. OPENSTEP/Mach became NeXT's primary OS from 1995 on, and was used mainly on the Intel platform. In addition to being a complete OpenStep implementation, the system was delivered with a complete set of NEXTSTEP libraries for backward compatibility. This was an easy thing to do in OpenStep due to library versioning, and OPENSTEP did not suffer in bloat because of it.
In addition to the OPENSTEP/Mach port for SPARC, Sun and NeXT developed an OpenStep compliant set of frameworks to run on Sun's Solaris operating system. After developing OPENSTEP Solaris, Sun lost interest in OpenStep and shifted its attention toward Java. As a virtual machine development environment, Java served as a direct competitor to OpenStep.
NeXT also delivered an implementation running on top of Windows NT 4.0 called OPENSTEP Enterprise (often abbreviated OSE). This was an unintentional demonstration on the true nature of the portability of programs created under the OpenStep specification. Programs for OPENSTEP/Mach could be ported to OSE with little difficulty. This allowed their existing customer base to continue using their tools and applications, but running them inside the Windows system which many of them were in the process of switching to. Never a clean match from the UI perspective -- probably due to OPENSTEP's routing of window graphics through the Display Postscript server, which was also ported to Windows -- OSE nevertheless managed to work fairly well and allowed OpenStep to exist for perhaps another year.
OPENSTEP and OSE had two revisions (and one major one that was never released) before NeXT was purchased by Apple in 1997.
Mac OS X's primary programming environment is essentially OpenStep (with certain additions such as XML property lists and URL classes for Internet connections) with Mac OS X ports of the development libraries and tools, now called Cocoa. However, Mac OS X diverges from the OpenStep specification to the point that it is now closer to NeXTSTEP as a product. Mac OS X 10.0 could be considered NeXTSTEP 5.
Mac OS X has since become the single most popular Unix in the world, although Mac OS X is no longer an OpenStep compliant operating system.
GNUstep, a free software implementation of the NeXT libraries, began at the time of NEXTSTEP, predating OPENSTEP. While OPENSTEP and OSE were purchased by Apple, who effectively ended the commercial development of implementing OpenStep for other platforms, GNUstep is an ongoing open source project aiming to create a portable, free software implementation of the OPENSTEP libraries.
The Foundation and AppKit libraries are completed except for a few classes which are rarely used. GNUstep also features a fully functional development environment. GNUstep also features reimplementations of some of the newer innovations from Mac OS X's Cocoa framework, as well as its own extensions to the API.