NeXTstep source code leaked.

Started by spitfire, November 02, 2021, 08:46:56 PM

Previous topic - Next topic

spitfire

At least some part of the Nextstep source code has leaked. conversation on reddit says it can be found on GitHub and internet archive. I have yet to find it.

This article shows listings for part of the NeXT boot rom.
https://securitronlinux.com/debian-testing/nextstep-operating-system-source-code-has-been-leaked-this-is-pretty-cool-i-think/

As usual with someone of vital historical importance that is likely to be lost in time, people are playing coy and refusing to share.

Does anyone have a copy of it? If you do *please* share, you can bet GitHub and "securitronlinux.com" won't be archiving it for posterity.

spitfire

I found at least part of it. Seems to be the NeXT ROM source, not the entire thing.
Still this could be very useful in the future for creating alternate boot methods, CPU upgrades or kernel upgrades.

https://github.com/johnsonjh/NeXTROM

Looking around the code it's aimed at a specific 27C512 PROM chip. There's excellent detail of EG: how interrupts and keyboard IO is handled. I know that came up in the Previous thread recently.

Very useful stuff. I've mirrored it, so should you.

spitfire

https://github.com/johnsonjh?tab=repositories


I jumped the gun a bit! There's a LOT of source there. Including
NeXTDPS   - NeXT display postscript server.
NeXTDimension - next dimension rom/kernel code.
NeXTMach  - NeXT Mach kernel (not sure which version exactly)   
NeXTSrc   - Various NeXT source pieces including Appkit, GNU sources, NetInfo libNeXT, and others.
NeXTDSP   - NeXT DSP code. Midi libraries, soundkit, and others.
NeXTEmacs - NeXT version of GNU emacs.
NeXTROM.  - NeXT Firmware rom code.

With these resources - even if only looking at how to interface with undocumented things, we stand a pretty good chance of being able to modernize things quite a bit.


I've mirrored the repos locally on my system. Funnily enough my Mac has a case-insensitive file so the mirrors have a few bad files. Notes/notes, Makefile/makefile conflicting.
I'll mirror them again to a case sensitive system.

zombie

Holy crap. This is a BIG deal. I Guarantee you there are huge swaths of this code that remain unaltered in modern day macOS. A LOT of hacking is going to come out of this.

In more positive news. I got to think this could kickstart an open source version of NeXTSTEP. which I frankly would change over to without hesitation.

GNUSTEP isnt it. It stalled runs on top of all kinds of crap. I wish it would become something great, but it just hasn't.

spitfire

So I'm going turbo-nerd on these sources. In the DPS sources it looks like they have the window server sources.

Sooo... We have ROM sources - we can build new rom with updated device support. We have the mach kernel source, which we can build updated support for new devices. Finally we have the window server sources, with which we can build new video support with.

We have all the pieces to build an updated NeXT system. We could build an '060 NeXT. We could update displays with properly scaled hi-DPI displays.

I'm still looking through to find the laser printer drivers.

What I'd love to come out of this is a rebuilt Nextstep with modern GNU user-land, with modern high-res displays.

@zombie On GNUStep. It apparently fully implements the full OpenStep interface. But has to work on top of X11. We have the window server source code - we can't actually use it, but we can build our own open source version and yes build an open-source NeXTstep.

Make sure to clone locally!!

barcher174

I wish the ROM file was a newer version, but this is still really interesting. This is version 0.8.31 which is also the oldest version we have in the file archive:

http://www.nextcomputers.org/NeXTfiles/Software/ROM_Files/68030/Old_Versions/

So this will only support the original 030 cube. I was really hoping there was an 040 rom so we could change some of the default settings like headless boot. Either way I'm definitely going to play with this when I have some time.

 

pomosapien

#6
It's funny, I stumbled upon the DPS repo just yesterday while looking into porting Keith Ohlfs' terminal font. And since it appears that the font source is there, you might actually be able to build an OTF and TTF.

Notes: https://github.com/AlexHorovitz/Ohlfs-font-to-ttf-conversion/issues/1

CAUTION: FULL FRONTAL NERDITY

> What I'd love to come out of this is a rebuilt Nextstep with modern GNU user-land, with modern high-res displays.
Yah.  I've been trying to see what in today's (really, today's recollection of the past's) GNU userland is tractable; even Savannah sometimes doesn't have old-enough versions of packages at times.

> Make sure to clone locally!!
keywords: takedown-notice

Folks, please build an 060 NeXT machine.  You'll be famous.  I'll buy one.

spitfire

So I've dug into the source code a little more. It looks like it's from Nextstep 2.0 era. There are mentions of the codenames for the 040 cube, and original Nextstation/Nextstation color in various source files.

