In retrospect, MS-DOS was a rather trivial program. Sometimes I wonder why I and/or many others did not write an equivalent, even just for fun.
TurboDOS was a contemporary one - had multiprocessing (as in, you could have multiple Z80 CPU boards in a single card cage that passed messages over a bus) and was delivered as linkable objects, so you could customize the OS for your hardware (in the multi-Z80 setup, you didn't need any I/O that wasn't in the daughterboards, so in this case the tiny version of TurboDOS on the daughter boards did the message passing thing and talked to the physical serial ports, but didn't need a disk driver since the only disk was hooked to the single master board. Great (long-lost) stuff - we were building an early dialup info-service so each daughter board had multiple modems...
> Sometimes I wonder why I and/or many others did not write an equivalent, even just for fun
In a sense, every game developer back then wrote a very small real-time operating system that dealt with user input, state management, screen updates, and audio. I wrote a window server (a window-stacker would be more accurate) for the Apple II.
API quirks compatibility, legal threats, and lack of distribution into channel resellers.
FreeDOS is one such program. It comes in quite handy at times.
They did. The GNU project started in 1983.
There wasn't much of a point in writing a replacement when MS-DOS was bundled with your computer. The FreeDOS project only got started when Microsoft first announced that the then-new Windows 95 would start to move away from MS-DOS and people saw the writing on the wall.