First off, sharing my work with the world feels so incredibly rewarding.

Started by onionmixer, Sep 19, 2026, 05:22 AM

Previous topic - Next topic

onionmixer

https://github.com/gnustep/libs-gui/pull/941

Hmm... this was actually something I planned to cover separately in a future video about OPENSTEP... but since today is a personally joyous occasion (?), I thought I'd write a bit of a longer post. I'm planning to share a bit of history about OPENSTEP along with it... so please bear with me if some of the content feels a little unfamiliar!

Objective-C, which was heavily influenced by Smalltalk, and NeXTSTEP, the very first OS to adopt Objective-C as its primary system language, even used the multi-column list view from Smalltalk's object browser in its file manager interface. For someone like me who was always fascinated by the mystical programming language (and environment, and OS) that is Smalltalk... maybe it was only natural—almost like destiny—that I'd fall in love with NeXTSTEP and OPENSTEP.

While NeXTSTEP itself was strictly viewed as an OS, during the OPENSTEP era, the concepts were split into OPENSTEP as an Operating System and OpenStep as a Framework Specification (to be precise, you have to be mindful of the capitalization). So while the OS itself was the core focus before, OPENSTEP shifted toward becoming a foundation to run the Framework. Because of this, there are a few aspects of OPENSTEP that only become visible once you understand its history. To break them down...

* OPENSTEP for Mach
* OPENSTEP for Intel
* OPENSTEP for SPARC

Up to this point, these represent OPENSTEP as an OS. Next are the implementations as a Framework:

* OPENSTEP for Windows (targeting WinNT 4.0)
* OPENSTEP for Solaris (targeting SunOS 2.7 / Solaris 7)

These were basically the OPENSTEP Framework spec overlaid on top of other operating systems... In modern Linux terms, think of it like GNOME for Windows or KDE for Windows. As a side note, "OPENSTEP for Windows" didn't feature a dedicated desktop UI... it was primarily provided as an environment to run WebObjects—OPENSTEP's signature WAS (Web Application Server)—on Windows.

Anyway!!!! Based on these OPENSTEP framework specification documents, an open-source initiative was born: "Let's build an open-source implementation of this!" That project is GNUSTEP. Desktop projects built on top of GNUSTEP include Étoilé and NEXTSPACE, and there are even GNUSTEP-based Linux distributions released on a regular basis. It's a project that is still actively alive today.

Recently, I created a project called `nibmaker` to parse `.nib` files—the UI layout files used by OPENSTEP's Interface Builder—on Linux. I shared a post about it on the Reddit r/gnustep community. And that led directly to the result in the first link above! At the very bottom of that thread, someone left this comment:

"So, after 25-30 years, GNUstep can finally read OPENSTEP nibs. :) It's a sight to behold. This is NeXTGo's original nib from OPENSTEP4.2 in Gorm. This is a new feature, so it won't be included in the upcoming release in October, but the work was interesting and I learned a great deal."

How should I put it... For so long, I felt like I lacked the skills, so I could only watch from afar, just hoping that someday I could contribute something meaningful to GNUSTEP... To know that code I worked on—even if built with AI assistance—could serve as a stepping stone for the GNUstep community... honestly, I feel like I just checked off one of the biggest items on my lifelong bucket list.

Man... I feel insanely good today... Seriously. It feels like placing a tiny grain of sand onto something I've admired since I was a kid... If a fan successfully meets their favorite celebrity, I imagine it must feel something like this! :D

Rhetorica

I'm really glad that you managed to shake Greg into looking at your work! I've tried to get him to come hang out with us but I have not yet had any success in this regard. I hope @spitfire also pays attention to this development; he has been working on an AI-based pipeline to automate converting NeXT binaries into GNUstep source code, but was hung up on NIB parsing for a long time. Seeing that NIBMAKER resulted in a functional implementation of an importer in Gorm should bring an end to his suffering!

And now an extremely tangential rant...

To my knowledge NeXT never used the names "OPENSTEP for Intel" or "OPENSTEP for SPARC" in any official documentation. These were, after all, different combinations of thinned binaries, drivers, and bootloaders that all came from the same install CD. It is possible that it appeared in marketing material, presentations, or interviews as shorthand, but by the time NEXTSTEP was renamed to OPENSTEP for Mach in September 1995, NEXTSTEP had already been shipping on Intel for two and a half years (NEXTSTEP 3.1 m68k+i386 mastered 1993/04/30) and on SPARC for half a year (NEXTSTEP 3.3.47 RISC sparc+hppa mastered 1995/02/15). So, these ports were simply part of the "OPENSTEP for Mach" family, just like they were part of the "NEXTSTEP" family before that.

