Annotation of freem/TODO, revision 1.1

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

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