For those who work on it, it probably is just for fun.
But Windows is, at its core, not a completely bad OS. I heard many parts of it are actually pretty well-engineered. The Windows NT kernel has pluggable subsystems, one of which is for Windows applications, but there used to be also a POSIX layer. In the kernel, almost everything is an object and can have ACLs (security descriptors). You actually do have something like Linux' /dev and /proc, it's just not exposed to the shell (you can sometimes see hard drive device paths, not legacy drive letters like C:, shine through the cracks, but mostly when there are boot problems).
Even in the shell, there are a few neat ideas. Everything is a (COM) object, and has interfaces. Applications can embed parts of the shell, e.g. explorer windows, and they can also contribute back parts, like custom places and icon types.
Of course there are layers and layers of cruft in Windows, but funnily, the older parts seem to be better engineered (especially taking to account their age, and looking over things like legacy 8.3 module names). Its a bit telling that the new Windows Runtime is actually a new version of native COM underneath, and not .NET CLR (but both are fully brigded).
I think the hardest part to emulate for ReactOS is not the old cruft, but the modern cruft. WPF for example does have a few nice ideas, but its insanely huge and complicated. And a typical windows system has like 4 different, incompatible .NET runtime libraries (.NET, Silverlight, WPF, WinRT). This is one thing I hope MS will get sorted out in the future.
Core Windows is, still, Windows NT, which was designed by Dave Cutler, who designed a number of OSes for DEC, which changed its name to Digital before it was bought by Compaq, which then merged with HP, which is its own can of worms.
Cutler designed RSX-11M, VMS, and VAXELN (a real-time OS for the VAX), which are or were all serious OSes. VMS in specific was a serious competitor to Unix; in the form of OpenVMS, running on Alpha and Itanium, it still exists.
So Windows NT is a foundation made by someone who knows OSes and OS design; in many markets (not all, not that I think my parenthetical will stop people from "correcting" me) it's the last OS family not based on a fundamentally Unix-like foundation. Having an Open Source version of that is interesting for historical reasons, if nothing else, and there's something to be said for hybrid vigor if some bright spark figures a way to port a few concepts to the rest of the OS world.
In between his work on VMS and VAXELN, and leaving for Microsoft, he was also responsible for a system called "Mica" which was intended to be a micro kernel system which supported both a Unix and VMS layer on the system, and was written in an in-house Pascal-like language called Pillar. FWIW, NT was inspired by some of the ideas they had while designing Mica.
I would agree, not read my copy for a very long time but it's very enjoyable. I think I read it at around the same time as I last read "The Soul of a New Machine" by Tracy Kidder, also a worthwhile read for some of the younger HN'ers who missed out on that era.
As surprising as this may sound, it seems OpenVMS is still under active development, even though not by HP. Even an x86-based version is on their roadmap.
The core Windows OS is actually very cool, IMO. Pity it's closed source. Some time ago, I did some research on Windows 2000 and wrote a lot of it down on the Windows 2000 Wikipedia article. I later split it to the "Architecture of Windows 2000", which interestingly (and correctly) has been renamed to "Architecture of Windows NT" [1]
What you are referring to, however, is in user mode, in the environment subsystem. There is actually a few subsystems - the one you are talking about is the POSIX subsystem. I believe it's actually still there in the latest versions (might be wrong about that).
POSIX was not. It's call SUA and I still enable it, and on w7 run Gentoo bootstrap under it. It works well enough and I even see sshd run as a service process.
Thanks, I didn't know that SUA still uses a subsystem that's different from the Win32 subsystem. However, it's a different one (Interix) from the old POSIX subsystem, as far as I know. Or does anyone know whether it shares or inherits some code from it?
No of course Windows is not bad by itself. Only people who haven't looked closely enough would say that. Windows OS just like Linux has its dark sides but also its bright sides where it shines. The Windows kernel runs extremly well on ARM Devices like Windows Phone as well.
The POSIX implementation in Windows was a shim to satisfy requirements about "POSIX compliance" when selling Windows NT. Even Microsoft tells it's not really useful:
http://msdn.microsoft.com/de-de/library/y23kc048.aspx
> WPF for example does have a few nice ideas, but its insanely huge and complicated.
I have not written Windows code in a while, and what code I touched was C/Win32 and C++/MFC. But my impression with Microsoft software has been that they seem to like doing things in an unnecessarily complicated manner, then realize it does not really work out all that well, then reinvent the wheel, but make it even more complicated than whatever they tried to replace.
But Windows is, at its core, not a completely bad OS. I heard many parts of it are actually pretty well-engineered. The Windows NT kernel has pluggable subsystems, one of which is for Windows applications, but there used to be also a POSIX layer. In the kernel, almost everything is an object and can have ACLs (security descriptors). You actually do have something like Linux' /dev and /proc, it's just not exposed to the shell (you can sometimes see hard drive device paths, not legacy drive letters like C:, shine through the cracks, but mostly when there are boot problems).
Even in the shell, there are a few neat ideas. Everything is a (COM) object, and has interfaces. Applications can embed parts of the shell, e.g. explorer windows, and they can also contribute back parts, like custom places and icon types.
Of course there are layers and layers of cruft in Windows, but funnily, the older parts seem to be better engineered (especially taking to account their age, and looking over things like legacy 8.3 module names). Its a bit telling that the new Windows Runtime is actually a new version of native COM underneath, and not .NET CLR (but both are fully brigded).
I think the hardest part to emulate for ReactOS is not the old cruft, but the modern cruft. WPF for example does have a few nice ideas, but its insanely huge and complicated. And a typical windows system has like 4 different, incompatible .NET runtime libraries (.NET, Silverlight, WPF, WinRT). This is one thing I hope MS will get sorted out in the future.