So the kernel sources probably won't be as useful as we'd like. It still gives us insight into the hardware.

Likewise the ROM files aren't directly usable. But it does tell us exactly how things were loaded, where memory is mapped, etc. This can be used to write our own boot rom. Combined with a modernized kernel with new drivers, this lets us boot from new SCSI devices (Like say, an FPGA emulating SCSI to NVMe.

An '060 NeXT is probably the least reasonable system to try and build. PiStorm with emu68 is getting 800mips performance and *far* outperforms any '060 built.

I haven't yet figured out if the window server has any major changes between 2.0 and later versions. That might be
usable as is. I'd still want to be able to change the DPI, so you can use high res screens properly scaled.

I was able to get some commands in nextsrc/cmds to compile on NS3.3. df failed with some missing headers. A lot of
this source assumes it's installed in specific places (/usr/local) and I didn't bother investigating further.


I tried compiling the kernel under NS3.3. NeXTMach/mk/108.1/stand (the bare unix kernel) compiled successfully, then the build failed
on fpsp. Single precision floating point? It was trying to rename a .t_o file which didn't exist, the command just before it was
 
 cc <stuff> | as <myobject>.o
 
 Emitting assembler code from cc and compiling it? Seems like an odd thing to do, but that's what it was trying to do.

So where are we right now?

We have enough source/knowledge to build an entirely open source boot rom. This will be needed for any enhanced hardware of any kind. We can test builds in Previous.

From the kernel updates thread we can run a later openstep kernel on earlier NS 3.3, I'm not sure how much work is
 involved in backporting Darwin 0.1 to M68K and NS. So for now assume we don't have a kernel to play with.

We may have a display postscript/window server we can update. So higher resolution displays are possible. The current
code is missing color driver, though 24bit color support does seem to be there. I did find one neat thing in the documentation for the window server:

<< we may need to mention that rendering high-resolution bitmaps (>400 dpi under the current contract, probably greater than 900 dpi under the revised contract) may be contrary to the terms of the software license. >>


pomosapien

> An '060 NeXT is probably the least reasonable system to try and build. PiStorm with emu68 is getting 800mips performance and *far* outperforms any '060 built.

Yeah, subsequently saw the thread about Pistorm, much more compelling.

Rob Blessin Black Hole

Rob Blessin President computerpowwow ebay  [email protected] http://www.blackholeinc.com
303-741-9998 Serving the NeXT Community  since 2/9/93

tomaz

Very interesting. I, too, have been waiting for GnuStep to become a viable replacement for NeXTstep/OpenStep/MacOSX, and it never does. Considering how many decades it's been in development, I doubt it ever will.

Sergii Stoian has been building something on top of GnuStep (a fork?) called NextSpace which he seemed to try to make more faithful to the original Next philosophy. It runs on Fedora. I think so far it doesn't support many applications, but those it does seem to be pretty good. However, I've never succeeded in getting it to work on my machines.

I have gone off Apple completely. I use Mac OS X 10.4 and 10.6. I won't use more modern versions. 10.6 is OK, it does a number of things NeXTstep and OpenStep didn't do, but it also lacks a number of their features I liked and miss, and also I don't like the design of Mac OS X at all, NextStep was much more carefully thought out.

Linux is excellent for CLI stuff but its GUI is horribly clunky. Its GUI development tools are antediluvian and the various software it runs does not work together like NeXT software does because it's designed in the 1980's pre-NeXT ways. I used FreeBSD and modern Solaris only very little, I guess they are comparable to Linux.

More than 20 years after NeXT ceased to exist as an independent entity and instead of having software which is light years beyond NeXT, we still have no platform which comes close to the quality of NeXT products.

It would be very interesting to do something with this. I see two potential problems

- there could be legal issues with any software developed on the basis of this. I'm not sure what stance Apple legal would take. But I guess inferring the architecture and e.g. the specification of the Display Postscript server, the NXHost protocol etc. but without using any of the code would be OK and could result in useful things? Certainly reading the source code would be intellectually very interesting.

- I've been very interested in developing some system which replicates NeXT, but I have found it very hard to find as much time as I would like to dedicate to this. Largely because I've not seen actually ending up with a complete implementation of a system I can use on a day to day basis as a realistic prospect. Projects which have tried (GnuStep) have failed. It's difficult for enthusiasts doing in their spare time to succeed in replicating what a well-funded 500-person company once did. Perhaps this source code will make it possible to actually produce a modern system which replicates NeXT and is usable as a main computer - making it more worthwhile to dedicate time to it?

