First, to put this into perspective: Microsoft's turnover is smaller than IBM's profit in their banking sector. Contrast this to how Microsoft got off the ground: with a $50,000 license deal with IBM, for MSDOS.
Originally, Mr Bill bought QDOS - Quick and Dirty Operating System - in the days when CP/M Rocked The World; Xerox didn't know what to do with their new pointy-clicky thing; Steve Jobs was doing a new thing to replace fruit machines (and incidentally was offering some bored Xerox employees a new career incentive).
IBM, the biggest and still the biggest software company in the world, was leading with its hardware (and still leading, to the detriment of the software teams, who had to put up with being told what to put up with).
They'd just brought out a radical new system, called a Personal Computer. Trouble was, they had nothing to run on it (Basic. Yeahright) so they needed an Operating System.
So, they approached the designer of CP/M, to ask him if he'd like to put his OS on their new design. Trouble was, he was up flying his Microlite (no mobile phones, remember?). To make matters worse, his flunkies didn't have authorisation to sign the famous "IBM one-way NDA".
They walked away.
Mr Bill got with the plot, right away, and signed on the one-way dotted line, pronto. Enter MS-DOS 2.2... [Keyboard not present: hit any key to continue]
Later on, the Macintosh Classis is released - a computer where the keyboard is optional and you get a pointy-clicky thing with it. If you want to type, you have to run the keyboard program and pointy-clickity away (so that independent survey about the use of a mouse slowing user productivity is well-founded).
Also, the Atari ST gets its famous TOS - Tramiel's Operating System. Actually, TOS was the GEM part of GEM/DOS ported to the 68,000. GEM was a competitor to Windows 1.0, and it was significantly better than Windows 1.0. Both GEM and Windows ran on the legendary IBM PC; Microsoft Write 1.0 was available for both Windows and Atari ST; and Atari even got into the PC market, right up until the 386 began to run out of steam.
So we have Microsoft developing a program runner (Windows) on top of a program runner (DOS), whilst other companies are doing more program runners (MacOS and TOS), and even more companies are doing obscure things with proper OSes such as VMS and Unix.
Windows marches inexorably on, via the real-mode to the virtual mode, but is still incapable of taking advantage of the features that decent operating systems use (virtual memory and process scheduling) because, essentially, Windows is just a Graphical Thing implementing the famous Win16 API, and DOS handles devices such as keyboard, mouse, screen, printer and... umm... that's about it, really.
TCP/IP isn't even in the picture [and when it is, it's done as a user-space WINSOCK.DLL hack]; the Internet is dismissed by Mr Bill as a waste of time; Xerox are Doing Their Thing by extending TCP - IPeXtended / SPX; Novell are ripping IPX/SPX off whilst other companies with better networking file server products actually wait for Xerox to grant them a license to use IPX/SPX...
Then something funny happens, and some coincidences occur that mark the beginning of something really quite special, and technically far-out.
Someone at DEC gets bored of being told he can't extend VMS beyond what DEC can cope with, so off Mr Dave Cutler goes to Microsoft, and he takes the entire VMS team with him.
At around the same time, Hewlett Packard acquires Apollo, and one of its co-founders quits and goes to work for Microsoft, too. Mr Paul Leach happens to be one of the key architects of NCS - Network Computing System, which becomes Network Computing Architecture. The Open Group makes a Request for Technology and Apollo had responded by submitting NCA, a very advanced RPC system, to The Open Group, and DCE/RPC is the result.
So we have the beginnings of New Technology, "NT", which was not originally intended to be a graphical operating system. The target of the six (seven) developers was eighteen months: in the end, it was 200,000 lines of code each per year, for four and a half years, but that's another story.
NT is basically the Mach Kernel (Steve Jobs, who quit Apple and formed NeXT, and GNU/Hurd now uses Mach), the VMS security model, with several sub-systems including OS/2, Win32 and POSIX as the classic sub-systems; running on top of the sub-systems is a series of DCE/RPC services; plus some programs and services that were part of the DOS and Windows suite ported to the New Technology.
Word has it that Mr Bill ordered the NT team to make NT a graphical OS, so my guess is that they simply ripped off the Windows 3.0 source code and shoved it in as a sub-system on top. What they did have to do, though, was port it from 16-bit to 32-bit, and hence Win32 was born.
Later, of course, there turn out to be bugs in the port, and also bugs fixed BY the port, and hence you got the famous Win16 and Win32 disaster area problems, compounded further by the Windows 3.1 team themselves moving to Win32 and screwing that up in Windows 95...
The important thing that comes out of this is to remember that windows is NOT an operating system, it is a GUI API; Win32 is available on several systems, including Wine; Windows 95; Windows NT; SCO/Unix and Sun's ABI (application binary interface).
Anyway: after a while, DEC got suspicious, and asked what Microsoft was up to. After a bit of a wing-ding, Microsoft announces that they are making Windows NT available on the new DEC Alpha platform, and incidentally they decide to increase DEC's bank-balance by $50mill...
Technically, the job of porting Windows NT to the DEC Alpha was very simple: the entire codebase was written in c. (Endianism only later became a problem for 64-bit platforms). With MIPs and RS/6000 also supported, one more platform is easy.
What I cannot quite comprehend is why The Open Group didn't notice about DCE/RPC. Microsoft originally approached TOG to license DCE/RPC, properly. Unfortunately, TOG's license structure was $100 per client, and because they are a foundation, they could not "do deals", due to their charter. Microsoft did the math based on their projected sales measured in millions, presumably told them where to put their charter, and just ignored the license.
Remember: DCE/RPC 1.1 is available as a 250,000 lines of code reference implementation, under the OSF 1.0 BSD-compatible license. It is DCE/RPC 1.2.2 that consists of 3.5 million lines of services on top of the 1.1 run-time libraries and services, that has the non-commercial usage source code licenses etc. etc.
The boundary between what Microsoft took from the DCE/RPC 1.1 reference implementation and the 1.2.2 codebase isn't clear: what is clear is that they renamed everything (function_name to FunctionName); called it MSRPC instead of DCE/RPC; extended DCE/RPC to support Unicode Service Location, and also added some really useful extensions to the IDL syntax (e.g. sizeis(length / 2)); added in a whole boat-load of new transports, as is possible to do according to the DCE/RPC specification; and added support for their new security / domain system, NT Domains (also according to spec).
Ironically, one of the transports that Microsoft added for DCE/RPC transparent usage - NetBIOS - is patented by IBM :)
Anyway.
Windows NT 3.1 (then 3.5) was so well designed that if a third party screen driver was unreliable and crashed, it didn't matter: you could still try and guess where to click the mouse, or use keyboard shortcuts, and basically still keep on running, or just leave the machine alone!
So, where are we: Windows NT 3.5 is basically a really good, well-designed, well-planned operating system, running sub-systems and sub-processes that don't matter if they crash; Windows 3.1 becomes Windows 95 because the NT team develop "NEWSHELL.EXE" for one of the Windows NT 3.51 betas and the '95 team get wind of it and rip it off; Linux has just got a foot in the door...
Then we get Windows NT 4.0, which is where the Windows 95 team actually helped out: by ripping off NEWSHELL.EXE they got all those stupid users to iron out some of the bugs, which makes it more reliable and mature when back-ported to Windows NT 4.0.
Unfortunately, when users complained that Windows 95 was faster than Windows NT 3.51, it was considered wise to rip out all of the user-space screen driver redirection (similar to X-windows) and to run all screen drivers in user-space.
The consequences of this action was to make it real fun to move programs outside off the top of a Windows NT 4.0 RC1 screen, and it also meant that the Citrix Team had to be hired en-masse to put Remote Destop (Terminal Server) back into Windows NT 5.0...
Perhaps it is wise at this point to mention one important fact, that becomes significant later on.
The Windows NT team and the Windows 95 team
HATE
each
other.
In my opinion, the scorn of the NT team for the 95 team is well justified. Basically, the NT team core are millionaires who haven't quit Microsoft in over a decade. Why? because they have a sense of responsibility and want to change the world.
By contrast, the Windows 95 team are Microsoftee Wanabees. They wannabe millionaires, they wannabe microsofties, they wannahave microsoft on their CV. And, eighteen months down the line, when they are burned out and overloaded, they get at least one out of three of their desires.
Consequently, with a higher staff turnover, no real incentive of committment, and with a chequered history of development, the Windows 95 codebase is, basically, a complete mess.
Now we move on to Windows NT 5.0, which was six years in development. Windows NT 5.0 added, basically, and this is not a joke, Kerberos 5.0, LDAP, some up-to-date device drivers and some management console tools.
This results, incredibly, in an increase in the codebase of a staggering FORTY million lines of code.
And yet the core services and security paradigms do not change. Sure, Microsoft extended Kerberos and LDAP to take account of the NT security model; yes they wrote some console tools to manage the shift; it doesn't really justify such a gratuitous increase in the codebase.
To Microsoft's credit, they seem to have pulled it off. by hook and by crook.
Now we have the Windows 95 team, who for a while, presumably whilst the NT team were quietly getting on with NT 5.0 development, led the way in terms of more device drivers, more devices supported, but running as VXDs that were incompatible with NT. we'll come back to this, later.
Now we have, around the time that NT 5.0 rc3 is released, a bit of a quandry. some smart alec notices that NT is trademarked - by another company called Nortel, of all things. so they decide to rename NT 5.0, and call it Windows 2000, based on NT technology.
based on New Technology technology. veeeerryyy smaaaart.
anyway.
finally, microsoft decide to do something smart: kill off Windows 95. so they take it through some death-knell releases: Windows 98; Windows Muscular Encephalophathy (whatever the damn disease is called - it's a wasting disease that make people look really lethargic and lazy but in fact they have a serious debilitating physical condition).
but, microsoft can't just sack all those weenies, so they give them something to do.
they give them...
yep!
you guessed it!
they give them a copy of the Windows NT codebase to play with. but first, due to United States Export Laws governing weapons-grade technology (munitions), they have to take out all the 128-bit stuff and all the kerberos stuff and all of the code that could be used by terrorists who are too stupid to download the source code (or don't have a telephone or an ISP).
remember, the Windows NT developers are watched closely; looked after; Microsoft thinks long-term regarding NT, and gets worth-while people green cards and BXPA licenses etc.
not so on the piss-poor-quality windows 95 group: the staff turnover is way too high to bother, so they don't.
code-named chicago, the windows 95 weenies get a copy of NT to play with, minus all of the critical windows 2000 Kerberos / Domain services that really make windows 2000 useful and manageable.
so what do the weenies focus on? fonts, graphics, making it idiot-proof (viz, user-hostile), and this weird XML trash called dot net.
oh, and of course, making all the useful programs that run on it need an internet connection to register that they're here, alive and running.
remember, it was one of the Windows 95 betas that started shipping out the directory listing of the hard drive off to a remote site from a C2 certified location. the only reason it was noticed was because the location took their C2 certification REALLY seriously, and had someone employed full-time to watch the network traffic coming in and out of that lab and slap blocks on any suspicious activity.
ahhh, such is life...