File:  [Coherent Logic Development] / freem / TODO
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jan 19 02:04:04 2025 UTC (2 months, 1 week ago) by snw
Branches: MAIN, CoherentLogicDevelopment
CVS tags: v0-62-3, v0-62-2, v0-62-1, v0-62-0, start, HEAD
FreeM

* = TODO
- = DONE

Core MUMPS
==========
* Extend string lengths to 16MiB throughout (especially symbol table and globals)
* Support the MDC X Window System binding
* Support MWAPI via the Motif widget set
* Support OMI
* Add optional compile-time support for libcurl, using pthreads and X11/1998-28 async events for the request/response lifecycle
* Verify that all SSVNs needing to be switched from global storage to shared memory storage have had this migration done
* Correct LOCKs to be hierarchical, correct, and MDS-compliant
  (hierarchical locks added 12-23-2024 by snw)
* Add optional compile-time support for libpcre with some kind of ^$JOB flag, to allow for Perl-compatible REs in pattern matching
* Rewrite MERGE as native code for performance
* Provide a callout interface for native library usage
* Add support for JSON-M parsing and generation
* Add support for user-defined collation algorithms written in M
* Finish refactoring xecline to have command implementations in their own functions and compilation units
* Finish moving VIEW/$VIEW features into SSVNs and/or libraries
* Make environment daemons monitor changes in the filesystem and handle updates to ^$ROUTINE and ^$GLOBAL
* Add interface to edit routines via ^$ROUTINE
* Generalize Shalom's currency conversion extension
* Finish debugger

Input/Output
============
* Rewrite terminal I/O code to use termcap/terminfo
* Make FreeM I/O commands syntax-compatible with Reference Standard M
* Add support for pipes
* Complete support for sockets (add server sockets to include forking servers, support IPv6 and UDP throughout, support RSM syntax and semantics)
* Remove dedicated I/O channel ranges
* Make support for control mnemonics work like Reference Standard M (i.e., mnemonic spaces should be implemented in M)

Daemon/Shared Memory
====================
* Debug issues with starting from init (daemon quits sporadically without an error when launched under systemd)
- Correct the problem where the daemon will leave the terminal in a bad state when exiting

FreeM Administrator (fmadm)
===========================
* Fix issues created by multi-environment support (most options don't currently work)
* Support creating and removing namespaces

Global Handler
==============
* Add header with magic value to all DB files, to include magic value, block size, FreeM version, endianness, last transaction number written, replication information, and collation
* Add fields to block footers to support metadata for OO
* Add fields to block footers for transaction number and journal sequence number, to enable future support of before-image journaling
* Support block sizes other than 1K
* Support block-spanning nodes
* Make block size variable rather than using a preprocessor macro

Journaling
==========
* Add automatic journal recovery with after-image journaling, especially for transaction processing
* Add replication by sending journals over TCP/IP to a receiver that replays them (in daemon on sender side)

Libraries
=========
* Support OO classes as return types and argument types
* Implement MTUI-like functionality library as OO library
* Implement I/O classes to wrap primitive M I/O

Object-Oriented Programming
===========================
* Support nested calls in OO method dispatch
* Support objects instantiated in globals
* Support dot notation for member vars rather than methods only

Documentation
=============
* Finish the FreeM manual to include tutorial content as well as full documentation of OO features
* Add a more accessible administrator section or a separate administrator's manual

Testing, Integration, Deployment
================================
* Refactor and improve CI/CD scripts
* Develop a test suite (relies on the terminal I/O rewrite for much)
* Make sure FreeM can pass the MVTS (will require learning the MVTS)

CI/CD System
============
* Generalize scripts
* Make flexible enough to run CI/CD checks without generating a full release
* Deploy storage environment compatible with older UNIXes, including fibre channel

Ports
=====
* Fix ARM-based ports
* Verify readline support exists wherever available
* Port to SunOS 4.1.4
* Port to SGI IRIX (32-bit and 64-bit) (requires solving build chain issues on the Indy)
* Port to HP-UX (PA-RISC 32-bit, 11.00)
* Verify operation on AIX 7x
* Try to restore support for GNU HURD (will require an alternative to SysV semaphores)
* Examine possibility of porting to POSIX environment on VMS (perhaps FreeM-Lite?)
* Examine possibility of porting to emx on OS/2 (perhaps FreeM-Lite?)
* Examine possibility of porting to DJGPP on MS-DOS (definitely FreeM-Lite, single-user)
* Verify current functionality of GNU/Linux-on-s390 port

Build Farm
==========
* Restore AIX 5L 5.1
* Add AIX 7x
* Get HP9000 working with build chain (need a BlueSCSI and a fix for power switch; possible re-cap of boards and PSUs)
* Restore Linux on System/390 and zArchitecture (requires Hercules emulator)
* Restore hemera (will require a new hard drive or BlueSCSI-type device, or FC) for Solaris 7
* Restore yuna and move from Solaris 10 to Solaris 8
* Add SunOS 4.1.4 
* Make SCO OpenServer more reliable
* Add all systems to new build farm

Packaging
=========
* Finish NetBSD pkgsrc package and get it moved from pkgsrc-wip to pkgsrc
* Create packages for:
  * Solaris 7-11
  * Illumos (OpenIndiana, OmniOS)
  * FreeBSD
  * OpenBSD
  * Debian GNU/Linux
  * Slackware Linux
  * rpm/yum/dnf/zypper
  * Arch Linux
  
Applications
============
* Support Victory Programming Environment (VPE)
* Support Standalone Fileman
* Support VistA (target OSEHRA VistA and WorldVistA; FOIA is not a priority)
* Provide moral and technical support and encouragement for DLW to get NodeM support finished
* Provide Java binding
  * Implement CFMumps connector for this
* Provide Apache module for CGI scripting

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