X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/4e2f59f652ebb37f67de4ca51a1e372504226da1..1d36487c5e7740bd42990ad9c6c4724628f2a4b5:/etc/tasks.texi diff --git a/etc/tasks.texi b/etc/tasks.texi index 315c4da1a1..0d1423c9a5 100644 --- a/etc/tasks.texi +++ b/etc/tasks.texi @@ -2,8 +2,8 @@ @c %**start of header @setfilename tasks.info @settitle GNU Task List -@c UPDATE THIS DATE WHENEVER YOU MAKE CHANGES! -@set lastupdate 10 March 1996 +@c This date is automagically updated when you save this file: +@set lastupdate November 1, 1999 @c %**end of header @setchapternewpage off @@ -15,103 +15,247 @@ @end titlepage @ifinfo -@node Top, Documentation, (dir), (dir) +@node Top, Intro, (dir), (dir) @top GNU Task List This file is updated automatically from @file{tasks.texi}, which was -last updated on @value{lastupdate}. +last updated on @value{lastupdate}. See also +@uref{http://www.gnu.org/help/help.html#helpgnu} for other suggested +tasks. @end ifinfo -Check 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 a -good project---but it might instead be something we already have, so -check 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:: +* Intro:: +* Highest Priority:: +* Documentation:: +* Unix-Related Projects:: +* Kernel Projects:: +* Extensions:: +* X Windows Projects:: +* Network Projects:: +* Encryption Projects:: +* Other Projects:: +* Languages:: +* Games and Recreations:: @end menu -If you start working steadily on a project, please let @code{gnu@@prep} +@node Intro, Highest Priority, Top, Top +@chapter About the GNU Task List + +If you did not obtain this file directly from the GNU project and +recently, please check for a newer version. You can ftp the task list +from any GNU FTP host in directory @file{/pub/gnu/tasks/}. The task +list is available there in several different formats: @file{tasks.text}, +@file{tasks.texi}, @file{tasks.info}, and @file{tasks.dvi}. The GNU +HURD task list is also there in file @file{tasks.hurd}. +@c to fix an overfill, join the paragraphs -len +The task list is also available on the GNU World Wide Web server: +@uref{http://www.gnu.org/prep/tasks_toc.html}. + +If you start working steadily on a project, please let @email{gvc@@gnu.org} 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. +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. + +Typically, a new program that does a completely new job advances +the GNU project, and the free software community, more than an +improvement to an existing program. + +Typically, new features or new programs advance the free software +community more, in the long run, than porting existing programs. One +reason is that portable new features and programs benefit people on many +platforms, not just one. At the same time, there tend to be many +volunteers for porting---so your help will be more valuable in other +areas, where volunteers are more scarce. + +Typically, it is more useful to extend a program in functionality than +to improve performance. Users who use the new functionality will +appreciate it very much, if they use it; but even when they benefit from +a performance improvement, they may not consider it very important. + +@node Highest Priority, Documentation, Intro, Top +@chapter Highest Priority + +This task list mentions a large number of tasks that would be more or +less useful. With luck, at least one of them will inspire you to start +writing. It's better for you to work on any task that inspires you than +not write free software at all. + +But if you would like to work on what we need most, here is a list of +high priority projects. + +@itemize @bullet +@item +If you are good at writing documentation, please do that. + +@item +If you are very good at C programming and interested in kernels, you can +help develop the GNU HURD, the kernel for the GNU system. Please have a +look at @uref{http://www.gnu.org/software/hurd/hurd.html}, and +then get a copy of the latest HURD task list from: + +@itemize @bullet + +@item +@uref{http://www.gnu.org/prep/tasks.hurd.html}, via the World Wide +Web. + +@item +@uref{ftp://ftp.gnu.org/pub/gnu/tasks/tasks.hurd}, via anonymous FTP. + +@item +@email{gnu@@gnu.org} via e-mail. -In general, a new program that does a completely new job advances the -GNU project more than an improvement to an existing program. +@end itemize -@node Documentation +@item +If you are a Scheme fan, you can help develop Guile. Please have a look +at the URL @uref{http://www.gnu.org/software/guile/guile.html} +and then contact the Guile developers at @email{guile@@gnu.org}. + +@item +A package to convert programs written using MS Access into Scheme, +making use of a free data base system and the GTK toolkit. + +@ignore +@item +Help develop XmHTML. See @uref{http://www.xs4all.nl/~ripley/XmHTML/}. +@end ignore + +@item +Help develop software to emulate Windows NT on top of GNU systems. +For example, you could help work on Willows Twin. +See @uref{http://www.willows.com/}. + +@ignore The Kermit developers say they will provide a free program +to do this. +@item +Implement the Kermit data transfer protocol. (See below.) +@end ignore + +@ignore This is being done (Harmony) +@item +Develop a free compatible replacement for Qt, a GUI toolkit library. Qt +is not free software, because users are prohibited from distributing +modified versions. Thus, Qt cannot be included in a free operating +system (adding it would make the system as a whole non-free). + +But some developers are writing free applications that use Qt and cannot +run without it. These programs, although free software, are useless for +free operating systems because there is no way to make them run. + +This is leading to a serious problem, and a free replacement for Qt is +the only solution. Hence the high degree of urgency of this project. +@end ignore + +@item +Develop a substitute, which runs on GNU systems, for some very popular +or very important application that many non-programmers use on Windows, +and which has no comparable free equivalent now. +@end itemize + +@node Documentation, Unix-Related Projects, Highest Priority, Top @chapter Documentation -We very urgently need documentation for some parts of the system -that already exist or will exist very soon: +We very urgently need documentation for many existing parts of the +system. + +Note that there are proprietary manuals for many of these topics, but +proprietary manuals do not count, for the same reason proprietary +software does not count: we are not free to copy and modify them. +We do not recommend any non-free materials as documentation. @itemize @bullet @item -Completion of the documentation for CC-mode, a new C/C++ mode for -Emacs Lisp. +A manual for libstdc++. + +@item +A unified manual for La@TeX{}. (Existing documentation is non-free.) @item -A C reference manual. (RMS has written half of one which you could -start with). +A manual for Docbook SGML format. + +@item +A tutorial introduction to Midnight Commander. + +@item +A thorough manual for RCS. + +@item +A reference manual for Mach. + +@item +A reference manual for the GNU Hurd features in GNU libc. + +@item +A manual for writing Hurd servers. + +@item +A manual for GNU sed. + +@item +Reference manuals for C++, Objective C, Pascal, Fortran 77, and Java. + +@item +A tutorial manual for the C++ STL (standard template library). + +@item +A tutorial manual for Gforth. + +@item +GNU Objective-C Runtime Library Manual; this would be a reference manual +for the runtime library functions, structures, and classes. Some work +has been done on this job. + +@item +Manuals for GNUstep: developer tutorial, developer programming manual, +developer reference manual, and user manual. @item A manual for Ghostscript. -@c -@c @item -@c A manual for CSH. -@c Ick, do we want to encourage using THAT? -djm @item -A manual for PIC (the graphics formatting language). +A manual for TCSH. @item -A manual for Oleo. +A coherent free reference manual for Perl. Most of the Perl on-line +reference documentation can be used as a starting point, but work is +needed to weld them together into a coherent manual. + +@item +A good free Perl language tutorial introduction. The existing Perl +introductions are published with restrictions on copying and +modification, so that they cannot be part of a GNU system. + +@item +A manual for PIC (the graphics formatting language). @item A book on how GCC works and why various machine descriptions are written as they are. @item -A manual for programming X-window applications. +A manual for programming applications for X11. @item Manuals for various X window managers. @item Reference cards for those manuals that don't have them: C -Compiler, Make, Texinfo, Termcap and maybe the C Library. +Compiler, Make, Texinfo, Termcap, and maybe the C Library. @item Many utilities need documentation, including @code{grep} and others. @end itemize -@node Unix-Related Projects +@node Unix-Related Projects, Kernel Projects, Documentation, Top @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 -@code{mib@@gnu.ai.mit.edu} about this project. - @ignore @item Modify the GNU @code{dc} program to use the math routines of GNU @@ -119,16 +263,12 @@ Modify the GNU @code{dc} program to use the math routines of GNU @end ignore @item -A @code{grap} preprocessor program for @code{troff}. - -@item -Various other libraries. - -@item -An emulation of SCCS that works using RCS. +Less urgent: make a replacement for the ``writer's workbench'' program +@code{style}, or something to do the same kind of job. Compatibility +with Unix is not especially important for this program. @end itemize -@node Kernel Projects +@node Kernel Projects, Extensions, Unix-Related Projects, Top @chapter Kernel-Related Projects @itemize @bullet @@ -150,9 +290,17 @@ 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. + +@item +Support (in Linux?) for dumping the non-textual contents of an SVGA +console. @end itemize -@node Extensions +@node Extensions, X Windows Projects, Kernel Projects, Top @chapter Extensions to Existing GNU Software @itemize @bullet @@ -161,14 +309,24 @@ Enhance GCC. See files @file{PROJECTS} and @file{PROBLEMS} in the GCC distribution. @item -GNU @code{sed} probably needs to be rewritten completely just to make it -cleaner. +Interface GDB to Guile, so that users can write debugging commands in +Scheme. This would also make it possible to write, in Scheme, a +graphical interface that uses GTK and is tightly integrated into GDB. + +@item +Extend Octave to support programs that were written +to run on Khoros. + +@item +Rewrite Automake in Scheme, so it can run in Guile. Right now it is +written in Perl. There are also other programs, not terribly long, +which we would also like to have rewritten in Scheme. @item -Work on the partially-implemented C interpreter project. +Finish the partially-implemented C interpreter project. @item -Help with the development of GNUStep, a GNU implementation of the +Help with the development of GNUstep, a GNU implementation of the OpenStep specification. @item @@ -187,7 +345,7 @@ 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 -@code{tron@@veritas.com} about this. +@email{tron@@veritas.com} about this. Smail also needs a new chief maintainer. @@ -197,7 +355,7 @@ 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 +@node X Windows Projects, Network Projects, Extensions, Top @chapter X Windows Projects @itemize @bullet @@ -205,72 +363,153 @@ about the level of @code{cxref}.) We also could use something like An emulator for Macintosh graphics calls on top of X Windows. @item -A music playing and editing system. +A package that emulates the API of Visual C++, but operates on top of +X11. It need not match the screen appearance of Visual C++. Instead, +it would be best to use GTK, so as to give coherence with GNOME. + +@item +A compatible replacement for Visual Basic, running on top of X11. +It need not match the screen appearance of Visual C++. Instead, +it would be best to use GTK, so as to give coherence with GNOME. + +@item +A music playing and editing system. This should work with LilyPond, a +GNU program for music typesetting. + +@item +An ear-training program for students of music. + +@ignore @c GNUskies should do this +@item +An ephemeris program to replace xephem (which is, alas, too restricted +to qualify as free software). +@end ignore @item A program to edit dance notation (such as labanotation) and display dancers moving on the screen. @item -Port the Vibrant toolkit to work on X without using Motif. +Make sure the Vibrant toolkit works with LessTif instead of Motif. @item -A widget for displaying circle-shaped menus ("pie menus") with X -windows. +A program to display and edit Hypercard stacks. @item -A program to display and edit Hypercard stacks. +A two-dimensional outliner program, which lets you draw +graph structures of textual items, and then display them +in various ways. @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 program for graphic morphing of scanned photographs. + +@item +Software for designing and printing business cards. +@end itemize + +@node Network Projects, Encryption Projects, X Windows Projects, Top +@chapter Network Projects + +@itemize @bullet +@ignore +@c www.openh323.org is doing this. Craig Southeren +@item +A teleconferencing program which does the job of CU-SeeMe (which is, +alas, not free software). +@end ignore + +@ignore +@c Bishop Bettini is working on this. +@item +A free ICQ-compatible server program. (The ICQ server itself is not +free software.) +@end ignore + +@end itemize +@node Encryption Projects, Other Projects, Network Projects, Top +@chapter Encryption Projects + +These projects need to be written outside the US by people who are not +US citizens, to avoid problems with US export control law. + +@itemize @bullet @item -A "desktop" program with drag-and-drop icons and such. +A free library for public-key encryption. + +This library should use the Diffie-Helman algorithm for public key +encryption, not the RSA algorithm, because the Diffie-Helman patent in +the US expired in 1997. This library can probably be developed from +the code for the GNU Privacy Guard (now in development). @item -A paint program, supporting both bitmap-oriented operations and -component-oriented operations. @code{xpaint} exists, but isn't very -usable. +An implementation of SSLv3 (more precisely, TLSv1) which is patent-free +(uses the non-RSA algorithms) and has distribution terms compatible with +the GNU GPL. We know of a GPL-covered implemention of a version of SSL +that you can use as a starting point. @item -A program for manipulating photographs---something vaguely like Photo -Shop (though not exactly like it). +Free software for doing secure commercial transactions on the web. +This too needs public key encryption. @end itemize -@node Other Projects +The projects to provide free replacements for PGP and SSH are no longer +listed here, because projects to do those jobs are well under way. + +@node Other Projects, Languages, Encryption Projects, Top @chapter Other Projects If you think of others that should be added, please -send them to @code{gnu@@prep.ai.mit.edu}. +send them to @email{gnu@@gnu.org}. @itemize @bullet +@ignore OpenBIOS is doing this +@item +A simple PC BIOS. On most new PCs, the BIOS is stored in writable +memory (misleadingly known as ``flash ROM''). In order to have a wholly +free system on these PCs, we need a free BIOS. + +This task is made simpler by the fact that this BIOS need only support +enough features to enable a boot-loader such as LILO or GRUB to finish +loading the kernel. Neither Linux nor Mach actually uses the BIOS once +it starts up. Also, it is not absolutely necessary to do all the many +diagnostics that an ordinary BIOS does (though it would be useful to do +some of them). However, there may be a need to configure certain data +in the computer in a way that is specific to each model of computer. +@end ignore + +@ignore Frank Cruz promises a free version @item -A program to convert compiled programs represented in OSF ANDF -(``Architecture Neutral Distribution Format'') into ANSI C. +A free program that can transfer files on a serial line +using the same protocol that Kermit uses. +@end ignore @item An imitation of Page Maker or Ventura Publisher. @item -An imitation of @code{dbase2} or @code{dbase3} (How dbased!) +An imitation of @code{dbase2} or @code{dbase3}. (How dbased!) +@uref{http://www.startech.keller.tx.us/xbase/xbase.html} may contain +some useful stuff to start with. +@ignore @c being done by Jonas etc. @item -A program to reformat Fortran programs in a way that is pretty. +A general ledger program, including support for accounts payable, +account receivables, payroll, inventory control, order processing, etc. +@end ignore @item -A bulletin board system. There are a few free ones, but they don't have -all the features that people want in such systems. It would make sense -to start with an existing one and add the other features. +A free replacement for Glimpse, which is not free software. @item -A general ledger program. +Software for desktop publishing. We are extending Emacs into a WYSIWYG +word processor, to handle primarily linear text; what this item proposes +is software focused on page layout. +@ignore It looks like TruePrint will fill this gap @item -A program to typeset C code for printing. -For ideas on what to do, see the book, +A program to typeset C code for printing, to make it easier to read on +paper. For ideas on what to do, see the book, @display Human Factors and Typography for More Readable Programs, @@ -278,33 +517,124 @@ 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.) +But you don't have to do exactly what they propose. +@end ignore + +@ignore +@c This is now being worked on -- rms, 22 June 1998 +@item +A program to convert Microsoft Word documents to text/enriched, TeX, +LaTeX, Texinfo, or some other format that free software can edit. +@end ignore + +@ignore +@c People are helping the developer of siff release it as free software. + +@item +A free replacement for siff (sometimes called sif). This would be a +program to find similar files in a large file system, ``similar'' +meaning that the files contain a significant number of common substrings +that are of a certain size or greater. You can find some information +about siff (which is, unfortunately, not free software) at +@uref{ftp://ftp.cs.arizona.edu/reports/1993/TR93-33.ps.Z}. +@end ignore + +@ignore +@c This is being developed -- rms, 3 May 1998 +@item +A free replacement for the semi-free Qt library. +@end ignore + +@item +High-quality music compression software. +(Talk with @email{phr@@netcom.com} for relevant suggestions.) +Unfortunately we cannot implement the popular MP3 format +due to patents, so this job includes working out some other +non-patented format and compression method. + +@item +A program to play sound distributed in ``Real Audio'' format. + +@item +A program to generate ``Real Audio'' format from audio input. +@item +Programs to handle audio in RTSP format. + +@ignore @c Software patents have made this domain off limits to free software. +@item +An MPEG III audio encoder/decoder (but it is necessary to check, first, +whether patents make this impossible). + +@c Chris Hofstader is working on this. @item Speech-generation programs (there is a program from Brown U that you could improve). +@c We have a project now. +@item +Speech-recognition programs (single-speaker, disconnected speech is sufficient). +@end ignore + @item -Speech-recognition programs (single-speaker, disconnected speech). +A braille translation and formatting system which can convert marked up +documents into braille. This should let the user customize the braille +translation rules; it would be good to divide it into a +device-independent part plus drivers. Contact Jason White, +@email{jasonw@@ariel.ucs.unimelb.EDU.AU}. +@ignore Being done @item -Scientific mathematical subroutines, including clones of SPSS. +A program to display text word by word, always showing just one word at +a time. This method permits much faster reading than ordinary text +display. If you want to work on this, contact @email{stutz@@dsl.org} to +learn more. +@end ignore + +@item +More scientific mathematical subroutines. +(A clone of SPSS is being written already.) @item Statistical tools. +@item +A scientific data collection and processing tool, +perhaps something like Scientific Workbench and/or Khoros, + +@item +A program to calculate properties of molecules by solving +the Schroedinger equation. + @item Software to replace card catalogues in libraries. +@item +A simulator for heating and air conditioning systems for buildings. + +@item +A package for editing genealogical records conveniently. +This could perhaps be done as a Gnome program, or perhaps +as an Emacs extension. + +@item +A project-scheduling package that accepts a list of project sub-tasks +with their interdependencies, and generates Gantt charts and Pert charts +and all the other standard project progress reports. + @item Grammar and style checking programs. @item -An implementation of the S language (an interpreted language used for -statistics). +A diagnostic program to test a hard disk. @item -A translator from Scheme to C. +A fast emulator for the i386, which would make it possible +to emulate x86 code on other CPUs, and also to more easily +debug kernels such as Linux more conveniently. + +To make this faster, it could work by translating machine instructions +into the machine language of the host machine. @item Optical character recognition programs; especially if suitable for @@ -320,40 +650,42 @@ A program to recognize handwriting. @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 comparing DNA sequences, and finding matches and -alignments. +A program to receive data from a serial-line tap to facilitate the +reverse-engineering of communication protocols. @end itemize -@node Compilers -@chapter Compilers for Other Batch Languages +@node Languages, Games and Recreations, Other Projects, Top +@chapter Programming Languages Volunteers are needed to write parsers/front ends for languages such as -Algol 60, Algol 68, PL/I, Cobol, or whatever, to be used with the code -generation phases of the GNU C compiler. (C++, Objective C and Fortran -are done; Ada, Pascal and Java are being worked on. +Algol 60, Algol 68, PL/I, Cobol, Fortran 90, Delphi, Modula 2, Modula 3, +RPG, and any other languages designed for compilation, to be used with +the code generation phases of the GNU C compiler. -@c Fortran status is here so gnu@prep and the volunteer coordinators +@c Fortran status is here so gnu@gnu.org 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: @example -finger -l fortran@@gnu.ai.mit.edu +finger -l fortran@@gnu.org @end example -@node Games and Recreations +We would like to have translators from various languages into Scheme. +These languages include TCL, Python, Perl, Java, Javascript, and Rexx. + +We would like to have an implementation of Clipper, perhaps a GCC front +end, and perhaps a translator into Scheme. + +@node Games and Recreations, , Languages, Top @chapter Games and Recreations -@itemize @bullet -@item -Video-oriented games should work with the X window system. +Video-oriented games that work with the X window system. +@itemize @bullet @item Empire (there is a free version but it needs upgrading) @@ -362,7 +694,18 @@ An ``empire builder'' system that makes it easy to write various kinds of simulation games. @item -Imitations of popular video games: +Improve GnuGo, which is not yet very sophisticated. + +@item +Network servers and clients for board and card games for which such +software does not yet exist. + +@item +A Hierarchical Task Network package which can be used +to program play the computer's side in various strategic games. + +@item +Write imitations of some popular video games: @itemize - @item @@ -372,22 +715,20 @@ Defending cities from missiles. @item Plane shoots at lots of other planes, tanks, etc. @item -Wizard fights fanciful monster. +Wizard fights fanciful monsters. @item A golf game. +@ignore Being done by jhall1@isd.net @item Program a robot by sticking building blocks together, then watch it explore a world. +@end ignore @item -Biomorph evolution (as in Scientific American). +Biomorph evolution (as in Scientific American and @cite{The Blind +Watchmaker}). @item A program to display effects of moving at relativistic speeds. @end itemize - -@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}. @@ -395,3 +736,9 @@ We do not need @code{rogue}, as we have @code{hack}. @contents @bye +Local variables: +update-date-leading-regexp: "@c This date is automagically updated when you save this file:\n@set lastupdate " +update-date-trailing-regexp: "" +eval: (load "/gd/gnuorg/update-date.el") +eval: (add-hook 'write-file-hooks 'update-date) +End: