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>