1:
2:
3:
4:
5:
6:
7:
8:
9:
10: [1mThe History of FreeM[0m
11:
12:
13: [4mSerena[24m [4mWillis[0m
14: Coherent Logic Development
15:
16:
17: [4mABSTRACT[0m
18:
19: The history of M, as well as the specifics of
20: FreeM--the implementation maintained by the author for
21: the last decade--are extensive and complex topics.
22: Here, we will present an overview of the M language and
23: its history in general, proceeding thence specifically
24: to the historical background and development of FreeM
25: itself, as well as its current status and goals. Though
26: publicly-available information is sparse, efforts have
27: been made to cite as many sources* as possible.
28:
29:
30: [1m1. M LANGUAGE OVERVIEW[0m
31:
32: [4mMUMPS[24m--now generally referred to as [4mM[24m to distance it from
33: the infectious disease--is an imperative, general-purpose, com-
34: mand-oriented programming language supporting persistent, hierar-
35: chical, sparse arrays. It includes high-level support for multi-
36: user, multi-processing applications with flexible concurrency
37: control.
38:
39: MUMPS, being an acronym for [4mM[24massachusetts General Hospital
40: [4mU[24mtility [4mM[24multi-[4mP[24mrogramming [4mS[24mystem, was developed by Neil Pap-
41: palardo, Robert A. Greenes, and Curt Marble of Dr. Octo Barnett's
42: lab at Massachusetts General Hospital in 1966-1967[1]. Inspired
43: by RAND Corporation's JOSS, and the TELCOMP and STRINGCOMP lan-
44: guages from Bolt, Beranek and Newman, MUMPS' earliest and most
45: prominent use cases were in the field of health informatics[2,
46:
47: -----------
48: * Note that all world wide web URLs have been shortened
49: for readability. Following these URLs will automatically
50: redirect the reader to the appropriate, original source. All
51: such URLs were accessed by the author on 27 April 2025, un-
52: less otherwise specified.
53: [1] Greenes, R.A., Pappalardo, A.N., Marble, C.W., and
54: Barnett, Dr. G. Octo, "Design and Implementation of a Clini-
55: cal Data Management System," [4mComputers[24m [4mand[24m [4mBiomedical[24m [4mRe-[0m
56: [4msearch[24m [1m2[22m(5), Laboratory of Computer Science, Massachusetts
57: General Hospital, Boston (10 Mar 1969).
58: [2] Greenes, R.A., Barnett, Dr. G. Octo, Klein, Dr. Stuart
59: W., Robbins, Dr. Anthony, and Prior, Roderick E., "Record-
60: ing, Retrieval and Review of Medical Data by Physcian-Com-
61:
62:
63:
64:
65:
66:
67:
68:
69:
70: -2-
71:
72:
73: 3].
74:
75: MUMPS code is divided into program units referred to as [4mrou-[0m
76: [4mtines[24m, which are roughly analagous to [4mmodules[24m or [4mcompilation[0m
77: [4munits[24m in more mainstream languages. Routines are then further di-
78: vided into labels (or [4mtags[24m in MUMPS parlance), which serve as en-
79: try points into the routine. Subroutines and functions (the lat-
80: ter known as [4mextrinsic[24m [4mfunctions[24m) are introduced as tags with an
81: optional, parenthesized [4mformallist[24m, being a list of parameters
82: expected by the subroutine or extrinsic function.
83:
84: Perhaps the most unique feature of M, the [4mglobal[24m, is a per-
85: sistent, hierarchical, sparse array allowing developers to easily
86: implement database features directly in the application's primary
87: development language:
88:
89:
90: ROUTINE ;
91: SET ^PEOPLE("Willis, Serena","DOB")="1980-12-01"
92: SET ^PEOPLE("Willis, Serena","SEX")="F"
93: SET ^PEOPLE("Willis, Serena","COUNTRY")="US"
94:
95: The above routine would be called with [4mDO[24m [4m^ROUTINE[24m, result-
96: ing in a data structure in fixed storage where the elements
97: (known in M parlance as [4msubscripts[24m), i.e., [4m"Willis,[24m [4mSerena"[24m, are
98: automatically sorted on insertion, allowing for rapid retrieval.
99: Rough analogues can be found in the [4mPICK[24m operating system, as
100: well as BBN [4mFILECOMP[24m, the latter of which was a direct influence
101: in the early development of M.
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118: -----------
119: puter Interaction," [4mNew[24m [4mEngland[24m [4mJournal[24m [4mof[24m [4mMedicine[24m [1m282[22m(6),
120: Laboratory of Computer Science, Massachusetts General Hospi-
121: tal, Boston (5 Feb 1970).
122: [3] Pendergrass, Henry P., Greenes, R.A., Barnett, Dr. G.
123: Octo, Poltras, James W., Pappalardo, A. Neil, and Marble,
124: Curtis W., [4mAn[24m [4mOn-Line[24m [4mComputer[24m [4mFacility[24m [4mfor[24m [4mSystematized[24m [4mIn-[0m
125: [4mput[24m [4mof[24m [4mRadiology[24m [4mReports,[24m Massachusetts General Hospital,
126: Boston (1 Mar 1969).
127:
128:
129:
130:
131:
132:
133:
134:
135:
136: -3-
137:
138:
139: Early versions of M included [4mMGH[24m [4mMUMPS[24m from Massachusetts
140: General Hospital, and [4mDigital[24m [4mStandard[24m [4mMUMPS[24m from Digital Equip-
141: ment Corporation. Notably, early commercial versions of M were
142: commercial software, somewhat limiting the language's spread out-
143: side of its ecological niche of health informatics.
144:
145: [1mVendor Implementation[0m
146: Mass. General Hospital MGH MUMPS
147: Digital Equipment Corp. Digital Standard MUMPS (DSM)
148: InterSystems Corp. InterSystems Standard MUMPS (ISM), Open M, Cache, IRIS Data Platform
149: Data Tree Data Tree MUMPS (DTM)
150: Micronetics Micronetics Standard MUMPS (MSM)
151: Patterson & Gray PSM-11, PSM-32, PSM-V
152: MGlobal International Inc. CCSM, MacMUMPS, M Global MUMPS, M3 Lite
153: U.C. Davis MicroMUMPS
154: Ray Newman MUMPS V1
155: Fourth Watch Software LC Reference Standard M (RSM)
156: Kevin O'Kane Mumps-II, Open Mumps, GPL Mumps
157: M21 Ltd. M21
158: Fidelity National Information Services GT.M (Greystone Technology MUMPS)
159: YottaDB YottaDB
160: Eugene Karataev MiniM
161:
162: [4mFigure[24m [4m1.[24m [4mPartial[24m [4mlist[24m [4mof[24m [4mM[24m [4mimplementations.[0m
163:
164:
165: [1m2. EARLY HISTORY OF FREEM[0m
166:
167: FreeM was developed in Germany in the mid-1990s by a devel-
168: oper who went by the pseudonym [4mShalom[24m [4mha-Ashkenaz[24m, whose actual
169: identity remains unknown[4], though it is thought by some that
170: they are a dentist who learned C and developed FreeM on their own
171: time. Shalom developed FreeM at a time when InterSystems Corpora-
172: tion (the company that developed the ISM implementation of M) was
173: acquiring the majority of its competitors and absorbing their
174: technology into their [4mOpen[24m [4mM[24m product, which would later become
175: [4mInterSystems[24m [4mCache[24m[5].
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188: -----------
189: [4] Walters, Dr. Richard F., "History and Continuing Evo-
190: lution of FreeM: A Concept Whose Time Has Come (Again)," [4mM[0m
191: [4mComputing[24m [1m7[22m(2), p. 19 (May 1999). See https://l.mumps.dev/4.
192: [5] [4mIbid.[24m p. 18.
193:
194:
195:
196:
197:
198:
199:
200:
201:
202: -4-
203:
204:
205: [1mImplementation Year[0m
206: DataTree MUMPS (DTM) 1993
207: Digital Standard MUMPS (DSM) 1995[6]
208: Micronetics Standard MUMPS (MSM) 1998
209:
210: [4mFigure[24m [4m2.[24m [4mM[24m [4mimplementations[24m [4mabsorbed[24m [4mby[24m [4mInterSystems[24m [4mCorp.[0m
211:
212:
213: Shalom wished to provide a community-driven, open-source im-
214: plementation of M as a bulwark against the growing threat of sin-
215: gle-vendor hegemony over the M language. Its design--as well as
216: some of the documentation included with the original sources--in-
217: dicate that FreeM was originally targeted to the MS-DOS family of
218: operating systems. It made use of a very limited subset of the C
219: library, and included instructions for renaming the MS-DOS style
220: 8.3 filenames in order to compile under UNIX[7].
221:
222: At one point in FreeM's early history, Shalom ported FreeM
223: from MS-DOS to SCO UNIX, the UNIX System V Release III-derived
224: descendant of Microsoft XENIX, now known as SCO OpenServer--a
225: platform still supported by FreeM today[8]. This port brought
226: support for the [4mscoansi[24m terminal type, including colors and ANSI
227: X3.64 control mnemonics.
228:
229: [1m3. INITIAL INVOLVEMENT[0m
230:
231: The author's mentor in computer programming and UNIX was
232: Lawrence Landis, who involved himself heavily in the M program-
233: ming language ca. 1991. Mr. Landis promoted the M language to the
234: author from 1991 forward, and first demonstrated FreeM to her in
235: August 1998. In 2010, the author incorporated her company, Coher-
236: ent Logic Development, learned M, and began doing contract work
237: in M through Mr. Landis's company, Fourth Watch Software.
238:
239: Mr. Landis was the owner of FreeM's SourceForge reposi-
240: tory[9] , which had not been touched in a number of years, fol-
241: lowing Fidelity National Information Services' decision to re-
242: lease GT.M under a free software license. In August 2011, the au-
243: thor downloaded the source code for FreeM and did enough work on
244: it to enable building and running under modern GNU/Linux systems
245: and posted it to the [4mmumpster.org[24m forums[10].
246:
247: -----------
248: [6] Goelz, Larry and Paladino, John, [4mCover[24m [4mLetter[24m [4mre[24m [4mDSM,[0m
249: Compaq Computer Corporation, Houston (31 May 1999). See
250: https://l.mumps.dev/r [dead link].
251: [7] ha-Ashkenaz, Shalom, "README," [4mGeneric[24m [4mUniversal[24m [4mMUMPS[0m
252: [4mProject[24m (18 Jun 1998). See https://l.mumps.dev/7.
253: [8] Willis, Serena, "Platform Notes (SCO OpenServer),"
254: [4mFreeM[24m [4mWiki[24m (3 Aug 2023). See https://l.mumps.dev/8.
255: [9] Landis, Lawrence D., "Generic Universal MUMPS
256: Project," [4mSourceForge[24m (1999). See https://l.mumps.dev/6.
257: [10] Willis, Serena, "FreeM 0.1.4," [4mMumpster[24m (2011). See
258: https://l.mumps.dev/2.
259:
260:
261:
262:
263:
264:
265:
266:
267:
268: -5-
269:
270:
271: In 2014, Mr. Landis gave the author administrator access to
272: the FreeM SourceForge repository and transferred maintainership
273: of the project to her[11].
274:
275: [1m4. GENERIC UNIVERSAL M PROJECT[0m
276:
277: The [4mGeneric[24m [4mUniversal[24m [4mM[24m [4mProject[24m was conceived by Richard F.
278: Walters, a professor from U.C. Davis. The GUMP, following the
279: rising popularity of object-oriented programming in the 1990s,
280: was intended to be a toolkit allowing M implementations to be
281: built from discrete components with a well-defined and well-spec-
282: ified public interface among these components. These components
283: included the global handler (supplying the functionality of per-
284: sistent global storage), and the interpreter/compiler (responsi-
285: ble for implementing M language commands). The components would
286: have been able to communicate over a network, or in-process on
287: the same host, enabling distributed computing functionality[12].
288:
289: Although the specification for the GUM interface to global
290: handlers attained a reasonably well-specified level of complete-
291: ness[13], and Lawrence Landis and others developed a mostly-com-
292: plete implementation of a GUM global handler[14], none of the
293: other envisioned components were ever completed, and specifi-
294: cally, the interpreter component was missing.
295:
296: [1m5. FREEM DONATED TO MUG DEUTSCHLAND[0m
297:
298: In July of 1998, Shalom ha-Ashkenaz donated the FreeM source
299: code (then known as FreeMUMPS) to the M User's Group-Deutschland
300: (MUG-D), hoping the community would take the nascent implementa-
301: tion from its infancy through to a state of production-ready com-
302: pleteness and robustness. Shalom also placed a few conditions on
303: his gift: a public release could not be made until a substantial
304: set of milestones were reached. Per his conditions, the FreeMUMPS
305: project must[15]:
306:
307: +o Implement the entirety of [4mANSI[24m [4mX11.1-1995[0m
308:
309: +o Use Structured System Variables instead of [4mVIEW[24m commands and
310: [4m$VIEW[24m functions
311:
312:
313: -----------
314: [11] Landis, Lawrence D., "Generic Universal MUMPS
315: Project," [4mSourceForge[24m (1999). See https://l.mumps.dev/6.
316: [12] Landis, Lawrence D., "C2M," [4mGeneric[24m [4mUniversal[24m [4mMUMPS[0m
317: [4mProject[24m (1998). See https://l.mumps.dev/9.
318: [13] Morris, Steve, "GUM API," [4mwww.rosecroft.net[24m (18 Nov
319: 1996). See https://l.mumps.dev/k.
320: [14] Walters, Dr. Richard F., Morris, Steve, and Landis,
321: Lawrence D., "Generic Universal M Project," [4mCoherent[24m [4mLogic[0m
322: [4mDevelopment[24m [4mGitLab[24m (12 Jun 1995). See https://l.mumps.dev/l.
323: [15] ha-Ashkenaz, Shalom, "README," [4mGeneric[24m [4mUniversal[0m
324: [4mMUMPS[24m [4mProject[24m (18 Jun 1998). See https://l.mumps.dev/7.
325:
326:
327:
328:
329:
330:
331:
332:
333:
334: -6-
335:
336:
337: +o Raise the string size limits
338:
339: +o Implement MWAPI, OMI, X11 bindings, and GKS bindings
340:
341: +o Be substantially free of major bugs
342:
343: Although MUG-D readily accepted the contribution of Free-
344: MUMPS, the organization itself lacked the manpower and expertise
345: to complete the implementation. Just as it is now, the intersec-
346: tion of M community members who know enough of the M language and
347: C language to work on a project this ambitious was quite small.
348:
349: [1m6. MERGING GUMP AND FREEM[0m
350:
351: Very shortly after the contribution of FreeMUMPS to MUG-D,
352: Richard F. Walters and a small team of developers and administra-
353: tive staff who had been working on the GUMP assumed maintainer-
354: ship of the FreeMUMPS source code, with Lawrence Landis managing
355: the development efforts[16]. This included representatives from
356: the [4mM[24m [4mTechnology[24m [4mAssociation[24m (an M vendor association having sev-
357: eral foreign branches), the [4mM[24m [4mDevelopment[24m [4mCommittee[24m (the M stan-
358: dards organization hosting the ANSI/ISO standards for the M lan-
359: guage, then sponsored by the M Technology Association), and oth-
360: ers[17]. The goals of this team were to:
361:
362: +o Meet Shalom's requirements for a public release of FreeMUMPS
363:
364: +o Convert FreeMUMPS into the first interpreter component of the
365: GUMP
366:
367: During this period, Ronald L. Fox of Diagnostic Laboratory
368: Services in Honolulu, HI (who passed in 2010)[18] ported Free-
369: MUMPS from SCO UNIX to Red Hat 5 and glibc-6[19]. Steve
370: "Saintly" Zeck of the U.C. Davis Veterinary Medical Teaching Hos-
371: pital[20] also attempted to rewrite the symbol table code to lift
372: string size limits[21], David Whitten enhanced some of the imple-
373: mentation-specific extensions, and Lawrence Landis integrated
374: Zeck's symbol table work.
375:
376: -----------
377: [16] Walters, [4mHistory,[24m p. 19.
378: [17] Landis, Lawrence D., "Contributers.txt [sic],"
379: [4mGeneric[24m [4mUniversal[24m [4mMUMPS[24m [4mProject[24m (1998). See
380: https://l.mumps.dev/a.
381: [18] Robinson, Angie and Utley, Mark, [4mRonald[24m [4mL.[24m [4mFox[0m
382: [4m(1951-2010),[24m Find a Grave, Lehi. See https://l.mumps.dev/e.
383: [19] Fox, Ronald L., "FreeMUMPS source and docs available
384: in tgz format," [4mmumps-l[24m [4mmailing[24m [4mlist,[24m Honolulu (19 Jan
385: 1999). See https://l.mumps.dev/d.
386: [20] Zeck, Steven, [4mAbout[24m [4mSteve[24m [4mZeck,[24m Davis (1998). See
387: https://l.mumps.dev/m.
388: [21] Zeck, Steven, "FreeM String Lengths," [4mGeneric[24m [4mUniver-[0m
389: [4msal[24m [4mM[24m [4mProject[24m [4mMailing[24m [4mList[24m (21 May 1999). See
390: https://l.mumps.dev/i.
391:
392:
393:
394:
395:
396:
397:
398:
399:
400: -7-
401:
402:
403: In FreeM 0.1.0, the name of the implementation was changed
404: from FreeMUMPS to Public Standard M, and again to Free Standard
405: MUMPS and then FreeM when it was discovered leading up to the
406: FreeM 0.2.0 release that the PSM acronym was already in use for
407: Patterson & Gray's[22] M implementation[23]. Dr. Walters also
408: received the implementation ID of 49 from then secretary of the M
409: Development Committee, Don Piccone[24].
410:
411: One of the contributors to FreeM at this stage--primarily in
412: the area of M vendor routines--was Axel Trocha, who would later
413: maintain a private fork of FreeM[25].
414:
415: [1m7. GT.M RELEASED AS FREE SOFTWARE[0m
416:
417: GT.M, an acronym for [4mGreystone[24m [4mTechnology[24m [4mMUMPS[24m, is an M im-
418: plementation that was released by Greystone Technology in 1986.
419: Greystone was later acquired by Sanchez Computer Associates,
420: which was in turn acquired by Fidelity National Information Ser-
421: vices[26].
422:
423: When GT.M was released under the GNU General Public License
424: in 2000[27], it seemed to many to obviate the [4mraison[24m [4md'etre[24m for
425: FreeM, as GT.M was a well-established, robust, and high-perfor-
426: mance M implementation with which FreeM could not then compete.
427: Unfortunately, at this time, the GUMP and FreeM projects lost all
428: of their momentum, and new development along these lines rapidly
429: ceased. The final GUMP team release of FreeM was 0.5.0[28]. How-
430: ever, Axel Trocha's private port would continue to be developed
431: for some years.
432:
433: [1m8. FORKED BY AXEL TROCHA[0m
434:
435: When the free software release of GT.M stalled the GUMP
436: team's progress on the primary branch of development, Axel
437: -----------
438: [22] Landis, Lawrence D., "Generic Universal MUMPS
439: Project," [4mSourceForge[24m (1999). See https://l.mumps.dev/6.
440: [23] Landis, Lawrence D., "Changes.GUM," [4mGeneric[24m [4mUniversal[0m
441: [4mMUMPS[24m [4mProject[24m (18 Feb 2000). See https://l.mumps.dev/5.
442: [24] [4mIbid.[0m
443: [25] Trocha, Axel, [4mFree[24m [4mMumps[24m (2 Sep 2004). See
444: https://l.mumps.dev/3.
445: [26] Finextra, [4mFidelity[24m [4mNational[24m [4mFinancial[24m [4macquires[0m
446: [4mSanchez,[24m Finextra Research Limited, London (29 Jan 2004).
447: See https://l.mumps.dev/c.
448: [27] Ryan, Greg and Bhaskar, K.S., [4mSanchez[24m [4mOffers[24m [4mGT.M[0m
449: [4mDatabase[24m [4mas[24m [4mOpen[24m [4mSource[24m [4mFreeware[24m [4mto[24m [4mGNU/Linux[24m [4mUsers,[24m Linux
450: Today, Nashville (7 Nov 2000). See https://l.mumps.dev/b.
451: [28] Diamond, Jon, Dorman, Rod, Gerum, Winfried, Kreis,
452: Greg, Landis, Lawrence D., Milligan, Lloyd, Morris, Steve,
453: Murray, John, Pastoors, Wilhelm, Schell, Kate, Schofield,
454: Lyle, Trocha, Axel, Walters, Dr. Richard F., and Whitten,
455: David, [4mFreeM[24m [4m0.5.0,[24m Generic Universal M Project, Roseville
456: (15 Apr 1999). See https://l.mumps.dev/j.
457:
458:
459:
460:
461:
462:
463:
464:
465:
466: -8-
467:
468:
469: Trocha, an aforementioned contributor, continued development on
470: the FreeM source code. Trocha added many interesting features to
471: the FreeM codebase, including:
472:
473: +o A native port to Microsoft Windows
474:
475: +o Compiling FreeM as an Apache web server module, allowing FreeM
476: to be used easily for web development
477:
478: +o The ability to output HTML code in a heredoc-style format, with
479: any line of code beginning with a left angle bracket being in-
480: terpreted as HTML with support for interpolated M locals and
481: globals
482:
483: +o Extensions allowing FreeM to be used as a command-line shell,
484: along the lines of UNIX [4mbash[24m, Windows [4mcmd.exe[24m, etc.
485:
486: Trocha also maintains ownership of the [4mfreem.net[24m Internet
487: domain[29], and continued issuing public releases of his FreeM
488: port on that site until sometime after 2004, at which point this
489: fork was made entirely private. Currently, freem.net is a blank
490: page. However, Trocha's fork of FreeM continues to the
491: present[30] as the back-end storage engine and programming envi-
492: ronment for the [4mElven[24m [4mRunes[24m website[31]. The author has communi-
493: cated with Mr. Trocha on occasion, and though he is supportive of
494: the author's efforts, has chosen to remain in the background.
495:
496: [1m9. RESUMING PRIMARY DEVELOPMENT[0m
497:
498: In 2011, the author downloaded the FreeM source code from
499: the GUM Project's SourceForge repository--dormant since 2000--and
500: updated it just enough that it would compile and run on modern
501: GNU/Linux systems. The author also quickly updated FreeM to sup-
502: port terminal sizes larger than 80x24.
503:
504: [1m10. TAKING MAINTAINERSHIP[0m
505:
506: In 2014, Lawrence Landis transferred administrative access
507: of the GUMP repository, conferring maintainership of the primary
508: branch of FreeM development to the author. Since then, many fea-
509: tures have been added and many bugs corrected, including:
510:
511: +o Adding support for proper namespaces, configured through a
512: [4mfreem.conf[24m file, which standardizes routine and global storage
513: locations
514:
515:
516: -----------
517: [29] Whois.net, [4mWhois[24m [4mfreem.net[24m [4m(see[24m [4mName[24m [4mServers[24m [4mfields)[0m
518: (8 Feb 2025). See https://l.mumps.dev/n.
519: [30] Trocha, Axel, [4mFreeM[24m [4mdevelopment[24m [4mhas[24m [4mbeen[24m [4mrestarted[0m
520: [4m(E-mail)[24m (30 Mar 2020).
521: [31] Elizalde and Trocha, Axel, [4mElven[24m [4mRunes:[24m [4mA[0m
522: [4mTolkien/MUME[24m [4mFan[24m [4mSite.[24m See https://l.mumps.dev/q.
523:
524:
525:
526:
527:
528:
529:
530:
531:
532: -9-
533:
534:
535: +o Adding support for Structured System Variables
536:
537: +o Adding support for the asynchronous event specification from
538: MDC Type A proposal [4mX11/1998-28[24m[32]
539:
540: +o Adding support for constants via the [4mCONST[24m keyword
541:
542: +o Adding a [4mWITH[24m command allowing the specification of an implicit
543: prefix to all subsequent variable references
544:
545: +o Adding a runtime [4mWATCH[24m command, tracking changes to specified
546: local or global variables
547:
548: +o Adding an [4mASSERT[24m command, which will fail with an error message
549: if the following expression evaluates [4mfalse[0m
550:
551: +o Removing the Steve Zeck symbol table implementation--which was
552: unreliable--and reverting to the original implementation
553:
554: +o Adding support for the GNU [4mreadline[24m library, with persistent
555: command line history and editing
556:
557: +o Adding REPL-like functionality (in direct mode, any M expres-
558: sion beginning with a number will be prepended with an implicit
559: [4mWRITE[24m)
560:
561: +o Adding transaction processing
562:
563: +o Adding [4mKVALUE[24m and [4mKSUBSCRIPTS[0m
564:
565: +o Preparing to support the [4mM[24m [4mWindowing[24m [4mAPI[24m (MWAPI)
566:
567: +o Adding the [4mfmadm[24m command-line utility, for system administra-
568: tion functions
569:
570: +o Adding support for after-image journaling and forward recovery
571: of globals
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585: -----------
586: [32] Smith, Arthur B., "Event Processing," X11/1998-28,
587: MUMPS Development Committee SC15/TG4 (28 Jun 1998). See
588: https://l.mumps.dev/f.
589:
590:
591:
592:
593:
594:
595:
596:
597:
598: -10-
599:
600:
601: +o Writing a [4mtexinfo[24m manual, from which the HTML manual is derived
602:
603: +o Porting to Solaris/SPARC, Solaris/x86, Linux/s390x,
604: Linux/armv6l, Linux/armv7l, SCO OpenServer 5.0.7, Tru64
605: UNIX/alpha, AIX/ppc, Mac OS X/x86, GNU HURD, Cygwin, NetBSD,
606: FreeBSD, OpenBSD, and WSL1/2
607:
608: In addition, the FreeM web site[33] was created, to distribute
609: downloads and documentation.
610:
611: [1m11. FUTURE[0m
612:
613: FreeM is envisioned as a client-oriented desktop M implemen-
614: tation, for developing graphical user interfaces that will run on
615: mobile and desktop devices.
616:
617: The author also intends to adopt the original vision of the
618: GUMP team, dividing FreeM's functionality into discrete compo-
619: nents having a well-specified public interface, with the ability
620: to run in distributed computing environments over a network.
621:
622: FreeM's mission is to advance the state-of-the-art in M im-
623: plementations, and push the evolution of the language forward.
624: Maintaining portability to as many vintage and modern UNIX sys-
625: tems as possible is held as a high priority, while portability of
626: M routines and MDC standards compliance will be maintained
627: through the use of the new [4m$ZDIALECT[24m intrinsic special variable
628: to ensure that such compliance does not conflict with the primary
629: goal of elegantly advancing the state-of-the-art and finding new
630: audiences for the concepts originated by Neil Pappalardo and Octo
631: Barnett in 1966.
632:
633: The FreeM project is also strongly committed to free soft-
634: ware principles, and is firmly aligned with the goals of the GNU
635: Project and the Free Software Foundation, believing that the eth-
636: ical concerns surrounding proprietary software are at least as
637: important as the practical concerns espoused by the Open Source
638: movement[34].
639:
640: [1m12. CONCLUSION[0m
641:
642: FreeM has seen a colorful and turbulent history, touched by
643: many capable hands. Though public development of any strain of
644: the implementation was dormant for nearly a decade, fourteen
645: years of almost continuous development have passed since the
646: project resumed in 2011, and a decade since official maintainer-
647: ship passed in 2014, and great progress has been made.
648:
649: -----------
650: [33] Willis, Serena, [4mFreeM,[24m Coherent Logic Development,
651: Las Cruces. See https://l.mumps.dev/o.
652: [34] Stallman, Richard M., "Free Software, Free Society:
653: Selected Essays of Richard M. Stallman" (1-882114-98-1),
654: p. 57, Free Software Foundation, Boston (2002).
655:
656:
657:
658:
659:
660:
661:
662:
663:
664: -11-
665:
666:
667: FreeM--as is the case for all M projects--presses forward in
668: a period where the future of the M programming language is uncer-
669: tain. M Development Committee efforts concurrent with FreeM de-
670: velopment have been sporadic and have missed many milestones, the
671: community's most prominent members are aging, and many organiza-
672: tions have migrated from large M applications to what is per-
673: ceived as more "modern" replacements.
674:
675: It is the opinion of the author that the tight integration
676: of an expressive and dynamic language with a robust and perfor-
677: mant persistent storage engine makes M a natural candidate for
678: many new and general applications. Modern application development
679: is plagued by overwhelming bars to entry, requiring mastery of
680: many languages and database management systems and the bulky in-
681: terfaces connecting them.
682:
683: Though not without significant warts accreted over the
684: years, M has no such overhead. Thus, FreeM seeks to press its
685: philosophical advantages by mitigating the language's accumulated
686: cruft, and adding clean interfaces addressing the needs of today.
687: With these goals in mind, development proceeds apace.
688:
689: [1m13. ACKNOWLEDGMENTS[0m
690:
691: Certainly, the intellects responsible for giving us M are
692: too numerous to mention by name, but their importance cannot be
693: overstated. The author would like to especially credit Lawrence
694: Landis for his early and innumerable contributions to her devel-
695: opment, both generally as a practitioner of software development,
696: and specifically for introducing her to the M programming lan-
697: guage, and inculcating in her a love of exploration and innova-
698: tion.
699:
700: To the author's wife, Miriam--a brilliant technologist in
701: her own right--and daughters (without whose inestimable patience
702: and understanding as the author buries herself in countless pas-
703: sion projects, such projects would not be possible) the deepest
704: and most profound gratitude and love are due.
705:
706:
707:
708:
709:
710:
711:
712:
713:
714:
715:
716:
717:
718:
719:
720:
721:
722:
723:
724:
725:
726:
727:
728:
729:
730: -12-
731:
732:
733: [1m14. COPYRIGHT AND LICENSE[0m
734:
735: This document is Copyright (C) 2025 Serena Willis
736:
737: Permission is granted to copy, distribute and/or modify this doc-
738: ument under the terms of the GNU Free Documentation License[35],
739: Version 1.3 or any later version published by the Free Software
740: Foundation; with no Invariant Sections, with no Front-Cover
741: texts, and with no Back-Cover Texts.
742:
743: [4m$Id: freem_history.txt,v 1.1 2025/05/02 12:44:48 snw Exp $[0m
744:
745:
746:
747:
748:
749:
750:
751:
752:
753:
754:
755:
756:
757:
758:
759:
760:
761:
762:
763:
764:
765:
766:
767:
768:
769:
770:
771:
772:
773:
774:
775:
776:
777:
778:
779:
780:
781:
782:
783:
784: -----------
785: [35] Free Software Foundation, [4mGNU[24m [4mFree[24m [4mDocumentation[24m [4mLi-[0m
786: [4mcense[24m [4m1.3,[24m Boston. See https://l.mumps.dev/p.
787:
788:
789:
790:
791:
792:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>