File:  [Coherent Logic Development] / freem / README.md
Revision 1.4: download - view: text, annotated - select for diffs
Sat May 17 17:04:22 2025 UTC (2 weeks ago) by snw
Branches: MAIN
CVS tags: HEAD
Update credits in README.md

FreeM is a work-in-progress implementation of the MUMPS programming language, and attempts to conform to ANSI Standard MUMPS X11.1-1995.

## Unique Features

FreeM has several unique features:

* FreeM is the only current M implementation to offer support for asynchronous events from MDC extension proposal X11/1998-28
* It allows the programmer to define new Z-commands as M routines
* It allows the programmer to define new $Z... ISVs as M routines
* It supports extensive command-line history, editing, and recall through GNU readline in direct mode
* It supports using shebang-lines to run M routines as sysadmin scripts

## History

FreeM started its life as FreeMUMPS, written for MS-DOS and ported to Linux and SCO UNIX by a mysterious individual going by the name of "Shalom ha-Ashkenaz". It was released to MUG/Deutschland in 1998, and maintenance was taken over by the GUMP (Generic Universal M Project) thereafter, which changed its name first to PSM (Public Standard MUMPS) and then by popular request to FreeM.

When GT.M was open-sourced in late 1999, FreeM and GUMP were essentially abandoned. L.D. Landis, the owner of the original GUMP SourceForge project, and one of FreeM's significant contributors, passed maintenance of FreeM and ownership of its SourceForge project to Serena Willis in 2015. At this point, FreeM would not compile or run on modern Linux systems, so steps were taken to remedy the most pressing issues in the codebase. Limitations on the terminal size (previously hard-coded to 80x25) were lifted, and new $VIEW functions were added to retrieve the terminal size information. $X and $Y intrinsic special variables were updated to support arbitrary terminal sizes, and FreeM was once again able to build and run.

## License

Copyright (C) 1998 MUG Deutschland
Copyright (C) 2014, 2020 Coherent Logic Development LLC

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more details.
 
You should have received a copy of the GNU Affero General Public License along with this program.  If not, see https://www.gnu.org/licenses/.

This README document is Copyright (C) 2020, 2025 Serena Willis

Permission is granted to copy, distribute and/or modify this document under the 
terms of the GNU Free Documentation License, Version 1.3 or any later version 
published by the Free Software Foundation; with no Invariant Sections, with no 
Front-Cover texts, and with no Back-Cover Texts.

## Building and Installation

FreeM has four methods of installation:

### Binary Repository
For recent versions of the Ubuntu and Debian distributions of GNU/Linux, we provide package repositories from which FreeM may easily be installed. See the [FreeM Wiki](https://freem-wiki.coherent-logic.com) for more information, and the [Coherent Logic package repository](https://packages.coherent-logic.com) for instructions.

If available, this is the simplest method of installing FreeM.

### Binary Packages
We provide binary packages of FreeM for _dpkg_ and _rpm_-based distributions of GNU/Linux, and _pkgadd_ packages for Solaris 8-10 and Illumos distributions. If you cannot use repositories, this is the easiest option.

See [Binaries](https://freem.coherent-logic.com/binaries.cfm) for downloads and instructions.

### Source Tarball
If you prefer installing from source, we recommend that you download the latest _.tar.gz_ file from [Downloads](https://freem.coherent-logic.com/downloads.cfm) and follow these steps:

```
$ gunzip freem-<version>.tar.gz
$ tar xvf freem-<version>.tar
$ cd freem
$ ./configure
$ make
$ sudo make install
```

Once this is done, you may proceed to _Initial Configuration (Source Installs)_.

### CVS
This installation method is by far the most complicated, and is intended only for those who wish to contribute to FreeM development. It is not intended for end users, and no technical support will be provided.

See the _Contributor Guide_ on the [FreeM Wiki](https://freem-wiki.coherent-logic.com) for more information about this build type.

If you wish to try the bleeding-edge development version of FreeM, you may do so by following these steps:

```
$ cvs -d :pserver:anonymous@cvs.coherent-logic.com:/home/cvsroot co freem
$ cd freem
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

Once this is done, you may proceed to _Initial Configuration (Source Installs)_.

## Initial Configuration (Source Installs)

* Create a _freem_ user and a _freem_ group
* Add any accounts wishing to use FreeM to the _freem_ group
* Run `sudo fmadm configure` to generate the `DEFAULT` environment
* Run `sudo fmadm start environment` to start the `DEFAULT` environment


## Documentation

FreeM documentation is available at https://freem.coherent-logic.com/docs/

## Production Readiness

FreeM is not yet production-ready. 

## Contributors

Current contributors denoted with a plus sign following their name and role.

* Shalom ha-Ashkenaz (Original Implementer)
* Jon Diamond (Library, Utilities, Conformance)
* Winfried Gerum (Code, Advice, MTA coordination)
* Greg Kreis (Hardhats coordination, Dependencies)
* [Larry Landis](https://www.rosecroft.net) (Coordination, Code, Documentation)
* Frederick D.S. Marshall (MDC Standards Conformance) +
* Ken McGlothlen (Apple Silicon build/test environment, proofreading of documentation) +
* Lloyd Milligan (Code, Testing, Documentation)
* Steve Morris (Code, Microsoft)
* John Murray (Code, Conformance)
* Wilhelm Pastoors (Testing, Documentation)
* Kate Schell (Coordination, Conformance, MTA, MDC, Advice)
* Lyle Schofield (Advice, Prioritization, Tracking, Project Management)
* Axel Trocha (Code, Utilities)
* Dick Walters (Project Lead, Chief Coordinator, MTA)
* David Whitten (QA Test Suite, MDC, Advice) +
* [David Wicksell](https://gitlab.com/dlwicksell) (Debugging, Code, Testing) +
* Serena Willis (Current Maintainer and Project Lead) +
* Steve Zeck (Contributions to Symbol Table Management, Code)

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