OpenStep is an open object-oriented API specification for an object-oriented operating system that uses any modern operating system as its core. Although originally built on a Mach-based Unix, versions were available on Solaris and Windows NT as well. It is important to recognize that while OpenStep is an API specification, OPENSTEP (all capitalized) is a specific implementation of this OpenStep developed by NeXT. Furthermore the OPENSTEP libraries (the libraries that shipped with the OPENSTEP operating system) are in fact a superset of the original OpenStep specification.

Table of contents
1 History
2 OPENSTEP
3 OPENSTEP Enterprise
4 Mac OS X
5 GNUStep

History

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 Obj-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 running on several of their supported platforms and rebranded it OPENSTEP. 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 MacOS to produce MacOS X.

Sun never seemed terribly interested in the product, likely a result of NIH. In fact it's somewhat unclear why they were ever interested, although it appears it was an attempt to "get in" on the object-oriented operating system market before Microsoft released its plans for the object-oriented Cairo OS (which never happened). Nevertheless they started their port to Solaris some time in 1994, and released it in 1996. When Sun started work on Java just after this point, Solaris OpenStep was never seen again.

Description

The API OpenStep contrasts with the earlier NeXTSTEP primarily in four ways:

  • OpenStep includes only the upper-level libraries and services (like Display PostScript), whereas NeXTSTEP referred to both these libraries and the operating system as well
  • removal of any code depending entirely on the Mach kernel, so that OpenStep could be run on top of any reasonably powerful operating system
  • a significant amount of effort was put into making the system "endian-free", an issue NeXT had already faced during a port of NeXTSTEP to the Intel platform
  • low-level objects such as strings were represented with C datatypes in NeXTSTEP, in OpenStep a number of new classes (NSString, NSNumber, etc.) were introduced to support endian-conversion as well as provide added functionality. This had ripple-effects throughout the API, mostly for the better. Other algorithms to deal with low-level data and general fundamental functionality such as key programming algorithms (for example implementing classes to create array structures -- NSArray, and classes to deal with the processing of files -- NSFileHandle)were changed and made device independent. This set of classes (a framework) was called the Foundation Kit, or just Foundation for short.

The API specification itself is comprised of the two main sets of object oriented classes: the GUI and graphics frontend known as the Application Kit, and the aforementioned Foundation Kit.

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, thought the method of pswraps, interfacing C code to Display PostScript, acted in an encapsulative way and could be thought of its use as being somewhat object oriented like. 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.

Building On OpenStep

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 PDO (Portable Distributed Objects). 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-90's 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 (Obj-C and the libraries), PDO applications were nevertheless considerably smaller than similar CORBA solutions, typically about 1/2 to 1/3rd 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 modelling application using D'OLE, and then call it directly from within Microsoft Excel.

Another package developed on OpenStep was EOF (Enterprise Objects Framework), 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.

OPENSTEP

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. It was, for all intents, NeXTSTEP 4.0, and still retained flagship NeXTSTEP technologies (such as DPS, UNIX underpinnings, the Dock and Shelf, and so on), and retained the classic NeXTSTEP user interface and styles. OPENSTEP 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 supported Intel x86, HP's PA-RISC and NeXT's own own Motorola based 68k architectures, while the SPARC version was dropped. Unlike the Solaris port, which ran on top of the platform's "native" OS, these versions continued to run on the underlying Mach-based OS used in NeXTSTEP. OPENSTEP 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.

OPENSTEP Enterprise

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

Since Apple has merged with NeXT, OPENSTEP has became the basis for their new operating system, Mac OS X. Mac OS X's new programming environment is essentially OpenStep (with certain Internet additions such as XML property lists) with Mac OS X ports of the development libraries and tools -- this became Cocoa. Mac OS X is essentially OPENSTEP 5/6 (an operating system named Rhapsody, with the "Classic" interface and OPENSTEP under the surface could be regarded as OPENSTEP 5). As Mac OS X, OPENSTEP managed to become the most used Unix in the world.

GNUStep

With OPENSTEP and OSE being purchased by Apple effectively ending the commercial development of implementing OpenStep for other platforms, GNUstep is an ongoing open source development to implement the OpenStep libraries to Linux/Unix based systems.

It has created a lot of work and interest, and is partially functional with its Foundation and AppKit implementations. However the Display PostScript aspect still proves to be problematic, and there has been interest in using GhostScript as the display engine – effectively "Display GhostScript"

See GNUstep for more details.