The History of FreeM Serena Willis Coherent Logic Development ABSTRACT The history of M, as well as the specifics of FreeM--the implementation maintained by the author for the last decade--are extensive and complex topics. Here, we will present an overview of the M language and its history in general, proceeding thence specifically to the historical background and development of FreeM itself, as well as its current status and goals. Though publicly-available information is sparse, efforts have been made to cite as many sources* as possible. 1. M LANGUAGE OVERVIEW MUMPS--now generally referred to as M to distance it from the infectious disease--is an imperative, general-purpose, com- mand-oriented programming language supporting persistent, hierar- chical, sparse arrays. It includes high-level support for multi- user, multi-processing applications with flexible concurrency control. MUMPS, being an acronym for Massachusetts General Hospital Utility Multi-Programming System, was developed by Neil Pap- palardo, Robert A. Greenes, and Curt Marble of Dr. Octo Barnett's lab at Massachusetts General Hospital in 1966-1967[1]. Inspired by RAND Corporation's JOSS, and the TELCOMP and STRINGCOMP lan- guages from Bolt, Beranek and Newman, MUMPS' earliest and most prominent use cases were in the field of health informatics[2, ----------- * Note that all world wide web URLs have been shortened for readability. Following these URLs will automatically redirect the reader to the appropriate, original source. All such URLs were accessed by the author on 27 April 2025, un- less otherwise specified. [1] Greenes, R.A., Pappalardo, A.N., Marble, C.W., and Barnett, Dr. G. Octo, "Design and Implementation of a Clini- cal Data Management System," Computers and Biomedical Re- search 2(5), Laboratory of Computer Science, Massachusetts General Hospital, Boston (10 Mar 1969). [2] Greenes, R.A., Barnett, Dr. G. Octo, Klein, Dr. Stuart W., Robbins, Dr. Anthony, and Prior, Roderick E., "Record- ing, Retrieval and Review of Medical Data by Physcian-Com- -2- 3]. MUMPS code is divided into program units referred to as rou- tines, which are roughly analagous to modules or compilation units in more mainstream languages. Routines are then further di- vided into labels (or tags in MUMPS parlance), which serve as en- try points into the routine. Subroutines and functions (the lat- ter known as extrinsic functions) are introduced as tags with an optional, parenthesized formallist, being a list of parameters expected by the subroutine or extrinsic function. Perhaps the most unique feature of M, the global, is a per- sistent, hierarchical, sparse array allowing developers to easily implement database features directly in the application's primary development language: ROUTINE ; SET ^PEOPLE("Willis, Serena","DOB")="1980-12-01" SET ^PEOPLE("Willis, Serena","SEX")="F" SET ^PEOPLE("Willis, Serena","COUNTRY")="US" The above routine would be called with DO ^ROUTINE, result- ing in a data structure in fixed storage where the elements (known in M parlance as subscripts), i.e., "Willis, Serena", are automatically sorted on insertion, allowing for rapid retrieval. Rough analogues can be found in the PICK operating system, as well as BBN FILECOMP, the latter of which was a direct influence in the early development of M. ----------- puter Interaction," New England Journal of Medicine 282(6), Laboratory of Computer Science, Massachusetts General Hospi- tal, Boston (5 Feb 1970). [3] Pendergrass, Henry P., Greenes, R.A., Barnett, Dr. G. Octo, Poltras, James W., Pappalardo, A. Neil, and Marble, Curtis W., An On-Line Computer Facility for Systematized In- put of Radiology Reports, Massachusetts General Hospital, Boston (1 Mar 1969). -3- Early versions of M included MGH MUMPS from Massachusetts General Hospital, and Digital Standard MUMPS from Digital Equip- ment Corporation. Notably, early commercial versions of M were commercial software, somewhat limiting the language's spread out- side of its ecological niche of health informatics. Vendor Implementation Mass. General Hospital MGH MUMPS Digital Equipment Corp. Digital Standard MUMPS (DSM) InterSystems Corp. InterSystems Standard MUMPS (ISM), Open M, Cache, IRIS Data Platform Data Tree Data Tree MUMPS (DTM) Micronetics Micronetics Standard MUMPS (MSM) Patterson & Gray PSM-11, PSM-32, PSM-V MGlobal International Inc. CCSM, MacMUMPS, M Global MUMPS, M3 Lite U.C. Davis MicroMUMPS Ray Newman MUMPS V1 Fourth Watch Software LC Reference Standard M (RSM) Kevin O'Kane Mumps-II, Open Mumps, GPL Mumps M21 Ltd. M21 Fidelity National Information Services GT.M (Greystone Technology MUMPS) YottaDB YottaDB Eugene Karataev MiniM Figure 1. Partial list of M implementations. 2. EARLY HISTORY OF FREEM FreeM was developed in Germany in the mid-1990s by a devel- oper who went by the pseudonym Shalom ha-Ashkenaz, whose actual identity remains unknown[4], though it is thought by some that they are a dentist who learned C and developed FreeM on their own time. Shalom developed FreeM at a time when InterSystems Corpora- tion (the company that developed the ISM implementation of M) was acquiring the majority of its competitors and absorbing their technology into their Open M product, which would later become InterSystems Cache[5]. ----------- [4] Walters, Dr. Richard F., "History and Continuing Evo- lution of FreeM: A Concept Whose Time Has Come (Again)," M Computing 7(2), p. 19 (May 1999). See https://l.mumps.dev/4. [5] Ibid. p. 18. -4- Implementation Year DataTree MUMPS (DTM) 1993 Digital Standard MUMPS (DSM) 1995[6] Micronetics Standard MUMPS (MSM) 1998 Figure 2. M implementations absorbed by InterSystems Corp. Shalom wished to provide a community-driven, open-source im- plementation of M as a bulwark against the growing threat of sin- gle-vendor hegemony over the M language. Its design--as well as some of the documentation included with the original sources--in- dicate that FreeM was originally targeted to the MS-DOS family of operating systems. It made use of a very limited subset of the C library, and included instructions for renaming the MS-DOS style 8.3 filenames in order to compile under UNIX[7]. At one point in FreeM's early history, Shalom ported FreeM from MS-DOS to SCO UNIX, the UNIX System V Release III-derived descendant of Microsoft XENIX, now known as SCO OpenServer--a platform still supported by FreeM today[8]. This port brought support for the scoansi terminal type, including colors and ANSI X3.64 control mnemonics. 3. INITIAL INVOLVEMENT The author's mentor in computer programming and UNIX was Lawrence Landis, who involved himself heavily in the M program- ming language ca. 1991. Mr. Landis promoted the M language to the author from 1991 forward, and first demonstrated FreeM to her in August 1998. In 2010, the author incorporated her company, Coher- ent Logic Development, learned M, and began doing contract work in M through Mr. Landis's company, Fourth Watch Software. Mr. Landis was the owner of FreeM's SourceForge reposi- tory[9] , which had not been touched in a number of years, fol- lowing Fidelity National Information Services' decision to re- lease GT.M under a free software license. In August 2011, the au- thor downloaded the source code for FreeM and did enough work on it to enable building and running under modern GNU/Linux systems and posted it to the mumpster.org forums[10]. ----------- [6] Goelz, Larry and Paladino, John, Cover Letter re DSM, Compaq Computer Corporation, Houston (31 May 1999). See https://l.mumps.dev/r [dead link]. [7] ha-Ashkenaz, Shalom, "README," Generic Universal MUMPS Project (18 Jun 1998). See https://l.mumps.dev/7. [8] Willis, Serena, "Platform Notes (SCO OpenServer)," FreeM Wiki (3 Aug 2023). See https://l.mumps.dev/8. [9] Landis, Lawrence D., "Generic Universal MUMPS Project," SourceForge (1999). See https://l.mumps.dev/6. [10] Willis, Serena, "FreeM 0.1.4," Mumpster (2011). See https://l.mumps.dev/2. -5- In 2014, Mr. Landis gave the author administrator access to the FreeM SourceForge repository and transferred maintainership of the project to her[11]. 4. GENERIC UNIVERSAL M PROJECT The Generic Universal M Project was conceived by Richard F. Walters, a professor from U.C. Davis. The GUMP, following the rising popularity of object-oriented programming in the 1990s, was intended to be a toolkit allowing M implementations to be built from discrete components with a well-defined and well-spec- ified public interface among these components. These components included the global handler (supplying the functionality of per- sistent global storage), and the interpreter/compiler (responsi- ble for implementing M language commands). The components would have been able to communicate over a network, or in-process on the same host, enabling distributed computing functionality[12]. Although the specification for the GUM interface to global handlers attained a reasonably well-specified level of complete- ness[13], and Lawrence Landis and others developed a mostly-com- plete implementation of a GUM global handler[14], none of the other envisioned components were ever completed, and specifi- cally, the interpreter component was missing. 5. FREEM DONATED TO MUG DEUTSCHLAND In July of 1998, Shalom ha-Ashkenaz donated the FreeM source code (then known as FreeMUMPS) to the M User's Group-Deutschland (MUG-D), hoping the community would take the nascent implementa- tion from its infancy through to a state of production-ready com- pleteness and robustness. Shalom also placed a few conditions on his gift: a public release could not be made until a substantial set of milestones were reached. Per his conditions, the FreeMUMPS project must[15]: +o Implement the entirety of ANSI X11.1-1995 +o Use Structured System Variables instead of VIEW commands and $VIEW functions ----------- [11] Landis, Lawrence D., "Generic Universal MUMPS Project," SourceForge (1999). See https://l.mumps.dev/6. [12] Landis, Lawrence D., "C2M," Generic Universal MUMPS Project (1998). See https://l.mumps.dev/9. [13] Morris, Steve, "GUM API," www.rosecroft.net (18 Nov 1996). See https://l.mumps.dev/k. [14] Walters, Dr. Richard F., Morris, Steve, and Landis, Lawrence D., "Generic Universal M Project," Coherent Logic Development GitLab (12 Jun 1995). See https://l.mumps.dev/l. [15] ha-Ashkenaz, Shalom, "README," Generic Universal MUMPS Project (18 Jun 1998). See https://l.mumps.dev/7. -6- +o Raise the string size limits +o Implement MWAPI, OMI, X11 bindings, and GKS bindings +o Be substantially free of major bugs Although MUG-D readily accepted the contribution of Free- MUMPS, the organization itself lacked the manpower and expertise to complete the implementation. Just as it is now, the intersec- tion of M community members who know enough of the M language and C language to work on a project this ambitious was quite small. 6. MERGING GUMP AND FREEM Very shortly after the contribution of FreeMUMPS to MUG-D, Richard F. Walters and a small team of developers and administra- tive staff who had been working on the GUMP assumed maintainer- ship of the FreeMUMPS source code, with Lawrence Landis managing the development efforts[16]. This included representatives from the M Technology Association (an M vendor association having sev- eral foreign branches), the M Development Committee (the M stan- dards organization hosting the ANSI/ISO standards for the M lan- guage, then sponsored by the M Technology Association), and oth- ers[17]. The goals of this team were to: +o Meet Shalom's requirements for a public release of FreeMUMPS +o Convert FreeMUMPS into the first interpreter component of the GUMP During this period, Ronald L. Fox of Diagnostic Laboratory Services in Honolulu, HI (who passed in 2010)[18] ported Free- MUMPS from SCO UNIX to Red Hat 5 and glibc-6[19]. Steve "Saintly" Zeck of the U.C. Davis Veterinary Medical Teaching Hos- pital[20] also attempted to rewrite the symbol table code to lift string size limits[21], David Whitten enhanced some of the imple- mentation-specific extensions, and Lawrence Landis integrated Zeck's symbol table work. ----------- [16] Walters, History, p. 19. [17] Landis, Lawrence D., "Contributers.txt [sic]," Generic Universal MUMPS Project (1998). See https://l.mumps.dev/a. [18] Robinson, Angie and Utley, Mark, Ronald L. Fox (1951-2010), Find a Grave, Lehi. See https://l.mumps.dev/e. [19] Fox, Ronald L., "FreeMUMPS source and docs available in tgz format," mumps-l mailing list, Honolulu (19 Jan 1999). See https://l.mumps.dev/d. [20] Zeck, Steven, About Steve Zeck, Davis (1998). See https://l.mumps.dev/m. [21] Zeck, Steven, "FreeM String Lengths," Generic Univer- sal M Project Mailing List (21 May 1999). See https://l.mumps.dev/i. -7- In FreeM 0.1.0, the name of the implementation was changed from FreeMUMPS to Public Standard M, and again to Free Standard MUMPS and then FreeM when it was discovered leading up to the FreeM 0.2.0 release that the PSM acronym was already in use for Patterson & Gray's[22] M implementation[23]. Dr. Walters also received the implementation ID of 49 from then secretary of the M Development Committee, Don Piccone[24]. One of the contributors to FreeM at this stage--primarily in the area of M vendor routines--was Axel Trocha, who would later maintain a private fork of FreeM[25]. 7. GT.M RELEASED AS FREE SOFTWARE GT.M, an acronym for Greystone Technology MUMPS, is an M im- plementation that was released by Greystone Technology in 1986. Greystone was later acquired by Sanchez Computer Associates, which was in turn acquired by Fidelity National Information Ser- vices[26]. When GT.M was released under the GNU General Public License in 2000[27], it seemed to many to obviate the raison d'etre for FreeM, as GT.M was a well-established, robust, and high-perfor- mance M implementation with which FreeM could not then compete. Unfortunately, at this time, the GUMP and FreeM projects lost all of their momentum, and new development along these lines rapidly ceased. The final GUMP team release of FreeM was 0.5.0[28]. How- ever, Axel Trocha's private port would continue to be developed for some years. 8. FORKED BY AXEL TROCHA When the free software release of GT.M stalled the GUMP team's progress on the primary branch of development, Axel ----------- [22] Landis, Lawrence D., "Generic Universal MUMPS Project," SourceForge (1999). See https://l.mumps.dev/6. [23] Landis, Lawrence D., "Changes.GUM," Generic Universal MUMPS Project (18 Feb 2000). See https://l.mumps.dev/5. [24] Ibid. [25] Trocha, Axel, Free Mumps (2 Sep 2004). See https://l.mumps.dev/3. [26] Finextra, Fidelity National Financial acquires Sanchez, Finextra Research Limited, London (29 Jan 2004). See https://l.mumps.dev/c. [27] Ryan, Greg and Bhaskar, K.S., Sanchez Offers GT.M Database as Open Source Freeware to GNU/Linux Users, Linux Today, Nashville (7 Nov 2000). See https://l.mumps.dev/b. [28] Diamond, Jon, Dorman, Rod, Gerum, Winfried, Kreis, Greg, Landis, Lawrence D., Milligan, Lloyd, Morris, Steve, Murray, John, Pastoors, Wilhelm, Schell, Kate, Schofield, Lyle, Trocha, Axel, Walters, Dr. Richard F., and Whitten, David, FreeM 0.5.0, Generic Universal M Project, Roseville (15 Apr 1999). See https://l.mumps.dev/j. -8- Trocha, an aforementioned contributor, continued development on the FreeM source code. Trocha added many interesting features to the FreeM codebase, including: +o A native port to Microsoft Windows +o Compiling FreeM as an Apache web server module, allowing FreeM to be used easily for web development +o The ability to output HTML code in a heredoc-style format, with any line of code beginning with a left angle bracket being in- terpreted as HTML with support for interpolated M locals and globals +o Extensions allowing FreeM to be used as a command-line shell, along the lines of UNIX bash, Windows cmd.exe, etc. Trocha also maintains ownership of the freem.net Internet domain[29], and continued issuing public releases of his FreeM port on that site until sometime after 2004, at which point this fork was made entirely private. Currently, freem.net is a blank page. However, Trocha's fork of FreeM continues to the present[30] as the back-end storage engine and programming envi- ronment for the Elven Runes website[31]. The author has communi- cated with Mr. Trocha on occasion, and though he is supportive of the author's efforts, has chosen to remain in the background. 9. RESUMING PRIMARY DEVELOPMENT In 2011, the author downloaded the FreeM source code from the GUM Project's SourceForge repository--dormant since 2000--and updated it just enough that it would compile and run on modern GNU/Linux systems. The author also quickly updated FreeM to sup- port terminal sizes larger than 80x24. 10. TAKING MAINTAINERSHIP In 2014, Lawrence Landis transferred administrative access of the GUMP repository, conferring maintainership of the primary branch of FreeM development to the author. Since then, many fea- tures have been added and many bugs corrected, including: +o Adding support for proper namespaces, configured through a freem.conf file, which standardizes routine and global storage locations ----------- [29] Whois.net, Whois freem.net (see Name Servers fields) (8 Feb 2025). See https://l.mumps.dev/n. [30] Trocha, Axel, FreeM development has been restarted (E-mail) (30 Mar 2020). [31] Elizalde and Trocha, Axel, Elven Runes: A Tolkien/MUME Fan Site. See https://l.mumps.dev/q. -9- +o Adding support for Structured System Variables +o Adding support for the asynchronous event specification from MDC Type A proposal X11/1998-28[32] +o Adding support for constants via the CONST keyword +o Adding a WITH command allowing the specification of an implicit prefix to all subsequent variable references +o Adding a runtime WATCH command, tracking changes to specified local or global variables +o Adding an ASSERT command, which will fail with an error message if the following expression evaluates false +o Removing the Steve Zeck symbol table implementation--which was unreliable--and reverting to the original implementation +o Adding support for the GNU readline library, with persistent command line history and editing +o Adding REPL-like functionality (in direct mode, any M expres- sion beginning with a number will be prepended with an implicit WRITE) +o Adding transaction processing +o Adding KVALUE and KSUBSCRIPTS +o Preparing to support the M Windowing API (MWAPI) +o Adding the fmadm command-line utility, for system administra- tion functions +o Adding support for after-image journaling and forward recovery of globals ----------- [32] Smith, Arthur B., "Event Processing," X11/1998-28, MUMPS Development Committee SC15/TG4 (28 Jun 1998). See https://l.mumps.dev/f. -10- +o Writing a texinfo manual, from which the HTML manual is derived +o Porting to Solaris/SPARC, Solaris/x86, Linux/s390x, Linux/armv6l, Linux/armv7l, SCO OpenServer 5.0.7, Tru64 UNIX/alpha, AIX/ppc, Mac OS X/x86, GNU HURD, Cygwin, NetBSD, FreeBSD, OpenBSD, and WSL1/2 In addition, the FreeM web site[33] was created, to distribute downloads and documentation. 11. FUTURE FreeM is envisioned as a client-oriented desktop M implemen- tation, for developing graphical user interfaces that will run on mobile and desktop devices. The author also intends to adopt the original vision of the GUMP team, dividing FreeM's functionality into discrete compo- nents having a well-specified public interface, with the ability to run in distributed computing environments over a network. FreeM's mission is to advance the state-of-the-art in M im- plementations, and push the evolution of the language forward. Maintaining portability to as many vintage and modern UNIX sys- tems as possible is held as a high priority, while portability of M routines and MDC standards compliance will be maintained through the use of the new $ZDIALECT intrinsic special variable to ensure that such compliance does not conflict with the primary goal of elegantly advancing the state-of-the-art and finding new audiences for the concepts originated by Neil Pappalardo and Octo Barnett in 1966. The FreeM project is also strongly committed to free soft- ware principles, and is firmly aligned with the goals of the GNU Project and the Free Software Foundation, believing that the eth- ical concerns surrounding proprietary software are at least as important as the practical concerns espoused by the Open Source movement[34]. 12. CONCLUSION FreeM has seen a colorful and turbulent history, touched by many capable hands. Though public development of any strain of the implementation was dormant for nearly a decade, fourteen years of almost continuous development have passed since the project resumed in 2011, and a decade since official maintainer- ship passed in 2014, and great progress has been made. ----------- [33] Willis, Serena, FreeM, Coherent Logic Development, Las Cruces. See https://l.mumps.dev/o. [34] Stallman, Richard M., "Free Software, Free Society: Selected Essays of Richard M. Stallman" (1-882114-98-1), p. 57, Free Software Foundation, Boston (2002). -11- FreeM--as is the case for all M projects--presses forward in a period where the future of the M programming language is uncer- tain. M Development Committee efforts concurrent with FreeM de- velopment have been sporadic and have missed many milestones, the community's most prominent members are aging, and many organiza- tions have migrated from large M applications to what is per- ceived as more "modern" replacements. It is the opinion of the author that the tight integration of an expressive and dynamic language with a robust and perfor- mant persistent storage engine makes M a natural candidate for many new and general applications. Modern application development is plagued by overwhelming bars to entry, requiring mastery of many languages and database management systems and the bulky in- terfaces connecting them. Though not without significant warts accreted over the years, M has no such overhead. Thus, FreeM seeks to press its philosophical advantages by mitigating the language's accumulated cruft, and adding clean interfaces addressing the needs of today. With these goals in mind, development proceeds apace. 13. ACKNOWLEDGMENTS Certainly, the intellects responsible for giving us M are too numerous to mention by name, but their importance cannot be overstated. The author would like to especially credit Lawrence Landis for his early and innumerable contributions to her devel- opment, both generally as a practitioner of software development, and specifically for introducing her to the M programming lan- guage, and inculcating in her a love of exploration and innova- tion. To the author's wife, Miriam--a brilliant technologist in her own right--and daughters (without whose inestimable patience and understanding as the author buries herself in countless pas- sion projects, such projects would not be possible) the deepest and most profound gratitude and love are due. -12- 14. COPYRIGHT AND LICENSE This document is Copyright (C) 2025 Serena Willis Permission is granted to copy, distribute and/or modify this doc- ument under the terms of the GNU Free Documentation License[35], Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover texts, and with no Back-Cover Texts. $Id: freem_history.txt,v 1.1 2025/05/02 12:44:48 snw Exp $ ----------- [35] Free Software Foundation, GNU Free Documentation Li- cense 1.3, Boston. See https://l.mumps.dev/p.