Annotation of freem/doc/freem_history.txt, revision 1.1

1.1     ! snw         1: 
        !             2: 
        !             3: 
        !             4: 
        !             5: 
        !             6: 
        !             7: 
        !             8: 
        !             9: 
        !            10:                       The History of FreeM
        !            11: 
        !            12: 
        !            13:                           Serena Willis
        !            14:                    Coherent Logic Development
        !            15: 
        !            16: 
        !            17:                             ABSTRACT
        !            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: 1.  M LANGUAGE OVERVIEW
        !            31: 
        !            32:      MUMPS--now generally referred to as M 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 Massachusetts  General  Hospital
        !            40: Utility  Multi-Programming  System,  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," Computers and Biomedical Re-
        !            56: search 2(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 rou-
        !            76: tines,  which  are  roughly  analagous  to modules or compilation
        !            77: units in more mainstream languages. Routines are then further di-
        !            78: vided into labels (or tags in MUMPS parlance), which serve as en-
        !            79: try points into the routine. Subroutines and functions (the  lat-
        !            80: ter  known as extrinsic functions) are introduced as tags with an
        !            81: optional, parenthesized formallist, being a  list  of  parameters
        !            82: expected by the subroutine or extrinsic function.
        !            83: 
        !            84:      Perhaps  the most unique feature of M, the global, 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 DO ^ROUTINE,  result-
        !            96: ing  in  a  data  structure  in  fixed storage where the elements
        !            97: (known in M parlance as subscripts), i.e., "Willis, Serena",  are
        !            98: automatically  sorted on insertion, allowing for rapid retrieval.
        !            99: Rough analogues can be found in the  PICK  operating  system,  as
        !           100: well  as BBN FILECOMP, 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," New England Journal of Medicine 282(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., An On-Line Computer Facility for Systematized In-
        !           125: put of Radiology Reports,  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 MGH  MUMPS  from  Massachusetts
        !           140: General  Hospital, and Digital Standard MUMPS 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:                 Vendor                                              Implementation
        !           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:           Figure 1. Partial list of M implementations.
        !           163: 
        !           164: 
        !           165: 2.  EARLY HISTORY OF FREEM
        !           166: 
        !           167:      FreeM  was developed in Germany in the mid-1990s by a devel-
        !           168: oper who went by the pseudonym Shalom ha-Ashkenaz,  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  Open M product, which would later become
        !           175: InterSystems Cache[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),"  M
        !           191: Computing 7(2), p. 19 (May 1999). See https://l.mumps.dev/4.
        !           192:   [5] Ibid. p. 18.
        !           193: 
        !           194: 
        !           195: 
        !           196: 
        !           197: 
        !           198: 
        !           199: 
        !           200: 
        !           201: 
        !           202:                                -4-
        !           203: 
        !           204: 
        !           205:                     Implementation             Year
        !           206:            DataTree MUMPS (DTM)               1993
        !           207:            Digital Standard MUMPS (DSM)       1995[6]
        !           208:            Micronetics Standard MUMPS (MSM)   1998
        !           209: 
        !           210:    Figure 2. M implementations absorbed by InterSystems Corp.
        !           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 scoansi terminal type, including colors and  ANSI
        !           227: X3.64 control mnemonics.
        !           228: 
        !           229: 3.  INITIAL INVOLVEMENT
        !           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 mumpster.org forums[10].
        !           246: 
        !           247: -----------
        !           248:   [6] Goelz, Larry and Paladino, John, Cover Letter re  DSM,
        !           249: Compaq  Computer  Corporation,  Houston  (31  May 1999). See
        !           250: https://l.mumps.dev/r [dead link].
        !           251:   [7] ha-Ashkenaz, Shalom, "README," Generic Universal MUMPS
        !           252: Project (18 Jun 1998). See https://l.mumps.dev/7.
        !           253:   [8] Willis, Serena,  "Platform  Notes  (SCO  OpenServer),"
        !           254: FreeM Wiki (3 Aug 2023). See https://l.mumps.dev/8.
        !           255:   [9] Landis,  Lawrence   D.,   "Generic   Universal   MUMPS
        !           256: Project," SourceForge (1999). See https://l.mumps.dev/6.
        !           257:   [10] Willis,  Serena,  "FreeM 0.1.4," Mumpster (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: 4.  GENERIC UNIVERSAL M PROJECT
        !           276: 
        !           277:      The  Generic Universal M Project 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: 5.  FREEM DONATED TO MUG DEUTSCHLAND
        !           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 ANSI X11.1-1995
        !           308: 
        !           309: +o Use Structured System Variables instead of  VIEW  commands  and
        !           310:   $VIEW functions
        !           311: 
        !           312: 
        !           313: -----------
        !           314:   [11] Landis,  Lawrence  D.,   "Generic   Universal   MUMPS
        !           315: Project," SourceForge (1999). See https://l.mumps.dev/6.
        !           316:   [12] Landis, Lawrence D., "C2M," Generic  Universal  MUMPS
        !           317: Project (1998). See https://l.mumps.dev/9.
        !           318:   [13] Morris,  Steve,  "GUM API," www.rosecroft.net (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,"  Coherent  Logic
        !           322: Development GitLab (12 Jun 1995). See https://l.mumps.dev/l.
        !           323:   [15] ha-Ashkenaz,   Shalom,  "README,"  Generic  Universal
        !           324: MUMPS Project (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: 6.  MERGING GUMP AND FREEM
        !           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 M Technology Association (an M vendor association having sev-
        !           357: eral foreign branches), the M Development Committee (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, History, p. 19.
        !           378:   [17] Landis,   Lawrence   D.,   "Contributers.txt  [sic],"
        !           379: Generic    Universal    MUMPS    Project     (1998).     See
        !           380: https://l.mumps.dev/a.
        !           381:   [18] Robinson,  Angie  and  Utley,  Mark,  Ronald  L.  Fox
        !           382: (1951-2010), Find a Grave, Lehi. See https://l.mumps.dev/e.
        !           383:   [19] Fox,  Ronald L., "FreeMUMPS source and docs available
        !           384: in tgz format,"  mumps-l  mailing  list,  Honolulu  (19  Jan
        !           385: 1999). See https://l.mumps.dev/d.
        !           386:   [20] Zeck, Steven, About Steve  Zeck,  Davis  (1998).  See
        !           387: https://l.mumps.dev/m.
        !           388:   [21] Zeck, Steven, "FreeM String Lengths," Generic Univer-
        !           389: sal   M   Project   Mailing   List   (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: 7.  GT.M RELEASED AS FREE SOFTWARE
        !           416: 
        !           417:      GT.M, an acronym for Greystone Technology MUMPS, 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 raison d'etre 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: 8.  FORKED BY AXEL TROCHA
        !           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," SourceForge (1999). See https://l.mumps.dev/6.
        !           440:   [23] Landis, Lawrence D., "Changes.GUM," Generic Universal
        !           441: MUMPS Project (18 Feb 2000). See https://l.mumps.dev/5.
        !           442:   [24] Ibid.
        !           443:   [25] Trocha,  Axel,  Free  Mumps   (2   Sep   2004).   See
        !           444: https://l.mumps.dev/3.
        !           445:   [26] Finextra,  Fidelity   National   Financial   acquires
        !           446: Sanchez,  Finextra  Research  Limited, London (29 Jan 2004).
        !           447: See https://l.mumps.dev/c.
        !           448:   [27] Ryan,  Greg  and  Bhaskar,  K.S., Sanchez Offers GT.M
        !           449: Database as Open Source Freeware to GNU/Linux  Users,  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,  FreeM  0.5.0, 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 bash, Windows cmd.exe, etc.
        !           485: 
        !           486:      Trocha  also  maintains  ownership of the freem.net 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 Elven Runes 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: 9.  RESUMING PRIMARY DEVELOPMENT
        !           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: 10.  TAKING MAINTAINERSHIP
        !           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:   freem.conf  file, which standardizes routine and global storage
        !           513:   locations
        !           514: 
        !           515: 
        !           516: -----------
        !           517:   [29] Whois.net, Whois freem.net (see Name Servers  fields)
        !           518: (8 Feb 2025). See https://l.mumps.dev/n.
        !           519:   [30] Trocha,  Axel,  FreeM  development has been restarted
        !           520: (E-mail) (30 Mar 2020).
        !           521:   [31] Elizalde   and   Trocha,   Axel,   Elven   Runes:   A
        !           522: Tolkien/MUME Fan Site. 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 X11/1998-28[32]
        !           539: 
        !           540: +o Adding support for constants via the CONST keyword
        !           541: 
        !           542: +o Adding a WITH command allowing the specification of an implicit
        !           543:   prefix to all subsequent variable references
        !           544: 
        !           545: +o Adding  a  runtime WATCH command, tracking changes to specified
        !           546:   local or global variables
        !           547: 
        !           548: +o Adding an ASSERT command, which will fail with an error message
        !           549:   if the following expression evaluates false
        !           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 readline 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:   WRITE)
        !           560: 
        !           561: +o Adding transaction processing
        !           562: 
        !           563: +o Adding KVALUE and KSUBSCRIPTS
        !           564: 
        !           565: +o Preparing to support the M Windowing API (MWAPI)
        !           566: 
        !           567: +o Adding  the  fmadm 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 texinfo 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: 11.  FUTURE
        !           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 $ZDIALECT 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: 12.  CONCLUSION
        !           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, FreeM,  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: 13.  ACKNOWLEDGMENTS
        !           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: 14.  COPYRIGHT AND LICENSE
        !           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: $Id: freem_history.ms,v 1.21 2025/04/28 14:42:52 snw Exp $
        !           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, GNU Free Documentation  Li-
        !           786: cense 1.3, Boston. See https://l.mumps.dev/p.
        !           787: 
        !           788: 
        !           789: 
        !           790: 
        !           791: 
        !           792: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>