Packaging fis-gtm for the Debian Linux Distribution
Packaging fis-gtm for the Debian Linux Distribution
Educating The Next Generation
The importance of the M/MUMPS language/database for the EHR ecosystem has been highlighted in multiple blogs posts: [M Revolution][M Installation][M Bindings][M and Nodejs Part 1, Part 2, Part 3][M & NoSQL education Part 1, Part 2, Part 3]. Some of which made it to the top post of the year at the opensource.com site.
One of the main challenges of the M community is the shift in demographics that has happened over the years; leading today to an under-representation of young developers in the ranks of beginners gaining experience, with both the language and the underlying NoSQL database.
In order to revert this trend, we have engaged in several activities intended to reduce the barrier of entry into the M/MUMPS community. In particular, online tutorials [M Tutorial][Mirror 1][Mirror 2], and the introduction of M as a regular topic in Database classes at College level [SUNY Albany Spring 2013], covering both the [M Language] and the [M Database], that continues into the Spring 2014.
Lowering the Barriers
An additional mechanism to reduce the barrier of entry is to make very easy for new developers to find and install the open source version of the M/MUMPS implementation: fis-gtm, also known as GT.M, the M implementation developed and maintained by FIS Global.
To that end, back on January 18th 2012, we initiated an effort for packaging fis-gtm for the Debian Linux distribution. The choice of Debian as a target was reinforced by the trickle down effect that, Debian packages become available for other popular Linux distributions such as Ubuntu and Mint.
It is now possible for anyone with a Debian (or Debian-based) installation, to install GT.M by setting up the package sources and then using the familiar command:
sudo apt-get install fis-gtm
The Debian community uses a multi-tier distribution system, by which new packages are first included in the unstable distribution, then they move into the testing distribution, and finally they graduate into the stable distribution. This mechanism provides Debian users with a balance between stability and agility of adoption.
The initiative for packaging fis-gtm was embraced and supported by the maintainers of the Debian-med community, a Debian Pure Blend that aggregates packages of interest for the medical and scientific communities. The response was particularly enthusiastic by
- Andreas Tille, the initiator of debian-med, and its most active developer, and
- Yaroslav Halchenko, a very active in the NeuroDebian community.
The effort was also enthusiastically supported by FIS Global, in particular by
- K.S. Bhaskar and
- Amul Shah.
In fact, the effort actually started back in 2009, with an “Intent to Package” ITP report by Bhaskar.
The creation of a Debian package requires to built the specific project from source code. Most of the source code of GT.M is largely written in C-Language, with some sections on Assembly, and some sections written in M. Therefore, during the early attempts, the main challenge for building fis-gtm from source was that it required an existing M compiler to be available, in order to build itself. To circumvent this requirement, a bootstrapping process was devised and implemented.
The infrastructure for building fis-gtm was supplemented with CMake, which helped to restructure the build process, as to carefully craft the bootstrapping mechanism. The new build process uses temporary files to get a first instance of the compiler to build, and then uses this initial M compiler to complete a normal build of a second compiler.
In this way, it is now possible to build fis-gtm from source, by having only the GCC, CMake and several dependency libraries.
The Main Hackathon
From left: Amul Shah (fisglobal), Jason Li (Kitware/OSEHRA), K.S. Bhaskar (FIS Global) and Yaroslav Halchenko (Dartmouth College)
From left: Joe Snyder (Kitware/OSHERA), Brad King (Kitware/OSEHRA), Amul Shah (FIS Global), Jason Li (Kitware/OSEHRA) and K.S. Bhaskar (FIS Global).
The large majority of the work was done by collaborating remotely between a team at Kitware, the Debian-med maintainers, and the fis-gtm upstream developers at fis-global. In the summer of 2012, however, the team hit a major challenge in the process of converting the build infrastructure to CMake, and decided to convene a hackathon to tackle the problem with an all-hands on deck meeting at the Kitware offices in Clifton Park NY. Yaroslav Halchenko drove 300 miles from Dartmouth, in order to help the team with his Debian packaging expertise. K.S. Bhaskar and Amul Shah took the train ride from Philadelphia.
During these two, very productive days, the team crafted a strategy to use a CMake scaffolding to bootstrap the build process of fis-gtm. The strategy was implemented in the following months, and included many remote conference sessions (we really like tmux !), as well as off-line work.
After almost two years of persistence and resolve, it is great to see now the fruit of this effort.
We look forward to see the fis-gtm package graduating into the Debian stable version, and then into the Ubuntu and Mint distribution. An effort has also been started to package fis-gtm for the Fedora Linux distribution, from where it could flow into the Red Hat distribution.
Many Thanks to all the developers who work hard to make this possible.
Special thanks to
- Amul Shah
- Brad King
- Andreas Tille
- Yaroslav Halchenko
The Next Step
Now that fis-gtm is packaged for Debian, our next target is to craft a VistA package for Debian, initially as an educational resource, to make strides forward in our effort of educating a new generation of Open Source EHR developers.