I don't trust modern hardware. Modern Intel CPUs have the Intel Management Engine. AMD's have AMD Secure Technology. I'd most like to see a new NeXTstep run on hardware more modern than the 68040 but either hardware which is open-source or not so modern that you don't know how (or on whose behalf) your CPU is spying on you.

I don't think it matters too much that the source code is not of the most recent versions. The most interesting thing will be understanding the architecture, which I suspect is broadly the same across the different versions of NextStep. Extending the feature set is less difficult, and to produce a modern version, will in any case be required to add features not present in any of the original versions?

zombie

Yea, I think as long as people look at the code, do not copy it, and make their own version of it, they could be ok with regard to not infringing copyrights.

The good news is any patents that were underlying the code have likely all lapsed as patents generally last 20 years, and we are now beyond that.

I dont know who has the time, capability and inclination to take on such a project. But I'm fairly certain an open source 060 super fast chip, coupled with a clean and fast running NeXTstep would build a pretty big following.

Ingo

Great find spitfire,
for people with old browsers having trouble to get all files in one zip file (like myself) and don't want to install git, add "/zipball/master/" to the address like this:

https://github.com/johnsonjh/NeXTSrc/zipball/master/

As pointed out by spitfire, there are files in the archives named like this:

NeXTDPS-a60377a/pr-42/transcript/lib/ditroff.font/AG.map
NeXTDPS-a60377a/pr-42/transcript/lib/ditroff.font/aG.map
NeXTDPS-a60377a/pr-42/transcript/lib/ditroff.font/Ag.map
NeXTDPS-a60377a/pr-42/transcript/lib/ditroff.font/ag.map

The GUI version of unzip in Mac OS X 10.5 will silently overwrite the first three files with the last one,
it's best to unzip them in Nextstep/Openstep.



bheron

Quote from: zombie on November 02, 2021, 09:30:50 PMHoly crap. This is a BIG deal. I Guarantee you there are huge swaths of this code that remain unaltered in modern day macOS. A LOT of hacking is going to come out of this.

In more positive news. I got to think this could kickstart an open source version of NeXTSTEP. which I frankly would change over to without hesitation.

GNUSTEP isnt it. It stalled runs on top of all kinds of crap. I wish it would become something great, but it just hasn't.

Stalled since when?  Have you looked at our repositories on github?   Just FYI they have been here for the last 11 years... https://github.com/gnustep

I really get amused by people who spout this kind of BS without knowing what the are talking about in the smallest bit.   GNUstep is approaching compatibility with Catalina and later releases (as the APIs haven't changed much since Catalina).

Don't reinvent the wheel.  SMDH.

GC - GNUstep Lead Maintainer
---
Gregory John Casamento
GNUstep Lead Developer

bheron

Quote from: spitfire on November 02, 2021, 10:18:12 PMSo I'm going turbo-nerd on these sources. In the DPS sources it looks like they have the window server sources.

Sooo... We have ROM sources - we can build new rom with updated device support. We have the mach kernel source, which we can build updated support for new devices. Finally we have the window server sources, with which we can build new video support with.

We have all the pieces to build an updated NeXT system. We could build an '060 NeXT. We could update displays with properly scaled hi-DPI displays.

I'm still looking through to find the laser printer drivers.

What I'd love to come out of this is a rebuilt Nextstep with modern GNU user-land, with modern high-res displays.

@zombie On GNUStep. It apparently fully implements the full OpenStep interface. But has to work on top of X11. We have the window server source code - we can't actually use it, but we can build our own open source version and yes build an open-source NeXTstep.

Make sure to clone locally!!


Yet again, someone whose information is woefully wrong or out of date...  come on people, look at things before making these uninformed judgments.

Your assertion about it NEEDING X11 is dead wrong.  Please take a look at libs-back.  This library is an abstraction of the windowing and events logic so that it can be implemented on other platforms.   We currently work on Windows, Linux, NetBSD, etc.   On Windows the backend is GDI+ and on Linux and *BSD, it's X11.  It is designed so that it can be implemented on top of any windowing and event system precisely so we are NOT tied to a given windowing system.  This was done 20 years ago.

GNUstep is also themeable so that it blends in with the native OS or environment.   We currently are the basis of a number of leading commercial products....  One of the most prominent is this... https://www.eggplantsoftware.com/.   Eggplant is used by large companies including Ratheon, NASA, IBM, VMWare, etc.... the list goes on.

I am currently working at keysight so I work on GNUstep all day every single day.   We are FAR from dead even though some people seem to wish we were. :/

GC -- GNUstep Lead Maintainer
---
Gregory John Casamento
GNUstep Lead Developer