There's life in the old dog yet: OpenVMS to run on x86

Beside UNIX, OpenVMS is one of the oldest but still actively developed operating systems. Since its introduction back in 1977 for the VAX architecture (Virtual Address Extension) it already survided two major platform switches: DEC Alpha (1992 - 1994) and Intel Itanium (2001).

Recently, VMS Software, Inc. (VSI) presented first results of a long-awaited milestone: OpenVMS is now able to run on the x86 platform. For me as hobbyist, this could make a little dream come true: using OpenVMS without power-wasting, loud and obsolete Itanium hardware. 🙂

History

VMS (which was the initial name) and the VAX architecture both are results of an project for expanding the 16-bit PDP-11 computer. During the years, the name changed because of new DEC computer releases. By renaming the VAX 11 computer to VAX in 1980, the operating system was called VMS/VAX from that day. When introducing the MicroVAX series back in 1983, a customized VMS version called MicroVMS was released. This version was necessary as the mini computers were very low on hardware resources in comparison with normal vaxes und also had to implement some missing CPU features in software. Today's name OpenVMS was selected in 1991 to illustrate supporting "open standards" such as POSIX and UNIX compatibily. It is a common mistake to associate open with open source in this context.

Not only the architecture history was wild - also the supporting companies changed multiple times. DEC 1998 was taken over by Compaq, which was also taken over by Hewlett-Packard later in 2002. HP restructured in 2015 and sourced their enterprise market out under a new name: HPE (Hewlett-Packard Enterprise). In 2014, HP had already licensed the OpenVMS business exclusively to VSI. Some of VSIs employees are former DEC workers - making ideal conditions for bringing OpenVMS to the next level.

Version Year Features
V1.0 1977 First version for VAX
V4.0 1984 First version for MicroVAX (MicroVMS)
V1.0 AXP 1992 First version for Alpha
V6.1 1994 Combining VAX and Alpha versions
V7.0 1996 Full 64-bit support for Alpha
V7.3 2001 Last version with VAX support
V8.2 2005 Combined Alpha and Itanium release
V8.3 2006 SMP support for Itanium
V8.4 2010 Virtual guest under HP-UX (HPVM), last version per HP

Since 2010, VSI already made noticeable process - some extracts of their current roadmap:

Version Year Features
V8.4-1H1 2015 Itanium Poulson support, first version by VSI
V8.4-2 2016 Support for up to 64 cores and 1.5 TB memory
V9.0 May 2020 x86 Early Adopter release for selected customers
V9.1 H2 2020 x86 Early Adopter release for all customers
V9.2 2021 Release for Alpha, Itanium and x86

What's so special about OpenVMS?

Back then when OpenVMS was initially released, it was notice advanced in comparison with other operating systems. It was both 32-bit and multitasking capable and already supported running clusters to ensure high availability. It was also supported to mix VAX and Alpha or Alpha and Itanium cluster nodes. Also, VMS was one of the first operating systems that offered virtual memory management. The command-line interpreter DIGITAL Command Language (DCL) is a very mighty scripting language that does not shy away from comparison with state of the art shells. Functions such as  quantifiers form DCL making using complex loops mostly unnecessary..

OpenVMS can also be used to run common open source software. Some of the tools that are part of the open source kits:

  • Samba
  • Apache / PHP
  • Tomcat
  • MariaDB / PostgreSQL
  • Perl / Python / Ruby
  • MQTT / ActiveMQ / ZeroMQ

OpenVMS and Windows

A common mistake is that OpenVMS is an unixoid operating system. But quite the opposite is the case: it more similarities with Windows - or to be more precise - Windows NT has similarities with OpenVMS. One of the persons responsible for this is Dave Cutler - a former DEC softwar engineer. In Project Starlet, he was working on a range of new concepts for a new operating system for the 32-bit expansion of the PDP-11 (Project Star). His developments highly influenced the later VMS. In 1988 Cutler and 20 VMS developers switched from DEC to Microsoft where he lead the development of Windows NT. Bill Gates was confident that this step would be necessary in order to develop a "New Technlogy" operating system that is able to compete with UNIX. One of the development principles was to keep compatibility with older software - a principle that is also foudn in VMS. Dave Cutler also contributed to the port of Windows XP Professional and Server 2003 to AMD64.

