OsFree project: OS/2 Replacement
osfree.org
osfree.org
OS/2 was developed from scratch, and was not encumbered by a legacy of DOS compatibility, 16-bit applications, and drivers like Windows was. This enabled IBM to innovate radically and more quickly. The application I wrote for my client was a multi-threaded program, written paradoxically with Microsoft's Programmer Workbench, the character-based precursor to Visual Studio.
However, this freedom from legacy code also meant there were few applications available for OS/2, and the only drivers were for IBM printers. OS/2 eventually disappeared in spite of its technological superiority at the time.
IBM's development environment was called C-Set, and, despite being a 32-bit compiler, was inferior to Programmer's Workbench. For instance, after a compilation, if you double-clicked on an error message, it would open up the source code in a separate editor window, in a proportional typeface. You could not trigger a compilation from this window. You had to make your change, save & close, then go back to the compiler window. Awkward.
There was no Resource Workshop for designing dialog boxes visually. You had to write all the statements in a text editor, and wouldn't see the appearance until compiling and running the program. This slowed down development.
While debugging, I recall trying to step into the GUI part of the application code. This locked up the computer so bad we had to re-install OS/2, a tedious process requiring 22 diskettes.
The IBM documentation was so inscrutable that even for ver. 2 of OS/2, we had to refer to Microsoft's ver. 1 manuals. IBM's support gave an interesting insight into OS/2's downfall. My client had an expensive OS/2 support contract with IBM. The client contacts were two guys in the PC support section. When I required technical support to answer some obscure and specialized questions about OS/2, it didn't make sense to get these guys involved, even though they were supposed to be the only official go-between with IBM. So I called IBM with the client's authorization, and impersonated one of the support techs. After a few calls I slipped and used my name. The IBM guy was livid and tore a strip of me, saying that as an independent contractor, I had no business blah blah. Here I was just trying to get a customer up & running.
Funny side story:
They had a token ring network, and in the network room, there weren't enough physical network ports for all of the employees. Every morning someone would call the helpdesk to say their computer was couldn't access the network, I'd look at the N network cables, find one that without lights to indicate that cable was in use, unplug the inactive one, and plug in the cable of the person w/o access. It turned out on most days enough people called in sick or were on vacation that we could get everyone who needed a connection wired up :)
Anything that decided to hit the hardware directly from DOS, or did something that OS/2 didn't support in windows just crashed or had undefined behaviour.
Even windows in protected mode couldn't do all DOS things any more. Even if you dropped out of protected mode, and fiddled around too much you'd end up breaking windows when you switched back to it.
Back then you'd have all manner of weird DRM schemes which used dongles on the parallel port, not to mention manually set IRQs, I/O Ports and blocks of high mem (between 640K and 1M) where your device drivers were baked into the DOS application, NOT the operating system. There were some driver.sys type drivers for random hardware, but mostly it was just cheaper to write the driver inside the app itself.
Programming under DOS was more akin to writing to an Arduino rather than linux/windows back then.
Not quite true about the 32-bit no DOS. OS/2 1.x was a 16-bit system (although protected mode with segment selector 16MB memory) and one real-mode fullscreen DOS box. You're speaking of OS/2 2.0 which was a combined IBM and MS effort with OS/2 3.0 ultimately becoming WinNT. OS/2 2.0 even ended up having Win16 compatibility via DOS VM.
My favourite version of OS/2 was 1.3 with the SVGA driver written by an intern at IBM.
Edit: about the lack of GUI editor. My first paid OS/2 project was to write one after 2 weeks at a MS OS/2 campus.
It's all about the drivers. No OS will get seats without drivers. People always say that no OS will get seats without applications, which is also true. But because people see that problem, a big company trying to launch an OS, or a migration, will go out of their way to get the important applications.
The lack of drivers is more under the radar. So then people are shocked when their shiny new OS doesn't get uptake because too little hardware works with it.
Speaking of drivers.... didn't OS/2 drivers run at ring 1? The X86 architecture (and only a few others) support more than 2 rings of security. Most OS's don't bother using more than ring 0 for kernel and ring 3 for user space because then portability will be hamstrung. But OS/2 did not have the BSOD problem of Windows. By far the most common BSOD in the Win95 days was a 0x0E exception -- page fault in the kernel, the fault of a buggy driver that forgot to wire down a page before doing a slow I/O operation. A page fault in ring 1 is valid, and the kernel can handle it.
Apart from “hacks and glory” (which for the record is a fine justification), I don’t imagine that this project would have a lot of utility. While some old ATMs and some other legacy applications run on OS/2, I’d guess that attaining the degree of compatibility needed to satisfy those applications would be an extremely tall mountain to climb.
I think there are a lot of us who remember computing of the 1990s and early 2000s fondly as being a time where you could discover an operating system that was new or novel in some way. Combine that with the fact that computers felt less laggy, and mostly used the same UI across applications (looking at you electron), and I share the nostalgia.
I guess what I’m saying is that an OSS OS/2 is cool, and its authors should have songs sung about them, but this isn’t the right foundation to build a modern OS on.
It lent itself to being tinkered and tailored in a much more developer-friendly way than most OSes. The rexx scripting was pervasive. There were meaningful file object attributes that could be extended and used per app. The SOM model was a bit clunky but very powerful (I went on to work with its designer later in my career). It had a bunch of powerful compilers that left all the Windows competitors for dust.
And of course it looked great for a windowed GUI at the time.
To clarify my statement above about its code being a hot mess: my understanding was always that OS/2 achieved reliability through sheer force of will rather than it being built in a way that was architected to be intrinsically safe. Sort of how US nuclear subs have achieved an impressive safety record mainly due to extraordinary fastidiousness with respect to process and procedure.
I think both of these, combined with the fact that OS/2 is not a moving target anymore (unlike Windows), can make it much easier to make an open source OS/2 replacement by replacing its systems bit by bit. If anything, if you check eComStation (and i also guess Arca OS), it has a lot of newer parts than what was originally in OS/2 at all stages of the "stack" - from the bootloader, to graphics drivers, to UI, many of which seem to be open source.
TBH i think the main reason there haven't been already a working OS/2 replacement is that there doesn't seem to be enough of a technical know-how in the current community and there doesn't seem to be any new interest for it by people.
Haiku was pretty much in the same position, but the difference that somehow Haiku managed to get enough knowledgeable people on board despite BeOS being released on PC only a couple of years after OS/2 Warp. I guess the release of BeOS Personal for free helped spread it much further and OS/2 never had something like that.
Based on other free software packages, e.g. the interesting Fiasko (from the L4 family) micro kernel, one could rather see it as an example application of those.
I grumbled about this through a fair part of the 1990s. I ran Warp for a while and programmed for it as well as for Windows 3.1 and Windows NT 3.5; on the machine I had at the time there were Windows 3.1 programs that actually ran better on OS/2's compatibility layer than they did in native Windows.
I know that the Internet Archive (https://archive.org/) are always willing to host CD images for their software collection. They accept uploads from anyone, but Jason Scott (@textfiles on twitter and HN) is their software curator if you need assistance.
After graduating I moved to the US and got my first job due to my OS/2 experience. The company I worked for had a Mac/PC network bridge product (TCP was not a thing on PCs yet) and we were contracted by IBM to write LAN Server for Macintosh, basically the Mac/AppleTalk server for OS/2. Good memories.
I remember fond days of playing several MSDOS games at once under OS/2 (Elite: Frontier and Colonization, iirc) while Windows 95 failed to play any of them :)
https://www.itprotoday.com/compute-engines/windows-nt-and-vm...
Maybe if someone can think of a good reason to need OS/2 running on Azure it could happen. Maybe there's a bank somewhere with the OS/2 apps investment and enough money to throw at Microsoft (and IBM) somewhere to make it happen.
FYI you can do this today with VMware either on your own hardware, or within AWS, running ArcaOS 5 (the successor to eComStation, i.e. the maintained/supported flavor of OS/2 that lives on). Though I would be shocked if anyone has actually tried it:
https://aws.amazon.com/vmware/faqs/
https://www.arcanoae.com/wiki/arcaos/technical-specification...
The comparison/analogy I've heard, and I'm not sure it is apocryphal but it certainly makes sense to me, is to the Xbox One's game subsystems, which while rarely described in great detail from an NT Kernel engineering standpoint, when they are briefly described as such they are often described as subsystems and that they are "VM-like" in operation.
https://en.m.wikipedia.org/wiki/Windows_Subsystem_for_Linux
https://github.com/microsoft/WSL2-Linux-Kernel
The Xbox One also uses a hypervisor to run multiple OSes, one of which was Windows 8:
https://en.m.wikipedia.org/wiki/Xbox_One_system_software
https://wccftech.com/xbox-one-architecture-explained-runs-wi...
They started doing that with the Xbox 360.
Though this is getting into semantic weeds and drifting away from the original point that more subsystems, especially retro-computing inspired ones would be fun to see, even if they are more just "micro VM hosts" than full NT Kernel "flavors".
(ETA: Also, it's a small stretch that Microsoft "gave up" on the WSL1 approach. They will still be supporting WSL1 side-by-side WSL2. The numbered name approach makes it seem that it is a strict "upgrade", but it's more a side-by-side trade-off option than the numbers imply.)
"NT Subsystems have always varied in nature of how they operate."
Not sure what you mean here. There were classically three environment subsystems and they all fit in to the architecture in a consistent manner: https://upload.wikimedia.org/wikipedia/commons/5/5d/Windows_...
The fact that if you look at the full callstack and address space of a regular Linux process running in WSL2 you won't see the "classic" NT Kernel anywhere feels like a pretty big difference to me.
Yes they are still supporting WSL1. Microsoft's support policies are generally excellent. But it seems very unlikely there will be an interest in providing OS emulation or compatibility at the userspace/OS kernel boundary using the classic subsystem architecture, as a technical direction for the Windows team to invest in going forward. It's an architectural dead-end.
The reality seems to be that MS kind of wanted something more lightweight that could be sold to existing pc owners, where as IBM was happy to just push the requirements to the point where OS/2 would require an fairly high end system(preferably an PS/2 from IBM to run).
For some markets where the expensive PS/2 systems were not considered too expensive as in the case of banks and the like OS/2 sold well enough for IBM to profit off it. But the wider market went with the less hardware hungry and at least initially less capable windows.
If i recall correctly NT was slow to mature into an mainstream OS and did not really start replacing OS/2 until the late 90ies and only really took of for consumers when XP were released.
But yes, running OS/2 was fun days, much better than Windows 3.11 (if you had memory enough).
Windows NT has ALWAYS been based on Dave Cutler's code, which shares a lot with VMS, because he architected that as well.
Windows 3.0 and 3.1, the non-NT flavors, ran on DOS.
Windows 3.11 added networking to Windows 3.1, and was wildly successful. Google Windows for Workgroups.
I still have a vm floating around of OS/2 Warp so I could play the original Galactic Civilizations from Stardock
And the UI had more powerful concepts, but I guess too advanced for most users.
Here is some information that does better justice than I would be able to do,
https://en.wikipedia.org/wiki/Workplace_Shell
http://www.edm2.com/index.php/Extending_the_Workplace_Shell_...
https://books.google.de/books?id=GL59pngdbfQC&pg=PA542&lpg=P...
https://books.google.de/books?id=yurvRCerf_UC&pg=RA1-PA515&l...
In OS/2 and classic Mac OS, folders you opened would remember their window position and other properties (including custom background image in OS/2) so that you could find things in a very human way by remembering e.g. "the small blue window in upper left".
Windows 95 copied this in a slightly broken way – you could open the same folder in multiple windows at the same time and give them conflicting properties, which breaks the model. Windows 98 (and the IE 4 upgrade to Windows 95) merged the whole thing with the web browser which broke it even more.
Mac OS X also had a half-broken implementation of this, since the file manager tried to combine the Mac OS Finder with the NeXTSTEP file manager which was completely different. John Siracusa has written extensively on this topic: https://arstechnica.com/gadgets/2003/04/finder/
Here you can find a comparison, naturally biased towards SOM.
http://www.edm2.com/index.php/The_System_Object_Model_%28SOM...
Here is some SOM documentation, https://ecsoft2.org/ibm-somobjects-developers-toolkit-os2
However, UWP now makes COM quite nice to use, this was what VB 6 and C++ should have turned into, instead of racing after Java, and taking 20 years to do a full circle.
http://git.jankratochvil.net/?p=reactos.git;a=blob_plain;f=l...
Though I may be entirely wrong.
I was at the help desk for an large Scandinavian bank doing the late 00ies and they were running virtual OS/2 instances on nearly every windows pc in order to support an custom app, and still had a few front desks(or whatever the window where the bank teller sits is called) with dedicated OS/2 hardware.
The biggest problem here was sourcing dot matrix printers as the software used as the front desk software only worked with a few models of no longer in production printers.
A few years after i left i heard rumors of an transformation project to get rid the legacy interfaces, part of which had been on going for a decade(as an old school java application) by the time i left for greener pasture, but i would not be surprised if that project it is still not complete yet, nor would i be to hear of retail banks that never bothered with any investment to replace OS/2 based apps.
Advantech, Austria
Agie Charmilles SA, Switzerland
Bowe, Bell & Howell, U.S.A.
Canadian Coast Guard, Canada
Colgate Palmolive, U.S.A.
Dematic North America, Luxembourg
Federated Insurance, U.S.A.
Johnson and Johnson, U.S.A.
Pepsi Co., U.S.A.
Roos Instruments, U.S.A.
Siemens AG, Germany
Trainitalie, F.S., Italy
Universal Instruments Corp, U.S.A.
Whirlpool Corporation, U.S,A,
http://ecomstation.com/index.phtml
https://www.arcanoae.com/arcaos/I remember around 2006 or so, watching a service technician replace some faulty hard disk drives in an enterprise SAN. He opens up the front door, and out of this compartment he slides a laptop computer which runs some management software. From the look of the user interface, it appeared to be running Windows 3.1.
I don't remember ever trying to install OS/2 anywhere else.