GNU task list, last updated 6 Mar 1990 Check with gnu@prep.ai.mit.edu, for a possibly more current copy. If you start working steadily on a project, please let gnu@prep know. We might have information that could help you; we'd also like to send you the GNU coding standards. 0. Documentation We very urgently need documentation for some parts of the system that already exist or will exist very soon: A C reference manual. (RMS has written half of one which you could start with). A manual for Ghostscript. Manuals for SH and CSH. Manuals for how to use the system calls and libraries. A better manual for GNU tar. A DIFF manual (not as hard as the others). A LEX manual. A book on how GCC works and why various machine descriptions are written as they are. A manual for programming X-window applications. Manuals for various X window managers. Reference cards for various programs. Utilities needing separate documentation include diff, grep, cpio, less, life, nl, pr, cut and paste, script, patch, prmail, touch, file, find, uuencode and uudecode. 1. imitations of standard parts of Unix: csplit, cu/tip, nlist (library), mt, sdiff. Less urgent: calendar, diction, explain, plot, style. Posix utilities: validfname, xd, stty, mktemp Finish a partially implemented kwic indexer, including ptx functionality. nroff/troff, eqn, tbl, and standard macro packages. Probably the equivalent of troff should output dvi files (tex output files). Some of this is being written. Finish an incomplete vi clone. Add a data-base feature to `find' to make it faster. A tool to examine a C source file and produce a list of `indent' options which describe the style of indentation in use. Write sin, cos, exp, log, arctan and bessel functions for bc. Implement large radices (> 16) for bc. Cross-reference program for C programs (like cxref, etc.) Various other libraries. 2. Kernel projects: Whether we use TRIX or MACH, in either case a new implementation of TCP/IP must be written, and a new disk file system. (Actually, this may no longer be necessary, since BSD's TCP/IP may be declared free, and perhaps the file system from Sprite may be usable.) An over-the-ethernet debugger that will allow the kernel to be debugged from GDB running on another machine. A shared memory X11 server to run under MACH or TRIX is very desirable. The machine specific parts should be kept well separated. 3. Extensions to existing GNU software. Extend GNU Emacs to do desktop publishing. (Talk to us about this). Extend GDB with a C interpreter so the user can change the program during a debugging session. Some parts of this are being worked on. Extend GDB to handle other languages than C. Extend the linker to combine multiple appearances of the same header file, as Sun's linker does. Enhance GCC. See files PROJECTS and PROBLEMS in the GCC distribution. Add a few features to GNU diff: such as handling large input files without reading entire files into core. An nroff macro package to replace texi2roff. Finish implementation of TECO in GNU Emacs Lisp, for short throw-away programs. Extend gprof to handle basic-block profiling, a la tcov. 4. Other random projects: An imitation of Page Maker or Ventura Publisher. An imitation of dbase2 or dbase3 (How dbased!) Improve the free UCB version of the Ingres database system to make it competitive with RTI Ingres. Draw programs for the X window system. Font editor for the X window system (if it doesn't already have one). A music playing and editing system. A program to typeset C code for printing. For ideas on what to do, see the forthcoming book, Human Factors and Typography for More Readable Programs, Ronald M. Baecker and Aaron Marcus, Addison-Wesley, ISBN 0-201-10745-7 (I don't quite agree with a few of the details they propose.) Speech-generation programs. Speech-recognition programs (single-speaker, disconnected speech). Batch queueing software. Scientific mathematical subroutines. Statistical tools. Software to replace card catalogues in libraries. Grammar and style checking programs. An APL system. A Common Lisp system. (The beginnings of one may be available from MIT or CMU.) Optical character scanning programs; especially if suitable for scanning documents with multiple fonts and capturing font info as well as character codes. It may not be very difficult if you let it "train" on part of the individual document to be scanned, so as to learn what fonts are in use in that document. Ray-tracing software. CAD software, such as a vague imitation of Autocad. A ghostscript to fax program, so that documents can be sent to remote fax machines. Enhance the X back-end for ghostscript. A program to display and edit Hypercard stacks. Note that graphics programs should be written to work with the X window system, a free portable window system from MIT and DEC that we will be using as the window system for GNU. 5. Compilers for other batch languages. Volunteers are needed to write parsers/front ends for languages such as Algol 60, Algol 68, Modula, PL/I, Ada or whatever, to be used with the code generation phases of the GNU C compiler. (C++ is done, and Fortran, Pascal and Modula are being worked on.) It may be possible to adapt the C front end as a lint, preferably not as stupidly stubborn as the Unix lint. But this may not be necessary, given the stronger type checking of ANSI C. 6. Games and recreations Video-oriented games should work with the X window system. Empire (there is a free version but it needs upgrading) Rocky's Boots Chipwits Imitations of your favorite video games: Space war, Asteroids, Pong, SDI, Breakout, Lode Runner, etc. Compute and display Mandelbrot set and Julia sets Flight simulator (I have contacts to get you information on the equations with which you can do accurate simulation) Biomorph evolution (as in Scientific American) A fast simulation of the cellular automaton "life" (see PHYSICA 10D (1984), #1-2 (double issue), pp 75-80 for one method). A program to display effects of moving at relativistic speeds We do not need rogue, as we have hack.