File:  [Coherent Logic Development] / freem / doc / freem_history.txt
Revision 1.1: download - view: text, annotated - select for diffs
Fri May 2 12:44:48 2025 UTC (3 months ago) by snw
Branches: MAIN
CVS tags: HEAD
Documentation updates

    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.txt,v 1.1 2025/05/02 12:44:48 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>