Some of the noticeable similarities between OpenVMS and Windows include:

  • Drives are not mounted within a path, they're using letters
  • The FAT file system family does not distinguish between upper and lower case - like Files-11 used in VMS (case-insensitve)
  • Some of the VMS micro kernel subsystems (e.g. Process Manager, I/O Manager, Virtual Memory Manager) can be found in a reworked way and language (C instead of assembler) in NT
  • Both kernels have 32 process priorities and a system idle process
  • Both systems offer a modular IO system with replaceable and stackable drivers and asynchronous package-based requests
  • The NT programms Performance Monitor and NT Backup are clones of VMS' MONITOR and BACKUP
Note

Additional details can be found in an archived article by Mark Russinovich and a dedicated article.

Relevance these days

Usually, OpenVMS is only used by established clients with very long contract terms and contractual obligations (mostly in the public or financial sector). So you might stumble upon VMS in military institutions, healthcare, banking and stock market. In former times, also SMS exchange systems were often running the operating system. Some of the reasons to go for VMS is the excellent support of Fortran, COBOL and Ada. VSI also hopes that modernizing VMS will also bring some new customers - I'm curious to see market changes in the future.

VSI web seminar

Last week on the 19th of May 2020, VSI invited to a web seminar about recent x86 development and their future. The interest in this topic was so big that registration numbers exceeded all other online events they had in the last two years. The seminar was moderated by Terry R. Holmes (Chief Revenue Officer bei VSI); Clair Grant (Chief Technology Officer bei VSI) who also contributed to other VMS platform changes demonstrated the current development state in a VirtualBox VM.

Note

The seminar recording is also available on YouTube.

OpenVMS bootloader in a VirtualBox VM

I was excited to hear that VSI continues the OpenVMS hobbyist program. This enabled hobbyists (like me) to use OpenVMS for free in a limited way without buying software licenses. The license is time-limited but can be extended/replaced - in the future, the program should cover Itanium and x86 beside Alpha.

When planning the x86 port, the decison was not to virtualize OpenVMS as easy and fast as possible - the focus was to extend OpenVMS in a way to make it running on selected hypervisors. Beside VirtualBox (which VSI uses for development purposes), also KVM and VMware are focussed. Currently, VirtualBox and KVM can already be used as host platform while the VMware support is still in progress. Hyper-V is not planned currently, but VSI remarked to observe the market and eventually expand the focus. Currently VSI develops drivers necessary for virtualization on their own - it is unsure whether there will be official OpenVMS support for the appropriate hypervisor tools (e.g. VirtualBox Guest Additions, KVM guest drivers, open-vm-tools). Also, there are no plans for running OpenVMS within a container such as Docker at this time. For the future, VSI plans tests with HP and DELL enabling OpenVMS to run on selected platforms with Intel and AMD technology.

Booting OpenVMS under x86

To faciliate migrating existing applications, VSI offers a Cross Tools Kit. Using this kit, software can be compiled and linked on a Itanium-based system and executed on x86 (cross-compiler). Currently, this kit supports Fortran, Pascal and C. While Cobol and BASIC are in progress, there are currently now plans for C++ and Java. Also, it looks like there will be no such kit for Alpha.

On the 15th of May 2020, the OpenVMS 9.0 EAK (Early Adopter Kit) was distributed to the first customers - by the end of this year the kit will be shared with 40 customers. The customer feedback will be included into OpenVMS and made available as version 9.1 EAK to all customers.

OpenVMS 9.0 EAK contains all internal operating system functions and some features such as DCL, pipe support and batch jobs. Layered products such as the open source kit are not available yet. Because of this, the EAK is designed for customers that plan to start making tests before their applications can be migrated at all. Following updates in version 9.1 EAK basically require a fresh installation as they are no conventional update kits. These kits planned beginning with 2021 should contain additional compilers and kits.

Some of the functions that are currently missing and need to be implemented until version 9.2 include:

  • SMP support
  • Cluster support
  • Volume Shadowing
  • Privileged applications (e.g. device drivers that need to control internal routines)

In addition to that, improved stability and network and storage performance will upgrade the first official x86 version.

Conclustion

Even though I never had any business contact points with OpenVMS (and probably never will) I've been keeping track with OpenVMS for years. I made my first experiences back then in 2012 when I installed the operating system on a Itanium-based server. In comparison with an Alpha simulator I've been using before, the system was way more usable. Because I'm basically interested in exotic operating systems I had a lot of fun learning the operating system's basics.

Due to financial reasons I decided to drop the Itanium server later - but maybe I will soon be able to run OpenVMS natively in the homelab again. 🙂

Translations: