- cross-posted to:
- technology@beehaw.org
- programming@programming.dev
- cross-posted to:
- technology@beehaw.org
- programming@programming.dev
Nice to see a pro NT article for a change but there are some details wrong
“It’s true that Unix has attempted to shoehorn other types of non-file objects into the file system”
‘Everything is a file’ was Unix’s design principle from the very start. It wasn’t shoehorned in. It is IMO superior to NT’s object system in that everything is exposed to the user as the file system rather than hidden behind programming api’s.
Agreed.
I skimmed through the article, and see no mention of
DEC AlphaVMS, which is NT’s predecessor, which is really disappointing. Great read though, very well done.DOS and Win3.1 really have little to do with NT. A DEC Alpha team was laid off around 1990, MS hired them, and NT is the result. Mark Minasi (I think, may also have been his partner, who’s name I can’t remember) wrote an article about 1998 in Windows Magazine (NT Magazine?) about it, and broke down the components of both NT and Alpha to demonstrate the similarity.
I’ve been looking for the article for a couple years now.
Alpha was a processor. You’re thinking of VMS.
You’re right. Thanks for the reminder. Memory ain’t what it used to be.
Ah, the good old VMS. Did quite some coding on a VAX11/780. Very nice and round OS. NT was basically a VMS clone for Intel. Although I think there was an implementation for the Alpha, too.
I always thought it was that everything was a file but that everything could be interacted with as if it was a file.
I’m not a kernel dev, but I’ve read often enough that there are some places where “everything is a file” somewhat breaks down on Unix. (I think /proc and some /dev)
For an “absolutely everything is a file” system have a look at plan9, it was the intended successor to Unix, but then that got popular while plan9 stayed a research project.
I know about 3 people on earth that ever ran it in anything approaching production. Two of them still found a way to use the acme editor til LSPs took over, one is still at it.
It remains a pretty cool project you can still find people maintaining the bones of it. I think the core utils are ported and in the arch repo.
Moving down the stack, Unix systems have never been big on supporting arbitrary drivers: remember that Unix systems were typically coupled to specific machines and vendors. NT, on the other hand, intended to be an OS for “any” machine and was sold by a software company, so supporting drivers written by others was critical. As a result, NT came with the Network Driver Interface Specification (NDIS), an abstraction to support network card drivers with ease. To this day, manufacturer-supplied drivers are just not a thing on Linux, which leads to interesting contraptions like the ndiswrapper, a very popular shim in the early 2000s to be able to reuse Windows drivers for WiFi cards on Linux.
Nvidia:
It’s a wonder that someone hasn’t implemented a similar wrapper for WDDM. I suppose they’d rather force the vendors to play nicely.
Also ndisgen under FreeBSD. MS could have been nice for a difference and not broken compatibility.
Awesome read, I’m switching to NT 3.1
The big issue that the author kind of mentions is that while the kernel has all these neat features, the overlaying OS seems to use them in such a way that they’re often not effective. XP before SP1 was a security nightmare and we got lucky that blaster was not working correctly. A secure token for the processes in your session? It doesn’t really help if every process you spawn gets this token with the user being the administrator (I know this is kind of different nowadays with UAC). A very cool architecture that allows easy porting? Let’s only use it on x86. Even today, it’s big news for Windows running on ARM, which the not-by-design-portable Unices have been doing for years.
Maybe if Microsoft had allowed the kernel to be used in other operating systems - not expecting a copyleft license - the current view is that Windows Is Bad, and the NT kernel is an inseparable part of Windows. And hell, even Windows CE which did run on other devices and architectures, doesn’t use the NT kernel.
So while the design and maybe even large parts of its implementation may be good and clean, it’s Microsoft’s fault that the public perception of the NT kernel.
XP before SP1 was a security nightmare
To be fair, Linux was a security nightmare before 2000 too. Linux didn’t have ACL’s until 2002.
with the user being the administrator
No one ran as administrator as default in a corporation, nor at home if you knew anything about computers. NT even suggested creating non privileged user accounts during setup.
Let’s only use it on x86.
It’s not like they didn’t try. When NT came out it was running on Mips, Alpha, PowerPC and Itanium. It wasn’t MS’s fault everything but x86 died. They tried more than anyone to support x86 alternatives. Now that ARM is capable of more than a PocketPC, they are on ARM.
Windows CE which did run on other devices and architectures, doesn’t use the NT kernel.
CE had extremely different requirements. The OS and Apps had to run in 2MB of RAM. NT shipped on many different CPUs.
Unix? Come on, really?
What is Unix in 2024?
Unix is literally the most important operating system (specification) family on the planet. Even bigger than M$ Windows. You’ve got all the Android phones, all the Apple iPhones, macOS, FreeBSD and all the GNU/Linux distributions. Unix-like installed base is by far the largest of any on the planet.
Don’t forget… The internet basically runs on it too :D
…and Netflix… And… And… and…
This was most likely posted by a kid who just thinks Unix is “old” Linux and doesn’t understand the roots of what it actually means in terms of computing.
I haven’t yet read the article, but it may well be a comparison for which Linux, FreeBSD, Solaris can be united under the Unix umbrella as systems with monolithic kernels and similar conventions. Of course FreeBSD is much cooler than Linux and Solaris is much cooler than FreeBSD, but we get what we get.