Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
OpenStep
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{More citations needed|date=March 2023}} {{Short description|Defunct object-oriented application programming interface specification}} {{Infobox software | logo = NeXT logo.svg | screenshot = | caption = OPENSTEP's desktop and Workspace Manager | collapsible = | author = | developer = [[NeXT]], [[Sun Microsystems]] | released = {{Start date and age|1994|10|19}} | discontinued = | latest release version = | latest release date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | latest preview version = | latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | programming language = [[Objective-C]] | operating system = [[Solaris (operating system)|Solaris]]; [[Windows NT]]; [[Unix-like]] operating systems with the [[Mach (kernel)|Mach]] kernel | platform = [[IA-32]], [[PA-RISC]], [[SPARC]] | size = | language = English | genre = [[Application programming interface]] | license = | website = {{URL|http://www.gnustep.org/resources/OpenStepSpec/OpenStepSpec.html}} }} '''OpenStep''' is an [[object-oriented]] [[application programming interface]] (API) specification developed by [[NeXT]]. It provides a framework for building [[graphical user interface]]s (GUIs) and developing software applications. OpenStep was designed to be platform-independent, allowing developers to write code that could run on multiple operating systems, including [[NeXTSTEP]], [[Windows NT]], and various [[Unix]]-based systems. It has influenced the development of other GUI frameworks, such as [[Cocoa (API)|Cocoa]] for macOS, and [[GNUstep]]. OpenStep was principally developed by NeXT and [[Sun Microsystems]], to allow advanced application development on Sun's operating systems, specifically [[Solaris (operating system)|Solaris]]. NeXT produced a version of OpenStep for its own [[Mach (kernel)|Mach]]-based Unix OS, stylized in all capital letters as '''OPENSTEP'''.<ref>{{cite web |title=OPENSTEP 4.2, Intel version. Screen shots. |author-first=Nathan |author-last=Lineback |url=http://toastytech.com/guis/openstep.html |website=Toastytech.com}}</ref> The [[software libraries]] that shipped with OPENSTEP are a superset of the original OpenStep specification, including many features from the original NeXTSTEP. ==History== Workstations from [[Sun Microsystems]] were originally programmed at a relatively low-level making calls directly to the underlying [[Unix]] [[operating system]] and the [[SunView]] window system toolkit, and to libraries built atop those interfaces. This led to complex programming even for simple projects. An attempt to address this with an [[object oriented]] programming model was made in the mid-1980s with Sun's [[NeWS]] [[windowing system]], but the combination of a complex [[application programming interface]] (API) and generally poor performance led to little real-world use and the system was eventually abandoned. Sun then began looking for other options. [[Taligent]] was considered to be a competitor in the operating system and object markets, and Microsoft's [[Cairo (operating system)|Cairo]] was at least a consideration, even without any product releases from either. Taligent's theoretical newness was often compared to NeXT's older but mature and commercially established platform. Sun held exploratory meetings with Taligent before deciding upon building out its object application framework OpenStep in partnership with [[NeXT]] as a "preemptive move against Taligent and Cairo". [[Bud Tribble]], a founding designer of the [[Macintosh]] and of NeXTStep, was now SunSoft's Vice President of Object Products to lead this decision. The 1993 partnership included a $10 million investment from Sun into NeXT. The deal was described as "the first unadulterated piece of good news in the NeXT community in the last four years".<ref name="NeXTWORLD Feb 1994">{{cite interview | magazine=NeXTWORLD | date=February 1994 | page=23β24 | first=Bud | last=Tribble | interviewer=NeXTWORLD | title=Bud Tribble Explains It All | url=https://archive.org/details/nextworld-1994/ | access-date=February 10, 2019}}</ref> The basic concept was to take a cut-down version of the NeXTSTEP [[operating system]]'s object layers and adapt them to run on Sun's [[Solaris (operating system)|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 lower-level display system. Steve Jobs said "We are ahead today, but the race is far from over. ... [In 1996,] Cairo will be very close behind, and Taligent will be very far behind." Sun's CEO [[Scott McNealy]] said, "We have no insurance policy. We have made a firm one-company, one-architecture decision, not like Taligent getting a trophy spouse by signing up HP."<ref name="NeXTWORLD Feb 1994"/>{{rp|13}} The first draft of the API was published by NeXT in mid 1994. Later that year they released an OpenStep compliant version of NeXTSTEP as OPENSTEP, supported on several of their platforms as well as Sun SPARC systems. NeXT submitted the OpenStep specification to the industry's object standards bodies.<ref name="NeXTWORLD Feb 1994"/> The official OpenStep API, published in September 1994, was the first to split the API between Foundation and Application Kit and the first to use the "NS" prefix.<ref>[https://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/WhatIsCocoa/WhatIsCocoa.html#//apple_ref/doc/uid/TP40002974-CH3-SW12 Cocoa Fundamentals Guide: A Bit of History<!-- Bot generated title -->]</ref> Early versions of NeXTSTEP use an "NX" prefix and contain only the Application Kit, relying on standard Unix [[libc]] types for low-level data structures. OPENSTEP remained NeXT's primary operating system product until the company merged with [[Apple Computer]] in 1997. OPENSTEP was then combined with technologies from the existing [[classic Mac OS]] to produce [[Mac OS X]]. [[iPhone]] and [[iPad]]'s [[iOS]] is also a descendant of OPENSTEP, but targeted at touch devices. Sun originally adopted the OpenStep environment with the intent of complementing Sun's [[CORBA]]-compliant object system, [[Distributed Objects Everywhere|Solaris NEO]] (formerly known as Project DOE), by providing an object-oriented user interface toolkit to complement the object-oriented CORBA plumbing.<ref name="NeXTWORLD Feb 1994"/> 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 Builder 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 (macOS)|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 (programming language)|Java]]. Sun shipped a beta release of the OpenStep environment for Solaris on July 22, 1996,<ref name="openstep-solaris-pr">{{cite press release |title=Sun Announces Availability of Solaris OpenStep and Workshop OpenStep Beta; Meets Customer Demand For Operating System and Object-based Development Environment. |publisher=Business Wire |date=22 Jul 1996 |url=https://www.thefreelibrary.com/Sun%2BAnnounces%2BAvailability%2Bof%2BSolaris%2BOpenStep%2Band%2BWorkshop%2BOpenStep...-a018512699 |website=thefreelibrary.com |access-date=21 May 2023 |archive-url=https://web.archive.org/web/20121023071125/https://www.thefreelibrary.com/Sun+Announces+Availability+of+Solaris+OpenStep+and+Workshop+OpenStep...-a018512699 |archive-date=23 Oct 2012}}</ref> and made it freely available for download in August 1996 for non-commercial use, and for sale in September 1996. OpenStep/Solaris was shipped only for the SPARC architecture. ==Description== {{Unsourced section|date=March 2023}} OpenStep differs from NeXTSTEP in various ways: *NeXTSTEP is an operating system, whereas OpenStep is an API. *Unlike NeXTSTEP, OpenStep does not require the [[Mach kernel]]. *Each version of NeXTSTEP has a specific [[endianness]]: [[big endian]] for [[Motorola 68K]] processors, and [[little endian]] for [[x86]] processors, for example. OpenStep is "endian-free". *OpenStep introduces new [[Class (computer programming)|classes]] and [[memory management]] capabilities. The OpenStep API specification defines three major components: Foundation Kit, the [[software framework]]; [[Application Kit]], the [[GUI]] and graphics front-end; and Display PostScript, a 2D graphics system (for drawing windows and other graphics on the screen). ==Building on OpenStep== {{Unsourced section|date=March 2023}} 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 [[Standalone program|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. In the mid-1990s, 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 [[Component Object Model|COM]] objects, with the goal of allowing programmers to create COM 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 (DCOM). Another package developed on OpenStep was [[Enterprise Objects Framework]] (EOF), a [[object-relational mapping]] product. ==Implementations== {{Unsourced section|date=March 2023}} === OPENSTEP for Mach === NeXT's first operating system was [[NeXTSTEP]], a sophisticated Mach-UNIX based operating system that originally ran only on NeXT's [[Motorola 68000 family|Motorola 68k]]-based workstations and that was then ported to run on [[IA-32|32-bit Intel x86]]-based [[IBM PC compatible|"IBM-compatible" personal computers]], [[PA-RISC]]-based workstations from [[Hewlett-Packard]], and [[SPARC]]-based workstations from [[Sun Microsystems]]. NeXT completed an implementation of OpenStep on their existing Mach-based OS and called it '''OPENSTEP for Mach''' 4.0 (July, 1996), 4.1 (December, 1996), and 4.2 (January, 1997). It was, for all intents, NeXTSTEP 4.0, and still retained flagship NeXTSTEP technologies (such as [[Display PostScript|DPS]], UNIX underpinnings, user interface characteristics like the [[Dock (computing)|Dock]] and [[Shelf (computing)|Shelf]], and so on), and retained the classic NeXTSTEP user interface and styles. OPENSTEP for 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 for Mach supported Intel x86-based PC's, Sun's SPARC workstations, and NeXT's own 68k-based architectures, while the HP PA-RISC version was dropped. These versions continued to run on the underlying Mach-based OS used in NeXTSTEP. OPENSTEP for 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. ===Solaris OpenStep=== In addition to the OPENSTEP for Mach port for SPARC, Sun and NeXT developed an OpenStep compliant set of frameworks to run on Sun's [[Solaris (operating system)|Solaris]] operating system. After developing Solaris OpenStep, 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. Unlike other versions, Solaris OpenStep had Interface Builder and Project Builder sold in a separate package called Workshop OpenStep.<ref>{{cite web |title=OpenStep Development Tools - 1 Introduction |url=http://docs.sun.com/app/docs/doc/802-2110/6i63kq4s7?a=view |website=docs.sun.com |access-date=21 May 2023 |archive-url=https://web.archive.org/web/20050427180415/http://docs.sun.com/app/docs/doc/802-2110/6i63kq4s7?a=view |archive-date=27 Apr 2005 |url-status=dead}}</ref><ref name="openstep-solaris-pr" /> ===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 for 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 on Windows, to which many of them were in the process of switching. 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 extended OpenStep's commercial lifespan. OPENSTEP and OSE had two revisions (and one major one that was never released) before NeXT was purchased by Apple in 1997. ===Rhapsody, Mac OS X Server 1.0=== {{Main|Rhapsody (operating system)|Mac OS X Server 1.0|Cocoa (API)}} After acquiring NeXT, Apple intended to ship [[Rhapsody (operating system)|Rhapsody]] as a reworked version of OPENSTEP for Mach for both the Mac and standard PCs. Rhapsody was OPENSTEP for Mach with a [[Copland (operating system)|Copland]] appearance from [[Mac OS 8]] and support for Java and Apple's own technologies, including [[ColorSync]] and [[QuickTime]]; it could be regarded as OPENSTEP 5. Two developer versions of Rhapsody were released, known as Developer Preview 1 and 2; these ran on a limited subset of both Intel and PowerPC hardware. [[Mac OS X Server 1.0]] was the first commercial release of this operating system, and was delivered exclusively for PowerPC Mac hardware. ===Darwin, Mac OS X 10.0 and later=== {{Main|Darwin (operating system)|macOS}} After replacing the Display Postscript WindowServer with [[Quartz (graphics layer)|Quartz]], and responding to developers by including better backward compatibility for classic Mac OS applications through the addition of [[Carbon (API)|Carbon]], Apple released [[Mac OS X]] and [[Mac OS X Server]], starting at version 10.0; Mac OS X is now named macOS. macOS's primary programming environment is essentially OpenStep (with certain additions such as XML property lists and URL classes for Internet connections) with macOS ports of the development libraries and tools, now called [[Cocoa (API)|Cocoa]]. macOS has since become the single most popular desktop Unix-like operating system in the world, although macOS is no longer an OpenStep compliant operating system.{{citation needed|date=May 2013}} ===GNUstep=== {{Main|GNUstep}} 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 Cocoa/OPENSTEP libraries. GNUstep also features a fully functional development environment, reimplementations of some of the newer innovations from macOS's [[Cocoa (API)|Cocoa]] framework, as well as its own extensions to the API. ==See also== * [[NeXT character set]] * [[Multi-architecture binary]] ==References== {{Reflist}} ==External links== * [http://www.gnustep.org/resources/OpenStepSpec/OpenStepSpec.html OpenStep Specification] * [http://www.gnustep.org/resources/OpenStepSpec/FoundationKit/Classes/index.html List of Classes] in OpenStep specification * [https://www.levenez.com/NeXTSTEP/OpenStepSpec.pdf OPENSTEP SPECIFICATION] * {{webarchive |url=https://web.archive.org/web/20080519180132/http://docs.sun.com/app/docs/coll/116.1 |date=2008-05-19 |title=SUNs Workshop OpenStep AnswerBook}} * {{webarchive |url=https://web.archive.org/web/20041015205806/http://blogs.sun.com/roller/page/richb/20040809 |date=2004-10-15 |title=Rich Burridge's Weblog on OpenStep at SUN}} * [http://rixstep.com/2/0/ The NeXTonian] {{Webarchive|url=https://web.archive.org/web/20080512040110/http://rixstep.com/2/0/ |date=2008-05-12 }} * [http://nextcomputers.org NeXTComputers.org] * [https://github.com/itomato/lubu OpenMagic 1.0 for Sparc by Luke Th. Bullock] * {{webarchive |url=https://web.archive.org/web/20200217101832/http://mirror.macintosharchive.org/ca.cdn.preterhuman.net/mac/OpenStep-NeXTStep/ |date=2020-02-17 |title=NeXTanswers archive}} {{NeXT Computer}} {{Apple operating systems}} {{Darwin derivations}} {{DEFAULTSORT:Openstep}} [[Category:Application programming interfaces]] [[Category:Berkeley Software Distribution]] [[Category:macOS APIs]] [[Category:NeXT]] [[Category:Solaris software]] [[Category:X86 operating systems]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Apple operating systems
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite interview
(
edit
)
Template:Cite press release
(
edit
)
Template:Cite web
(
edit
)
Template:Darwin derivations
(
edit
)
Template:Infobox software
(
edit
)
Template:Main
(
edit
)
Template:More citations needed
(
edit
)
Template:NeXT Computer
(
edit
)
Template:Reflist
(
edit
)
Template:Rp
(
edit
)
Template:Short description
(
edit
)
Template:Unsourced section
(
edit
)
Template:Webarchive
(
edit
)