Moxnox 1.0: NT-Like, POSIX-Compatible OS Running Atop Btrfs
github.com> Also, the NT kernel is criminally underrated, and pretty much unknown to hobbyists. It had features that Linux took years and years to come up with its own design for...
A person after my own heart. NT was actually designed, versus being a reimplementation of an existing thing.
I was curious about this a couple of years ago and ended up digging into the history of the NT design, comparing it to contemporary Unix systems, and writing this: https://jmmv.dev/2024/09/windows-nt-vs-unix-design.html . Pretty enlightening exercise.
Great article… but no mention of one of NT’s best features: completion ports! It ties together all the best features of the NT kernel and makes writing performant multi-threaded I/O applications (especially socket servers) a delight. The thread pool APIs introduced in Vista (which use completion ports under the hood) were also a sublime addition. https://pyparallel.org was possible to hack into existence over the course of about 3 months thanks to all these powerful primitives.
Great read. It reminded me of a talk I attended in Amsterdam by Mark Russinovich.
Windows and Linux: A Tale of Two Kernels - Tech-Ed 2004
I have heard that the 2nd edition of Inside Windows NT is much more informative than the 1st.
Too bad for all the horrible misfeatures that got designed in and that we still have to live with, like the entire I/O Manager/Object Manager/filters/driver stack mess, with no caching anywhere above the drivers.
NT was criminally underrated by Microsoft.
Far too many features required 3rd party tooling to access, or were buried within menus of menus. Then were slowly either duplicated or replaced with half baked solutions.
Microsoft never built the cheap, CLI-only version of NT that would have given Linux a run for its money. It would have helped preserve some of the hacker mindshare they once had with DOS.
Doing that would open them to the possibility of a competing stack that could push out the default Windows one, similar to a different Linux distro. Also, they wouldn't be able to be kings of the system and force whatever they want onto you, because you could then switch away to a different NT-based distro. They just wanted the hackers to go away, it's simpler for them.
The closest they ever got to a 'nothing' NT was something like Windows Core or Factory/Validation OS. They still ship with some windowing capabilities, but they could strip them out if they wanted to, because there is a barebones text-only mode in Windows. Of course, all these editions are or were tightly regulated and only issued to big businesses who are supposed to have them, it's nothing that a Linux user would want.
A fever dream of mine is a "distribution" of NT that ships with the Interix subsystem and boots to text mode (or serial console) by default.
Windows Nano Server nearly was that although wasnt cheaper.
I'm fairly vague about post-1990s Microsoft products, but wasn't Windows 2008 exactly that?
No GUI, with admin through Powershell, remote MMC snap-ins, or the SCUM/SCOM automation stuff. The managed hosting company I worked for around 2010 used it fairly heavily, and it didn't seem much worse to admin than the CFEngine / Puppet type tooling we had for Linux at the time.
Server Core is sort of that. The GUI is still there. You can run full Win32 GUI programs if you bring over the dependencies. There's less bots there but it's not analogous to a lightweight Linux distro that has no windowing environment.
It sure looks a lot like VMS to me...
It does, and for reason I'm assuming many already know why. But if you weren't joking and were living under a rock. Look up the guy, Dave Cutler, who were mostly responsible putting together both.
Youtube has many of his interviews. The Computer History Museum (CHM) two part is perhaps most extensive. Links below to these.https://en.wikipedia.org/wiki/Dave_Cutlerhttps://www.youtube.com/watch?v=29RkHH-psrY https://www.youtube.com/watch?v=SVgSLud50ss
> NT was actually designed, versus being a reimplementation of an existing thing.
Well, yes, it was designed and it also was a reimplementation of an existing thing, this being VMS. Since it was designed by the designer of VMS (Dave Cutler) it would be comparable to the fictional ThoRix which would be a new OS designed by Thomson and Ritchie after they did Unix.
> Well, yes, it was designed and it also was a reimplementation of an existing thing, this being VMS.
My nitpick with the "reimplementation of VMS" statement would be that it didn't target source portability of VMS applications like Linux (and the GNU C library running on top of it) does with Unix/POSIX applications. I see it as Cutler and his team taking lessons learned from VMS and building something new incorporating those lessons in a different requirements framework.
oh, but a unix successor from bell labs is entirely real, it's called unix (v8+).
more seriously, it's called plan9.
Kudos for not being another UNIX clone.
However Windows NT originally was already POSIXy, what it lacked all these years was Microsoft being serious about POSIX subsystem, had that been the case, probably Linux would never taken off among PC, the same experience as OS X would be there in 1993.
The acquisition of OpenNT / Interix / Services for Unix (SFU) gave MSFT a really solid POSIX compatibility offering but it was too late-- Linux was already ascendant by that time. The no cost nature of Linux, as compared to the per-client client licensing for server versions of NT, can't be understated, though.
Indeed, Linux only became interesting to me on 1995's Summer, because getting that Linux Unleashed book with Slackware 2.0 CD was the route to easier homework assignments.
I had no way to do proper POSIX development at home with the Windows NT limitations, and access to the university labs running a mix of DG/UX and Solaris servers was rather limited.
Hard file locking makes Windows Update into agony.
I can see the 70s motivation for it, but it is a terrible burden in modern times.
Hopefully is is not implemented here.
I was looking for that line:
> The contract is that the syscalls and low-level interfaces match those of NT, but not the daemons or how the kernel itself is structured. This is in contrast to what ReactOS aims to do, which is an exact recreation of Windows.
So.. Why NT? Is it fast? Is it secure? Does it allow modern features? Is it hackable? Or why?
> None of the substantive code was written by AI.
That is impressive
IMHO this is one of the OSes with the weirdest decisions I've seen on here. I do agree with using PE instead of ELF, as the dynamic linking situation of the latter (and Unix-likes in general) is, to put it bluntly, a horrid mess.
The POSIX functions are split over ucrtbase, iphlpapi, and ws2_32, as on Windows, with anything that Windows doesn't implement put in mnposix.
LOL. POSIX in ucrtbase! Those are words that I never expected to see together.
I used AI to help with the mechanical parts of porting
I feel like it won't be long before someone comes up with a crazy chimera of an OS that can run DOS, Windows, Linux, BSD, and macOS binaries. It doesn't look like AI is replacing software developers, but rather boosting them quite significantly; there seems to be a lot of activity and new projects I've seen recently from many who aren't even using AI themselves, but must be somehow being inspired by others to do more.
As historical note, not all UNIXes use ELF, not only that came later in UNIX and related clones evolution, some of them like z/UNIX and Aix have gone for a PE like format, COFF.
So in those platforms you can also enjoy having private symbols by default, delayed loading on first call, and the joy of import files.
> it won't be long before someone comes up with a crazy chimera of an OS that can run DOS, Windows, Linux, BSD, and macOS binaries
TBF, the only missing part of this is that Darling isn't developed enough to run many Darwin programs; otherwise you can have that today by installing WINE+DOSBox+Darling on Linux or your pick of *BSD or illumos. (Well, running *BSD programs on other systems is a weak point, but otherwise.)
>LOL. POSIX in ucrtbase! Those are words that I never expected to see together.
There's nothing in Moxnox ucrtbase that's not also in Windows ucrtbase. open(), read(), and write() are all POSIX functions in ucrtbase.