\input texinfo @c -*-texinfo-*-@c %**start of header@setfilename tasks.info@settitle GNU Task List@c UPDATE THIS DATE WHENEVER YOU MAKE CHANGES!@set lastupdate 6 February 1995@c %**end of header@setchapternewpage off@titlepage@title GNU Task List@author Free Software Foundation@author last updated @value{lastupdate}@end titlepage@ifinfo@node Top, Documentation, (dir), (dir)@top GNU Task ListThis file is updated automatically from @file{tasks.texi}, which waslast updated on @value{lastupdate}.@end ifinfoCheck with @code{gnu@@prep.ai.mit.edu}, for a possibly more current copy.This task list is not exclusive; any other useful program might be agood project---but it might instead be something we already have, socheck with @code{gnu@@prep} before you start writing it.@menu* Documentation::* Unix-Related Projects::* Kernel Projects::* Extensions::* X Windows Projects::* Other Projects::* Compilers::* Games and Recreations::@end menuIf you start working steadily on a project, please let @code{gnu@@prep}know. We might have information that could help you; we'd also like tosend you the GNU coding standards.Because of the natural tendency for most volunteers to writeprogramming tools or programming languages, we have a comparativeshortage of applications useful for non-programmer users. Therefore,we ask you to consider writing such a program.In general, a new program that does a completely new job advances theGNU project more than an improvement to an existing program.@node Documentation@chapter DocumentationWe very urgently need documentation for some parts of the systemthat already exist or will exist very soon:@itemize @bullet@itemCompletion of the documentation for CC-mode, a new C/C++ mode forEmacs Lisp.@itemA C reference manual. (RMS has written half of one which you couldstart with).@itemA manual for Ghostscript.@c@c @item@c A manual for CSH.@c Ick, do we want to encourage using THAT? -djm@itemA manual for PIC (the graphics formatting language).@itemA manual for Perl. (The books that exist are not free, andthus not available to be part of the GNU system.)@itemA manual for Oleo.@itemA book on how GCC works and why various machine descriptionsare written as they are.@itemA manual for programming X-window applications.@itemManuals for various X window managers.@itemReference cards for those manuals that don't have them: Gawk, CCompiler, Make, Texinfo, Termcap and maybe the C Library.@itemMany utilities need documentation, including @code{grep}, @code{cpio},and other small utilities.@end itemize@node Unix-Related Projects@chapter Unix-Related Projects@itemize @bullet@itemWe could use an emulation of Unix @code{spell}, which would run byinvoking @code{ispell}.@itemLess urgent: @code{diction}, @code{explain}, @code{style}.@itemAn improved version of the POSIX utility @code{pax}. There is one onthe Usenet, but it is said to be poorly written. Talk with@code{mib@@gnu.ai.mit.edu} about this project.@ignore@itemModify the GNU @code{dc} program to use the math routines of GNU@code{bc}.@end ignore@itemA @code{grap} preprocessor program for @code{troff}.@itemVarious other libraries.@itemAn emulation of SCCS that works using RCS.@end itemize@node Kernel Projects@chapter Kernel-Related Projects@itemize @bullet@itemAn over-the-ethernet debugger stub that will allow the kernel to bedebugged from GDB running on another machine.This stub needs its own self-contained implementation of all protocolsto be used, since the GNU system will use user processes to implementall but the lowest levels, and the stub won't be able to use thoseprocesses. If a simple self-contained implementation of IP and TCP isimpractical, it might be necessary to design a new, simple protocolbased directly on ethernet. It's not crucial to support high speed orcommunicating across gateways.It might be possible to use the Mach ethernet driver code, but it wouldneed some changes.@itemA shared memory X11 server to run under MACH is very desirable. Themachine specific parts should be kept well separated.@end itemize@node Extensions@chapter Extensions to Existing GNU Software@itemize @bullet@itemEnhance GCC. See files @file{PROJECTS} and @file{PROBLEMS} in the GCCdistribution.@itemGNU @code{sed} probably needs to be rewritten completely just to make itcleaner.@itemAdd features to GNU Make to record the precise rule with which each filewas last recompiled; then recompile any file if its rule in the makefilehas changed.@itemAdd a few features to GNU @code{diff}, such as handling large inputfiles without reading entire files into core.@itemAn @code{nroff} macro package to simplify @code{texi2roff}.@itemA queueing system for the mailer Smail that groups pending work bydestination rather than by original message. This makes it possibleto schedule retries coherently for each destination. Talk to@code{tron@@veritas.com} about this.Smail also needs a new chief maintainer.@itemEnhanced cross-reference browsing tools. (We now have something atabout the level of @code{cxref}.) We also could use something like@code{ctrace}. (Some people are now working on this project.)@end itemize@node X Windows Projects@chapter X Windows Projects@itemize @bullet@itemAn emulator for Macintosh graphics calls on top of X Windows.@itemA music playing and editing system.@itemA "disk jockey" program to keep track of a collection of recorded musicsamples (songs, etc), and queue up a sequence of them for playing. Thisprogram could use rplay to do the actual playing.@itemA program to edit dance notation (such as labanotation) and displaydancers moving on the screen.@itemPort the Vibrant toolkit to work on X without using Motif.@itemA widget for displaying circle-shaped menus ("pie menus") with Xwindows.@itemA program to display and edit Hypercard stacks.@itemAn interface-builder program to make it easy to design graphicalinterfaces for applications. This could work with the dynamic linkerDLD and C++, loading in the same class definitions that will be usedby the application program.@itemA "desktop" program with drag-and-drop icons and such.@itemAn "empire builder" system that makes it easy to write various kinds ofsimulation games.@itemA paint program, supporting both bitmap-oriented operations andcomponent-oriented operations. @code{xpaint} exists, but isn't veryusable.@itemA program for manipulating photographs---something vaguely like PhotoShop (though not exactly like it).@end itemize@node Other Projects@chapter Other ProjectsIf you think of others that should be added, pleasesend them to @code{gnu@@prep.ai.mit.edu}.@itemize @bullet@item[This seems to be being done:]A program to convert Postscript to plain ASCII text. Ghostscript willsoon have a mode to output all the text strings in a document, each withits coordinates. You could write a program to start with this outputand ``layout the page'' in ASCII. The program will be both easier andmore useful if you don't worry pedantically about how the output textshould be formatted. Instead, try to make it look reasonable as plainASCII.@itemA program to convert compiled programs represented in OSF ANDF(``Architecture Neutral Distribution Format'') into ANSI C.@itemAn imitation of Page Maker or Ventura Publisher.@itemAn imitation of @code{dbase2} or @code{dbase3} (How dbased!)@itemA program to reformat Fortran programs in a way that is pretty.@itemA bulletin board system. There are a few free ones, but they don't haveall the features that people want in such systems. It would make senseto start with an existing one and add the other features.@itemA general ledger program.@itemA single command language that could be suitable for use in a shell, inGDB for programming debugging commands, in a program like @code{awk}, ina calculator like @code{bc}, and so on. The fact that all theseprograms are similar but different in peculiar details is a great sourceof confusion. We are stuck with maintaining compatibility with Unix inour shell, @code{awk}, and @code{bc}, but nothing prevents us fromhaving alternative programs using our new, uniform language. This wouldmake GNU far better for new users. Talk with @code{lord@@cygnus.com} ifyou are interested in this project.@itemA program to typeset C code for printing.For ideas on what to do, see the forthcoming book,@displayHuman Factors and Typography for More Readable Programs,Ronald M. Baecker and Aaron Marcus,Addison-Wesley, ISBN 0-201-10745-7@end display(I don't quite agree with a few of the details they propose.)@itemSpeech-generation programs (there is a program from Brown U that youcould improve).@itemSpeech-recognition programs (single-speaker, disconnected speech).@itemScientific mathematical subroutines, including clones of SPSS.@itemStatistical tools.@itemSoftware to replace card catalogues in libraries.@itemGrammar and style checking programs.@itemAn implementation of the S language (an interpreted languages used forstatistics).@itemA translator from Scheme to C.@itemOptical character recognition programs; especially if suitable forscanning documents with multiple fonts and capturing font info as wellas character codes. This may not be very difficult if you let it@emph{train} on part of the individual document to be scanned, so as tolearn what fonts are in use in that document. We would particularlylike to scan the Century Dictionary, an unabridged dictionary now in thepublic domain.You don't need scanning hardware to work on OCR. We can send youbitmaps you can use as test data.We may soon have an OCR program, but it will need lots of additional work.@itemA program to scan a line drawing and convert it to Postscript.@itemA program to recognize handwriting.@itemA pen based interface.@itemSoftware suitable for creating virtual reality user interfaces.@itemCAD software, such as a vague imitation of Autocad.@itemSoftware for displaying molecules.@itemSoftware for comparing DNA sequences, and finding matches andalignments.@end itemize@node Compilers@chapter Compilers for Other Batch LanguagesVolunteers are needed to write parsers/front ends for languages such asAlgol 60, Algol 68, PL/I, or whatever, to be used with the codegeneration phases of the GNU C compiler. (C++ and Objective C are done,and Ada, Fortran and Pascal are being worked on.@c Fortran status is here so gnu@prep and the volunteer coordinators@c don't have to answer the question -lenThe status of the Fortran compiler can be found by:@example @code{finger -l fortran@@gnu.ai.mit.edu})@end example@node Games and Recreations@chapter Games and Recreations@itemize @bullet@itemVideo-oriented games should work with the X window system.@itemEmpire (there is a free version but it needs upgrading)@itemImitations of popular video games:@itemize -@itemSpace war, Asteroids, Pong, Columns.@itemDefending cities from missiles.@itemPlane shoots at lots of other planes.@itemWizard fights fanciful monster.@itemA golf game.@itemProgram a robot by sticking building blocks together,then watch it explore a world.@itemBiomorph evolution (as in Scientific American).@itemA program to display effects of moving at relativistic speeds.@end itemize@itemIntriguing screen-saver programs to make interesting pictures.Other such programs that are simply entertaining to watch.For example, an aquarium.@end itemizeWe do not need @code{rogue}, as we have @code{hack}.@contents@bye