The full name of the Windows version of OPENSTEP was actually OPENSTEP Enterprise for Windows; in this time period NeXT was at the forefront of pandering to big businesses by calling their products "Enterprise." Other products in the same family included WebObjects, Portable Distributed Objects, and Enterprise Objects. To translate these weird names into modern language:

  • WebObjects (1996-2008) was a server-side Objective-C programming environment for WWW applications. It was a contemporary of Sun's server-side Java and CGI (which was a generic interface but originally envisioned as using C programs for the same purpose—yikes.) It lost out in the market to Microsoft's ASP (which was basically Visual Basic) and more importantly PHP, which is the only language of the bunch that sees any use these days, even though it is looking increasingly dated. The WebObjects CD-ROM actually came with a full copy of the Apache web server, which... was really disappointing when I discovered it. First version was numbered 3.0. WO is responsible for one of the most infuriating installations of all time: WebObjects 3.5 smears Apple logos all over InterfaceBuilder on OPENSTEP 4.2. Yuck!
  • PDO consisted of all the Objective-C and Mach message passing magic from NEXTSTEP turned into a self-contained daemon that could run on other machines. Steve Jobs famously boasted that running it on Windows with OLE integration meant that NeXT was shipping a Windows RPC mechanism before Microsoft, which was rather funny. It was a lobotomized version of NEXTSTEP 3's DataLinks, which could be used to dynamically exchange and update shared documents across a network, a feature that wouldn't become widespread until Google Docs reintroduced it 10+ years later. Unfortunately DataLinks were too closely tied to underlying data (a cardinal sin in the church of Smalltalk) and were jettisoned from the OpenStep standard. Today, Apple discourages using Distributed Objects because they were designed without any security considerations. PDO may have shipped on OSF/1 (Digital Unix); it was promised but there is scant evidence of it.
  • Enterprise Objects was just a bunch of connectors for popular commercial RDBMSes. It hid all the SQL and provided a bunch of interfaces for manipulating data—both high-end spreadsheet-like matrix widgets and administrator programs for database design. We might recognize phpMyAdmin as a version of this last part, for the extremely impoverished. Notably it tried to be language-neutral and had bindings for both ObjC and Java.

The truly wild thing is these products were more widely ported than one would normally assume; they were ported to HP/UX and Solaris before OpenStep for Solaris and OPENSTEP Enterprise for Windows. On HP/UX and Solaris, they "lived off the land" by using the OS's own POSIX binaries as much as possible, while on Windows, OSE was necessary to support them. The WebObjects 3.5 CD has all of these at once (Mach, OSE for Windows, HP/UX, and Solaris) and will also install OPENSTEP for Windows, which it calls "Yellow Box."

There's a lot more to be said about the merger—initially, Apple planned to keep using the OpenStep name and said they were committed to selling and supporting OpenStep on its four existing platforms. Rhapsody DR1 even ships with a new sticky notes app written by Apple Cork (Ireland) that calls itself "Sticky Notes for OpenStep." It was only after Steve Jobs became the CEO that the OpenStep name started to disappear, most likely because Sun would not stop backstabbing them: they poached and killed Lighthouse (makers of a very important office application suite for NeXT computers) and discontinued OpenStep for Solaris after a single release. Ultimately this rivalry did Sun no favors, though, and they have been enslaved by Larry Ellison for 16 years now...

There were always rumors of an OpenStep port to classic Mac OS, but by the time this would have made sense as a product strategy, Rhapsody was the cheaper and better option for development. Of course, the ultimate odd duck will always be NextStep for AIX.
WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

ZombiePhysicist


ZombiePhysicist

Quote from: Rhetorica on Sep 19, 2026, 10:18 AMAnd now an extremely tangential rant...


@Rhetorica I think you should also put the above in this thread here:

https://nextcommunity.net/forums/index.php?msg=268

onionmixer

Quote from: Rhetorica on Sep 19, 2026, 10:18 AMI'm really glad that you managed to shake Greg into looking at your work! I've tried to get him to come hang out with us but I have not yet had any success in this regard. I hope @spitfire also pays attention to this development; he has been working on an AI-based pipeline to automate converting NeXT binaries into GNUstep source code, but was hung up on NIB parsing for a long time. Seeing that NIBMAKER resulted in a functional implementation of an importer in Gorm should bring an end to his suffering!

And now an extremely tangential rant...

To my knowledge NeXT never used the names "OPENSTEP for Intel" or "OPENSTEP for SPARC" in any official documentation. These were, after all, different combinations of thinned binaries, drivers, and bootloaders that all came from the same install CD. It is possible that it appeared in marketing material, presentations, or interviews as shorthand, but by the time NEXTSTEP was renamed to OPENSTEP for Mach in September 1995, NEXTSTEP had already been shipping on Intel for two and a half years (NEXTSTEP 3.1 m68k+i386 mastered 1993/04/30) and on SPARC for half a year (NEXTSTEP 3.3.47 RISC sparc+hppa mastered 1995/02/15). So, these ports were simply part of the "OPENSTEP for Mach" family, just like they were part of the "NEXTSTEP" family before that.

