Annotation of freem/TODO, revision 1.2

1.1       snw         1: * = TODO
                      2: - = DONE
                      3: 
                      4: Core MUMPS
                      5: ==========
                      6: * Extend string lengths to 16MiB throughout (especially symbol table and globals)
                      7: * Support the MDC X Window System binding
                      8: * Support MWAPI via the Motif widget set
                      9: * Support OMI
                     10: * Add optional compile-time support for libcurl, using pthreads and X11/1998-28 async events for the request/response lifecycle
                     11: * Verify that all SSVNs needing to be switched from global storage to shared memory storage have had this migration done
                     12: * Correct LOCKs to be hierarchical, correct, and MDS-compliant
                     13:   (hierarchical locks added 12-23-2024 by snw)
                     14: * Add optional compile-time support for libpcre with some kind of ^$JOB flag, to allow for Perl-compatible REs in pattern matching
                     15: * Rewrite MERGE as native code for performance
                     16: * Provide a callout interface for native library usage
                     17: * Add support for JSON-M parsing and generation
                     18: * Add support for user-defined collation algorithms written in M
                     19: * Finish refactoring xecline to have command implementations in their own functions and compilation units
                     20: * Finish moving VIEW/$VIEW features into SSVNs and/or libraries
                     21: * Make environment daemons monitor changes in the filesystem and handle updates to ^$ROUTINE and ^$GLOBAL
                     22: * Add interface to edit routines via ^$ROUTINE
                     23: * Finish debugger
                     24: 
                     25: Input/Output
                     26: ============
                     27: * Rewrite terminal I/O code to use termcap/terminfo
                     28: * Make FreeM I/O commands syntax-compatible with Reference Standard M
                     29: * Add support for pipes
                     30: * Complete support for sockets (add server sockets to include forking servers, support IPv6 and UDP throughout, support RSM syntax and semantics)
                     31: * Remove dedicated I/O channel ranges
                     32: * Make support for control mnemonics work like Reference Standard M (i.e., mnemonic spaces should be implemented in M)
                     33: 
                     34: Daemon/Shared Memory
                     35: ====================
1.2     ! snw        36: - Debug issues with starting from init (daemon quits sporadically without an error when launched under systemd)
1.1       snw        37: - Correct the problem where the daemon will leave the terminal in a bad state when exiting
                     38: 
                     39: FreeM Administrator (fmadm)
                     40: ===========================
                     41: * Fix issues created by multi-environment support (most options don't currently work)
1.2     ! snw        42: - Support creating and removing namespaces
1.1       snw        43: 
                     44: Global Handler
                     45: ==============
1.2     ! snw        46: - 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
1.1       snw        47: * Add fields to block footers to support metadata for OO
                     48: * Add fields to block footers for transaction number and journal sequence number, to enable future support of before-image journaling
                     49: * Support block sizes other than 1K
                     50: * Support block-spanning nodes
                     51: * Make block size variable rather than using a preprocessor macro
                     52: 
                     53: Journaling
                     54: ==========
                     55: * Add automatic journal recovery with after-image journaling, especially for transaction processing
                     56: * Add replication by sending journals over TCP/IP to a receiver that replays them (in daemon on sender side)
                     57: 
                     58: Libraries
                     59: =========
                     60: * Support OO classes as return types and argument types
                     61: * Implement MTUI-like functionality library as OO library
                     62: * Implement I/O classes to wrap primitive M I/O
                     63: 
                     64: Object-Oriented Programming
                     65: ===========================
                     66: * Support nested calls in OO method dispatch
                     67: * Support objects instantiated in globals
                     68: * Support dot notation for member vars rather than methods only
                     69: 
                     70: Documentation
                     71: =============
                     72: * Finish the FreeM manual to include tutorial content as well as full documentation of OO features
                     73: * Add a more accessible administrator section or a separate administrator's manual
                     74: 
                     75: Testing, Integration, Deployment
                     76: ================================
1.2     ! snw        77: - Refactor and improve CI/CD scripts
1.1       snw        78: * Develop a test suite (relies on the terminal I/O rewrite for much)
                     79: * Make sure FreeM can pass the MVTS (will require learning the MVTS)
                     80: 
                     81: CI/CD System
                     82: ============
1.2     ! snw        83: - Generalize scripts
        !            84: - Make flexible enough to run CI/CD checks without generating a full release
1.1       snw        85: * Deploy storage environment compatible with older UNIXes, including fibre channel
                     86: 
                     87: Ports
                     88: =====
1.2     ! snw        89: - Fix ARM-based ports
1.1       snw        90: * Verify readline support exists wherever available
                     91: * Port to SunOS 4.1.4
                     92: * Port to SGI IRIX (32-bit and 64-bit) (requires solving build chain issues on the Indy)
                     93: * Port to HP-UX (PA-RISC 32-bit, 11.00)
                     94: * Verify operation on AIX 7x
                     95: * Try to restore support for GNU HURD (will require an alternative to SysV semaphores)
                     96: * Examine possibility of porting to POSIX environment on VMS (perhaps FreeM-Lite?)
1.2     ! snw        97: - Examine possibility of porting to emx on OS/2 (this works now)
1.1       snw        98: * Examine possibility of porting to DJGPP on MS-DOS (definitely FreeM-Lite, single-user)
                     99: * Verify current functionality of GNU/Linux-on-s390 port
                    100: 
                    101: Build Farm
                    102: ==========
                    103: * Restore AIX 5L 5.1
                    104: * Add AIX 7x
                    105: * Get HP9000 working with build chain (need a BlueSCSI and a fix for power switch; possible re-cap of boards and PSUs)
                    106: * Restore Linux on System/390 and zArchitecture (requires Hercules emulator)
                    107: * Restore hemera (will require a new hard drive or BlueSCSI-type device, or FC) for Solaris 7
1.2     ! snw       108: - Restore yuna and move from Solaris 10 to Solaris 8
1.1       snw       109: * Add SunOS 4.1.4 
                    110: * Make SCO OpenServer more reliable
                    111: * Add all systems to new build farm
                    112: 
                    113: Packaging
                    114: =========
                    115: * Finish NetBSD pkgsrc package and get it moved from pkgsrc-wip to pkgsrc
                    116: * Create packages for:
1.2     ! snw       117:   - Solaris 8
        !           118:   - Solaris 10
        !           119:   * Solaris 11
        !           120:   - Illumos (OpenIndiana)
        !           121:   * Illumos (OmniOS)
1.1       snw       122:   * FreeBSD
                    123:   * OpenBSD
1.2     ! snw       124:   - Debian GNU/Linux
1.1       snw       125:   * Slackware Linux
1.2     ! snw       126:   - rpm/yum/dnf/zypper
1.1       snw       127:   * Arch Linux
                    128:   
                    129: Applications
                    130: ============
                    131: * Support Victory Programming Environment (VPE)
                    132: * Support Standalone Fileman
                    133: * Support VistA (target OSEHRA VistA and WorldVistA; FOIA is not a priority)
                    134: * Provide moral and technical support and encouragement for DLW to get NodeM support finished
                    135: * Provide Java binding
                    136:   * Implement CFMumps connector for this
                    137: * Provide Apache module for CGI scripting

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