@c %**start of header
@setfilename tasks.info
@settitle GNU Task List
-@c UPDATE THIS DATE WHENEVER YOU MAKE CHANGES!
-@set lastupdate 16 July 1993
+@include tasks.version
@c %**end of header
@setchapternewpage off
-@ifinfo
-Copyright (C) 1993 Free Software Foundation
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
@titlepage
@title GNU Task List
-@author Richard Stallman
+@author Free Software Foundation
@author last updated @value{lastupdate}
-@page
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1993 Free Software Foundation
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by Free Software Foundation.
@end titlepage
@ifinfo
-@node Top, Documentation, (dir), (dir)
-@top Version
+@node Top, Preface, (dir), (dir)
+@top GNU Task List
-Last updated @value{lastupdate}.
+This file is updated automatically from @file{tasks.texi}, which was
+last updated on @value{lastupdate}.
@end ifinfo
-Check with gnu@@prep.ai.mit.edu, for a possibly more current copy.
-This task list is not exclusive; any other useful program might be a
-good project--but it might instead be something we already have, so
-check with gnu@@prep before you start writing it.
-
@menu
-* Documentation::
-* Unix-related projects::
-* Kernel-related projects::
-* Extensions to existing GNU software::
-* X windows projects::
-* Other random projects::
-* Compilers for other batch languages::
-* Games and recreations::
+* Preface::
+* Documentation::
+* Unix-Related Projects::
+* Kernel Projects::
+* Extensions::
+* X Windows Projects::
+* Other Projects::
+* Compilers::
+* Games and Recreations::
@end menu
-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.
+@node Preface, Documentation, Top, Top
+@chapter About the GNU Task List
+
+Check with @code{gnu@@prep.ai.mit.edu}, for a possibly more current
+copy. You can also ftp it from a GNU FTP host in directory
+@file{/pub/gnu/tasks} - These files in different formats are available:
+@file{tasks.text}, @file{tasks.texi}, @file{tasks.info}, and
+@file{tasks.dvi}. It is also available on the GNU World Wide Web
+server: @file{http://www.gnu.ai.mit.edu}.
-Because of the natural tendency for most volunteers to write
-programming tools or programming languages, we have a comparative
-shortage of applications useful for non-programmer users. Therefore,
-we ask you to consider writing such a program.
+If 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 to
+send you the GNU coding standards.
+
+Because of the natural tendency for most volunteers to write programming
+tools or programming languages, we have a comparative shortage 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 the
GNU project more than an improvement to an existing program.
-@node Documentation, Unix-related projects, Top, Top
+@node Documentation
@chapter Documentation
We very urgently need documentation for some parts of the system
that already exist or will exist very soon:
@itemize @bullet
+@item
+Completion of the documentation for CC-mode, a new Emacs mode for
+C, C++ and other languages.
@item
-A C reference manual. (RMS has written half of one which you could
-start with).
+A C reference manual. (RMS made a try at one, which you could start
+with).
@item
A manual for Ghostscript.
-@item
-A manual for CSH.
@item
-A manual for PIC (the graphics formatting language).
+A manual for TCSH.
@item
-A manual for Perl. (The manual that exists is not free, and
-is thus not available to be part of the GNU system.)
+A manual for PIC (the graphics formatting language).
@item
A manual for Oleo.
Manuals for various X window managers.
@item
-Reference cards for those manuals that don't have them: Gawk, C
-Compiler, Make, Texinfo, Termcap and maybe the C Library.
+Reference cards for those manuals that don't have them: C
+Compiler, Make, Texinfo, Termcap, and maybe the C Library.
@item
-Many utilities need documentation, including @code{grep}, @code{cpio},
-@code{find}, @code{less}, and the other small utilities.
-
+Many utilities need documentation, including @code{grep} and others.
@end itemize
-@node Unix-related projects, Kernel-related projects, Documentation, Top
-@chapter Unix-related projects
-
-@itemize
+@node Unix-Related Projects
+@chapter Unix-Related Projects
+@itemize @bullet
@item
We could use an emulation of Unix @code{spell}, which would run by
invoking @code{ispell}.
-@item
-Less urgent: @code{diction}, @code{explain}, @code{style}.
-
@item
An improved version of the POSIX utility @code{pax}. There is one on
-the usenet, but it is said to be poorly written. Talk with
-mib@@gnu.ai.mit.edu about this project.
+Usenet, but it is said to be poorly written. Talk with
+@code{mib@@gnu.ai.mit.edu} about this project.
+@ignore
@item
Modify the GNU @code{dc} program to use the math routines of GNU
@code{bc}.
+@end ignore
@item
A @code{grap} preprocessor program for @code{troff}.
@item
An emulation of SCCS that works using RCS.
+@item
+Less urgent: @code{diction}, @code{explain}, and @code{style}, or
+something to do the same kind of job. Compatibility with Unix is not
+especially important for these programs.
@end itemize
-@node Kernel-related projects, Extensions to existing GNU software, Unix-related projects, Top
-@chapter Kernel-related projects
-
-@itemize
+@node Kernel Projects
+@chapter Kernel-Related Projects
+@itemize @bullet
@item
-An over-the-ethernet debugger that will allow the kernel to be
+An over-the-ethernet debugger stub that will allow the kernel to be
debugged from GDB running on another machine.
+This stub needs its own self-contained implementation of all protocols
+to be used, since the GNU system will use user processes to implement
+all but the lowest levels, and the stub won't be able to use those
+processes. If a simple self-contained implementation of IP and TCP is
+impractical, it might be necessary to design a new, simple protocol
+based directly on ethernet. It's not crucial to support high speed or
+communicating across gateways.
+
+It might be possible to use the Mach ethernet driver code, but it would
+need some changes.
+
@item
A shared memory X11 server to run under MACH is very desirable. The
machine specific parts should be kept well separated.
+@item
+An implementation of CIFS, the ``Common Internet File System,'' for the
+HURD. This protocol is an offshoot of SMB.
@end itemize
-@node Extensions to existing GNU software, X windows projects, Kernel-related projects, Top
-@chapter Extensions to existing GNU software
+@node Extensions
+@chapter Extensions to Existing GNU Software
+
+@itemize @bullet
+@item
+Enhance GCC. See files @file{PROJECTS} and @file{PROBLEMS} in the GCC
+distribution.
-@itemize
+@item
+Rewrite GNU @code{sed} completely, to make it cleaner.
@item
-Enhance GCC. See files PROJECTS and PROBLEMS in the GCC distribution.
+Rewrite Automake and Deja-GNU in Scheme, so they can run in Guile.
+Right now they are written in Perl and TCL, respectively. There are
+also other programs, not terribly long, which we would also like
+to have rewritten in Scheme.
@item
-GNU @code{sed} probably needs to be rewritten completely just to make it
-cleaner.
+Finish the partially-implemented C interpreter project.
@item
-Add a few features to GNU @code{diff}, such as handling large input
-files without reading entire files into core.
+Help with the development of GNUStep, a GNU implementation of the
+OpenStep specification.
@item
-Extend GDB with an X-based graphical interface better than @code{xxgdb}.
+Add features to GNU Make to record the precise rule with which each file
+was last recompiled; then recompile any file if its rule in the makefile
+has changed.
+
+@item
+Add a few features to GNU @code{diff}, such as handling large input
+files without reading entire files into core.
@item
An @code{nroff} macro package to simplify @code{texi2roff}.
A queueing system for the mailer Smail that groups pending work by
destination rather than by original message. This makes it possible
to schedule retries coherently for each destination. Talk to
-tron@@veritas.com about this.
+@code{tron@@veritas.com} about this.
-@item
-Cross-referencing, flow graph, and execution trace programs for C and
-other languages, like @code{cxref}, @code{cflow}, and @code{ctrace}.
+Smail also needs a new chief maintainer.
+@item
+Enhanced cross-reference browsing tools. (We now have something at
+about 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, Other random projects, Extensions to existing GNU software, Top
-@chapter X windows projects
-
-@itemize
+@node X Windows Projects
+@chapter X Windows Projects
+@itemize @bullet
@item
An emulator for Macintosh graphics calls on top of X Windows.
-@item
-An emulator for Microsoft windows calls on top of X Windows. (A
-commercial program to do this took just three months to write.)
-
@item
A music playing and editing system.
dancers moving on the screen.
@item
-A library for displaying circle-shaped menus with X windows.
+Port the Vibrant toolkit to work on X without using Motif.
@item
A program to display and edit Hypercard stacks.
@item
-An interface-builder program to make it easy to design graphical
-interfaces for applications. This could work with the dynamic linker
-DLD and C++, loading in the same class definitions that will be used
-by the application program.
+A paint program, supporting both bitmap-oriented operations and
+component-oriented operations. @code{xpaint} exists, but isn't very
+usable.
@item
-A desktop program with icons and such, for X-windows.
+A vector-based drawing program in the spirit of Adobe Illustrator
+and Corel Draw.
@item
-A paint program, supporting both bitmap-oriented operations and
-component-oriented operations. @code{xpaint} exists, but isn't very
-usable.
+An interactive 3D modeling utility with rendering/raytracing capabilities.
+@item
+A program for graphic morphing of scanned photographs.
@end itemize
-@node Other random projects, Compilers for other batch languages, X windows projects, Top
-@chapter Other random projects
+@node Other Projects
+@chapter Other Projects
If you think of others that should be added, please
-send them to gnu@@prep.ai.mit.edu.
-
-@itemize
+send 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 will
-soon have a mode to output all the text strings in a document, each with
-its coordinates. You could write a program to start with this output
-and ``layout the page'' in ASCII. The program will be both easier and
-more useful if you don't worry pedantically about how the output text
-should be formatted. Instead, try to make it look reasonable as plain
-ASCII.
+A free program for public-key encryption.
+
+This program should use the Diffie-Helman algorithm for public key
+encryption, not the RSA algorithm, because the Diffie-Helman patent in
+the US will expire in 1997. It should use triple-DES, not IDEA, for
+block encryption because IDEA is patented in many countries and the
+patents will not expire soon. In other respects, it should be like PGP.
+
+This program needs to be written by someone who is not a US citizen,
+outside the US, to avoid problems with US export control law.
+
+Many people believe that PGP is free software, but that is not actually
+true. The distribution terms set by the copyright holders do not allow
+everyone to use and redistribute it.
@item
A program to convert compiled programs represented in OSF ANDF
to start with an existing one and add the other features.
@item
-A general ledger program.
+A general ledger program, including support for accounts payable,
+account receivables, payroll, inventory control, order processing, etc.
@item
-A single command language that could be suitable for use in a shell, in
-GDB for programming debugging commands, in a program like @code{awk}, in
-a calculator like @code{bc}, and so on. The fact that all these
-programs are similar but different in peculiar details is a great source
-of confusion. We are stuck with maintaining compatibility with Unix in
-our shell, @code{awk}, and @code{bc}, but nothing prevents us from
-having alternative programs using our new, uniform language. This would
-make GNU far better for new users.
+A teleconferencing program which does the job of CU-SeeMe (which is,
+alas, not free software).
@item
A program to typeset C code for printing.
-For ideas on what to do, see the forthcoming book,
+For ideas on what to do, see the book,
@display
Human Factors and Typography for More Readable Programs,
could improve).
@item
-Speech-recognition programs (single-speaker, disconnected speech).
+Speech-recognition programs (single-speaker, disconnected speech is sufficient).
+
+@item
+A program to play sound distributed in ``Real Audio'' format.
+
+@item
+A program to generate ``Real Audio'' format from audio input.
@item
-Scientific mathematical subroutines, including clones of SPSS.
+More scientific mathematical subroutines.
+(A clone of SPSS is being written already.)
@item
Statistical tools.
Grammar and style checking programs.
@item
-An implementation of the S language.
+An implementation of the S language (an interpreted language used for
+statistics).
@item
A translator from Scheme to C.
@item
Optical character recognition programs; especially if suitable for
scanning documents with multiple fonts and capturing font info as well
-as 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 to
-learn what fonts are in use in that document. We would particularly
-like to scan the Century Dictionary, an unabridged dictionary now in the
-public domain.
-
-You don't need scanning hardware to work on OCR. We can send you
-bitmaps you can use as test data.
+as character codes. Work is being done on this, but more help is needed.
@item
A program to scan a line drawing and convert it to Postscript.
@item
A pen based interface.
-@item
-Software suitable for creating virtual reality user interfaces.
-
@item
CAD software, such as a vague imitation of Autocad.
-@item
-Software for displaying molecules.
-
@item
Software for comparing DNA sequences, and finding matches and
alignments.
-
@end itemize
-@node Compilers for other batch languages, Games and recreations, Other random projects, Top
-@chapter Compilers for other batch languages
+@node Compilers
+@chapter Compilers for Other Batch Languages
+
+Volunteers are needed to write parsers/front ends for languages such as
+Algol 60, Algol 68, PL/I, Cobol, Fortran 90, or whatever, to be used
+with the code generation phases of the GNU C compiler. (C, C++, and
+Objective-C are done; Fortran 77 is mostly done; Ada, Pascal, and Java
+are being worked on.)
+
+@c Fortran status is here so gnu@prep and the volunteer coordinators
+@c don't have to answer the question -len
+You can get the status of the Fortran front end with this command:
-Volunteers are needed to write parsers/front ends for languages such
-as Algol 60, Algol 68, PL/I, or whatever, to be used with the
-code generation phases of the GNU C compiler. (C++ is done, and
-Ada, Fortran, Pascal and Modula are being worked on.)
+@example
+finger -l fortran@@gnu.ai.mit.edu
+@end example
-@node Games and recreations, , Compilers for other batch languages, Top
-@chapter Games and recreations
+@node Games and Recreations
+@chapter Games and Recreations
-@itemize
+Video-oriented games that work with the X window system.
+@itemize @bullet
@item
-Video-oriented games should work with the X window system.
+A Doom-compatible display game engine, for running the many free
+levels people have written for Doom.
@item
Empire (there is a free version but it needs upgrading)
+@item
+An ``empire builder'' system that makes it easy to write various kinds of
+simulation games.
+
+@item
+Improve GnuGo, which is not yet very sophisticated.
+
@item
Imitations of popular video games:
-@itemize
+@itemize -
@item
Space war, Asteroids, Pong, Columns.
@item
Defending cities from missiles.
@item
-Plane shoots at lots of other planes.
+Plane shoots at lots of other planes, tanks, etc.
@item
Wizard fights fanciful monster.
@item
Intriguing screen-saver programs to make interesting pictures.
Other such programs that are simply entertaining to watch.
For example, an aquarium.
-
@end itemize
We do not need @code{rogue}, as we have @code{hack}.