The full name of the Windows version of OPENSTEP was actually OPENSTEP Enterprise for Windows; in this time period NeXT was at the forefront of pandering to big businesses by calling their products "Enterprise." Other products in the same family included WebObjects, Portable Distributed Objects, and Enterprise Objects. To translate these weird names into modern language:

  • WebObjects (1996-2008) was a server-side Objective-C programming environment for WWW applications. It was a contemporary of Sun's server-side Java and CGI (which was a generic interface but originally envisioned as using C programs for the same purpose—yikes.) It lost out in the market to Microsoft's ASP (which was basically Visual Basic) and more importantly PHP, which is the only language of the bunch that sees any use these days, even though it is looking increasingly dated. The WebObjects CD-ROM actually came with a full copy of the Apache web server, which... was really disappointing when I discovered it. First version was numbered 3.0. WO is responsible for one of the most infuriating installations of all time: WebObjects 3.5 smears Apple logos all over InterfaceBuilder on OPENSTEP 4.2. Yuck!
  • PDO consisted of all the Objective-C and Mach message passing magic from NEXTSTEP turned into a self-contained daemon that could run on other machines. Steve Jobs famously boasted that running it on Windows with OLE integration meant that NeXT was shipping a Windows RPC mechanism before Microsoft, which was rather funny. It was a lobotomized version of NEXTSTEP 3's DataLinks, which could be used to dynamically exchange and update shared documents across a network, a feature that wouldn't become widespread until Google Docs reintroduced it 10+ years later. Unfortunately DataLinks were too closely tied to underlying data (a cardinal sin in the church of Smalltalk) and were jettisoned from the OpenStep standard. Today, Apple discourages using Distributed Objects because they were designed without any security considerations. PDO may have shipped on OSF/1 (Digital Unix); it was promised but there is scant evidence of it.
  • Enterprise Objects was just a bunch of connectors for popular commercial RDBMSes. It hid all the SQL and provided a bunch of interfaces for manipulating data—both high-end spreadsheet-like matrix widgets and administrator programs for database design. We might recognize phpMyAdmin as a version of this last part, for the extremely impoverished. Notably it tried to be language-neutral and had bindings for both ObjC and Java.

The truly wild thing is these products were more widely ported than one would normally assume; they were ported to HP/UX and Solaris before OpenStep for Solaris and OPENSTEP Enterprise for Windows. On HP/UX and Solaris, they "lived off the land" by using the OS's own POSIX binaries as much as possible, while on Windows, OSE was necessary to support them. The WebObjects 3.5 CD has all of these at once (Mach, OSE for Windows, HP/UX, and Solaris) and will also install OPENSTEP for Windows, which it calls "Yellow Box."

There's a lot more to be said about the merger—initially, Apple planned to keep using the OpenStep name and said they were committed to selling and supporting OpenStep on its four existing platforms. Rhapsody DR1 even ships with a new sticky notes app written by Apple Cork (Ireland) that calls itself "Sticky Notes for OpenStep." It was only after Steve Jobs became the CEO that the OpenStep name started to disappear, most likely because Sun would not stop backstabbing them: they poached and killed Lighthouse (makers of a very important office application suite for NeXT computers) and discontinued OpenStep for Solaris after a single release. Ultimately this rivalry did Sun no favors, though, and they have been enslaved by Larry Ellison for 16 years now...

There were always rumors of an OpenStep port to classic Mac OS, but by the time this would have made sense as a product strategy, Rhapsody was the cheaper and better option for development. Of course, the ultimate odd duck will always be NextStep for AIX.

I actually didn't contribute anything directly to GNUstep. Greg just did a great job on his own. I only like to think that I provided a tiny hint for his work. I just don't want to risk being overcredited, nor do I want any misunderstandings with Greg.

On a side note... after posting, I had an 'Aha!' moment regarding OPENSTEP for Enterprise. Thank you so much for sharing all the other interesting information as well.

P.S. By any chance, do you happen to have WebObjects 3.5.1? Starting from version 4.0, it switched to Java, which honestly just feels like any ordinary Java WAS to me, so I don't care for it as much... But 3.5.1 is particularly fascinating to me as a stepping stone or bridge transitioning from the C-CGI era into the next generation. It really piques my interest.

Rhetorica

Quote from: onionmixer on Sep 21, 2026, 01:44 AMP.S. By any chance, do you happen to have WebObjects 3.5.1? Starting from version 4.0, it switched to Java, which honestly just feels like any ordinary Java WAS to me, so I don't care for it as much... But 3.5.1 is particularly fascinating to me as a stepping stone or bridge transitioning from the C-CGI era into the next generation. It really piques my interest.
Yes, you can snag it here. Be warned, though: install it on a separate copy of OPENSTEP. I think it broke Project Builder for me; nothing would compile. (Although my compiler was already pretty trashed at that point, so I could be wrong about that...) Also it has Apple logos in the Info Panel, which some may find deeply upsetting.
WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

onionmixer

I don't mind it at all. Thank you so much! :D