‘I’m Glad That IBM Declined to Release the OS/2 Source’

Last month, IBM made an announcement that put an end to any hope of an open source OS/2. Responding to requests from an online community that had previously collected 11,600 signatures in support of its cause, the company confirmed that they would not be releasing the source code of their OS/2 operating system. I used OS/2 as my main operating system for about four years, and unlike some former users, my reaction to the news sits somewhere between disinterest and relief.

What was OS/2?

OS/2 was a joint project between Microsoft and IBM to create a business class operating system. Their plan was that Microsoft Windows would be the consumer and small business operating system and OS/2 the system of choice for power users.

When Windows version 3 became a huge success, Microsoft decided to ditch Microsoft-IBM OS/2 and instead create a high-end version of Windows called Windows NT. In addition to NT, they would continue a low end version of Windows in parallel to NT. From that point onwards, IBM continued the development of OS/2.

Thanks to Microsoft’s genuine acumen combined with their signature ruthless business approach, Windows was soon installed as the default operating system on the majority of brand new PCs.

However, OS/2 lead the way in terms of technology. In 1992 IBM released version 2.0 of OS/2, now a full 32 bit multitasking operating system with many innovative GUI features. Windows NT arrived a year later, and when it did arrive, it was arguably inferior to OS/2.

Each new release of OS/2 brought with it new leaps in technological sophistication, but by the late 90s IBM had decided that competing in the same market space as Microsoft Windows wasn’t worth bothering with and all but gave up on OS/2. As pulling the plug on OS/2 in a single move would have hurt the businesses who had invested in IBM operating system technology, IBM merely maintained OS/2 from that point onwards. For this reason, although the 1996 release of OS/2 version 4 had introduced new features such as speech recognition, native Java support and a port to the PowerPC architecture, subsequent releases were lacklustre, consisting of tweaks to the kernel and driver updates.

OS/2 still has a small but loyal enthusiast community surrounding it, and some members of that community have lobbied IBM to release the source code to OS/2. IBM have a reputation for playing nice with the open source community, and it would be difficult to attribute their decision to an unfriendly attitude to open source software development.

Why they can’t release the source

At the present time, even if IBM wanted to release the OS/2 source code it would be unlawful for them to do so. This is because they are not the sole owners of every part OS/2. OS/2 started as a joint project between IBM and Microsoft; because OS/2 contains code that belongs to both parties, IBM would have to convince Microsoft to also agree to the release. Microsoft would never do this.

Also, it seems probable that other companies, such as Adobe, have some of their work embedded within OS/2.

This raises the possibility of a partial source release. Obviously, an incomplete version of the source code would be insufficient to allow programmers to build and then distribute a working version of OS/2. In such a case, programmers would have to expend effort in recreating the missing parts from scratch. This would be a lot of work.

Even a partial release would be a lot of work for IBM. There is probably almost no part of OS/2 that doesn’t include at least some code that belongs to other parties. Sorting out which bits are clear for a release would involve a code audit of every single line of the huge OS/2 code base.

As much open source goodwill as IBM may have, doing it as a favour to open source community simply isn’t on the cards.

Why they shouldn’t release the source

In its day, OS/2 was a technology leader. Right up until the mid-90s, IBM pushed OS/2 to the forefront. But since that time, OS/2 has been allowed to languish. In all but a few minor respects, it has fallen behind other, contemporary operating systems.

When the last big release of OS/2 was made in 1996, some parts of it were 10 years old. Those parts are now more than 20 years old. Bear in mind that even the very final releases of OS/2 were not solely the product of a ground-up 32 bit design; the final IBM released version of OS/2 still contains a lot of 16 bit code from the earlier version.

Having first recreated all of the missing functionality that IBM would have been forced to remove, any future developer would then have to update OS/2. This would also be a huge undertaking.

For example, the memory layout is very old fashioned. As a result, reallocating memory between user programs, disk cache and virtual memory while the machine is in use is unwieldy. I’m not surprised – when OS/2 was conceived, the memory needed to even boot would have cost as much as a colour monitor. For decent performance with modern applications, the memory management scheme would have to be implemented from scratch.

Multimedia facilities, graphics acceleration, and hardware support are other areas that would need to be addressed.

Many of the features that gave it the edge 10 or 20 years ago are no longer relevant. Take the industry leading DOS support as an example: If people want to run old DOS software, they would be better off running it in an emulator such as Qemu or DOSBox. The same could be said for OS/2’s innovative approach to running 16 bit Windows 3 programs.

