Where's my MUMPS?

The first sticking point in learning MUMPS is actually getting your hands on it, or rather a version that's reasonably easy to install and configure.

I've already mentioned GT.M as being one of the still-current MUMPS available. YottaDB is a fork of the open source GT.M, and Cache by Intersystems is the commercial evolution of many earlier MUMPS implementations. What these have in common is that they are capable of running utterly gargantuan, continent sized operations of critical infrastructure. Consequently, the complexity of the software features is high, and the documentation is very dry and technical. While MUMPS programming was meant to be easy and egalitarian, the actual installation/administration of systems was always meant to be carried out by qualified CS types. These days, we've got Unix in the form of WSL Linux right on our home Windows, or behind our Mac desktops, and to get legit, capable MUMPS system running is down to the individual, not a systems admin. This is a disconnect from how it's meant to be really, and an impediment to keeping MUMPS alive and in use beyond those of the Old Guard, full-stack megaNerds (you know who you are).

The actual installation of GT.M is trivial to be fair. Two lines of Linux commands (with caveats) and you will have a working MUMPS system, but in this Muppets opinion, as you start using it beyond simple one-liners or programming examples, the underlying complexity (echoing it's huge capability) starts to show, and though the documentation is conscise and huge, it's also difficult to read unless you're pre-immersed. Remember, the system you've just installed with a simple 'apt-get' is technically capable of running the health systems of the largest country on Earth, or the national a bank of a large economy. MUMPS is amazing.

One problem with MUMPS is (and always has been) the issue that although core language features are generally compatible, there's always been a lot of implementation-specific features, such as the ubiquitous $Z commands. MUMPS is a simple language, and it's very easy to use it to extend itself, using small routines (MUMPS speak for 'programs') to do things like list files, print out things etc, and different vendors had their own approach to populating thier versions with these very useful but non-standard extensions to add value. There have been several ANSI/ISO Standards published for MUMPS, the last being in 1999. Some people claim this was the true cause of the nuclear explosions that propelled the moon out of orbit, but that's another website.

An implementation adhering to this last published standard has been under development since 1999, first by Ray Newman as MUMPS V1, now taken over by David Wicksell and renamed Reference Standard MUMPS, or RSM. This is arguably the 'purest' MUMPS still under active development and support today. While it is still a WIP, it is a very capable implementation designed for real-world use, free, and with a lot of supporters in the MUMPS/VistA community, including the developers of GT.M and YottaDB. This website will use RSM as the base system to try examples on. The language based sections would mostly work on practically any 'modern' MUMPS you choose, there are more than I've covered here, but the aforementioned implementation-specific features will start to cobble you sooner or later, and using MUMPS productively is more than knowing the language, you need to know the environment it runs in, as the two are closer than many modern languages. I'll try and include some GT.M/YottaDB/Cache alternative crib sheets later, which will serve as a springboard into using those systems, but first things first....

Install and set up RSM