I’ll make a controversial point about OS/2: the GUI has some good features that would sit well in a modern operating system, but it’s not as great as some enthusiasts like to make out. It’s very old fashioned and a lot of work would need to be undertaken to add the features that most people expect from a modern OS.

File management is a good example. On a stock OS/2 system, if you start a file copy operation, you can monitor it’s progress in a basic way, but you can’t terminate it. Similarly, there are no tool tips or hints about the file under the cursor or file previews. An OS/2 aficionado might be quick to counter that these things can be added. But that’s part of my point, these add-on utilities are already open source.

From a programmer’s perspective, some of the object orientation makes the GUI fairly extensible by third parties. I challenge an OS/2 enthusiast to point out something that has been added to the OS/2 GUI that could not be added to other operating systems.

If you don’t believe me, look around on the net for some screenshots of OS/2 in action. It’s simply not as amazing as some people say.

In summary, it was a very neat GUI in its day but it has fallen hopelessly behind for modern use. Apart from the GUI, every major subsystem of OS/2 has a modern equivalent that is better and available under a licence that is conducive to free use and open development.

Who would benefit from a partial source release?

People who lobby in favour of a partial source release never state explicitly who would benefit from such a release.

For example, I have heard it stated on the forums that the source code must contain some interesting information about how some still-relevant Microsoft protocols work. Unfortunately, these are the very parts that would have to be removed to form a completely legal source code release.

Even if a few useful nuggets could be left in, ask any programmer who is working on a Microsoft interoperability project and they will tell you that they would not want to look at such code. Implementing ideas from such code will open them up to attacks and threats from Microsoft – threats of a sort that have already been directed at open source software. It’s not worth the trouble for the slight possibility of any gain.

I have heard people on the forums conjecture that programmers could use the source code to transfer some of OS/2’s GUI features into other operating systems. I don’t think that this is possible. As good as those features may be, the algorithms – and the algorithms are what the source code would reveal – are relatively obvious from observation. Taking a GUI feature from the OS/2 source code and grafting it into another operating system would be nearly impossible to do and far, far more work than implementing a similar feature from scratch.

Taking ideas from the OS/2 GUI is a good idea but programmers don’t need see the source code. Things like file formats, protocols, and codecs are the type of thing that programmers appreciate source level access to, and OS/2 doesn’t have anything of that type that anyone would want.


In its day, OS/2 was my PC operating system of choice. Good performance, cutting edge features, DOS and 16 bit Windows compatibility – what’s not to like? If IBM had maintained the pace of development, it might still be an operating system that I would want to use. Unfortunately, OS/2 is now ten years behind everything else, and it would be a monumental task to update it.

Perhaps the world does need a small, client-oriented operating system like OS/2. For people with such a want, I would advise them to look up the impressive efforts of something like Haiku or Syllable. In my opinion, it would take less effort to make these operating systems ready for typical modern application use than to somehow resurrect OS/2, get it working and then rewrite most of it to make it run along more modern lines.

About the author:

Michael Reed is a freelance writer and geek. Read about his adventures in geekdom on his website.


  1. 2008-02-07 5:56 pm
    • 2008-02-07 7:43 pm
  2. 2008-02-07 5:57 pm
    • 2008-02-07 8:04 pm
      • 2008-02-08 6:54 pm
  3. 2008-02-07 6:06 pm
    • 2008-02-07 6:55 pm
    • 2008-02-07 7:48 pm
  4. 2008-02-07 7:29 pm
  5. 2008-02-07 7:49 pm
  6. 2008-02-07 8:15 pm
  7. 2008-02-07 8:57 pm
    • 2008-02-07 9:14 pm
      • 2008-02-08 12:32 am
      • 2008-02-08 6:51 pm
    • 2008-02-07 9:19 pm
    • 2008-02-07 9:54 pm
      • 2008-02-08 6:48 pm
  8. 2008-02-08 1:40 am
  9. 2008-02-08 7:49 am
    • 2008-02-08 9:21 am
      • 2008-02-08 12:12 pm
        • 2008-02-08 12:35 pm
      • 2008-02-10 8:10 am
  10. 2008-02-08 12:16 pm
  11. 2008-02-08 3:31 pm
  12. 2008-02-08 8:36 pm
  13. 2008-02-09 3:38 am
  14. 2008-02-09 4:17 pm
    • 2008-02-10 10:54 am
      • 2008-02-11 9:13 pm
  15. 2008-02-10 9:53 am
    • 2008-02-10 10:26 am
      • 2008-02-11 12:25 am
  16. 2008-02-11 8:17 pm
    • 2008-02-12 5:35 pm