(read_list): Pass new arg to get_doc_string.
[bpt/emacs.git] / etc / tasks.texi
CommitLineData
bb5d4e1a
RS
1\input texinfo @c -*-texinfo-*-
2@c %**start of header
3@setfilename tasks.info
4@settitle GNU Task List
04e86524 5@c UPDATE THIS DATE WHENEVER YOU MAKE CHANGES!
d9e20e57 6@set lastupdate 16 September 1997
bb5d4e1a
RS
7@c %**end of header
8
9@setchapternewpage off
10
bb5d4e1a
RS
11@titlepage
12@title GNU Task List
d6eb79ad 13@author Free Software Foundation
bb5d4e1a 14@author last updated @value{lastupdate}
bb5d4e1a
RS
15@end titlepage
16
17@ifinfo
55616d18 18@node Top, Intro, (dir), (dir)
d9e60f52 19@top GNU Task List
bb5d4e1a 20
d6eb79ad
RS
21This file is updated automatically from @file{tasks.texi}, which was
22last updated on @value{lastupdate}.
bb5d4e1a
RS
23@end ifinfo
24
bb5d4e1a 25@menu
7c4978a8
RS
26* Intro::
27* Highest Priority::
cab856b0
RS
28* Documentation::
29* Unix-Related Projects::
30* Kernel Projects::
d6eb79ad 31* Extensions::
cab856b0 32* X Windows Projects::
ca0afed9 33* Encryption Projects::
cab856b0 34* Other Projects::
d6eb79ad 35* Compilers::
cab856b0 36* Games and Recreations::
bb5d4e1a
RS
37@end menu
38
7c4978a8 39@node Intro
c05524ad
RS
40@chapter About the GNU Task List
41
7c4978a8 42If you did not obtain this file directly from the GNU project and
9459fac1
JG
43recently, please check for a newer version. You can ftp the task list
44from any GNU FTP host in directory @file{/pub/gnu/tasks/}. The task
7c4978a8 45list is available there in several different formats: @file{tasks.text},
541d49e1
JG
46@file{tasks.texi}, @file{tasks.info}, and @file{tasks.dvi}. The GNU
47HURD task list is also there in file @file{tasks.hurd}.
48@c to fix an overfill, join the paragraphs -len
7c4978a8
RS
49The task list is also available on the GNU World Wide Web server:
50@url{http://www.gnu.ai.mit.edu/prep/tasks_toc.html}.
c05524ad 51
d9e60f52
DM
52If you start working steadily on a project, please let @code{gnu@@prep}
53know. We might have information that could help you; we'd also like to
54send you the GNU coding standards.
bb5d4e1a 55
c05524ad
RS
56Because of the natural tendency for most volunteers to write programming
57tools or programming languages, we have a comparative shortage of
58applications useful for non-programmer users. Therefore, we ask you to
59consider writing such a program.
bb5d4e1a 60
d17fd035
RS
61Typically, a new program that does a completely new job advances
62the GNU project, and the free software community, more than an
63improvement to an existing program.
64
65Typically, new features or new programs advance the free software
66community more, in the long run, than porting existing programs. One
67reason is that portable new features and programs benefit people on many
68platforms, not just one. At the same time, there tend to be many
69volunteers for porting---so your help will be more valuable in other
70areas, where volunteers are more scarce.
71
72Typically, it is more useful to extend a program in functionality than
73to improve performance. Users who use the new functionality will
74appreciate it very much, if they use it; but even when they benefit from
75a performance improvement, they may not consider it very important.
bb5d4e1a 76
7c4978a8
RS
77@node Highest Priority
78@chapter Highest Priority
79
80This task list mentions a large number of tasks that would be more or
81less useful. With luck, at least one of them will inspire you to start
82writing. It's better for you to work on any task that inspires you than
83not write free software at all.
84
85But if you would like to work on what we need most, here is a list of
86high priority projects.
87
88@itemize @bullet
89@item
632c6364 90If you are good at writing documentation, please do that.
7c4978a8
RS
91
92@item
93If you are very good at C programming and interested in kernels, you can
541d49e1
JG
94help develop the GNU HURD, the kernel for the GNU system. Please have a
95look at @url{http://www.gnu.ai.mit.edu/software/hurd/hurd.html}, and
96then get a copy of the latest HURD task list from:
97
98@itemize @bullet
99
100@item
101@url{http://www.gnu.ai.mit.edu/prep/tasks.hurd.html}, via the World Wide
102Web.
103
104@item
105@url{ftp://prep.ai.mit.edu/pub/gnu/tasks/tasks.hurd}, via anonymous FTP.
106
107@item
108@email{gnu@@prep.ai.mit.edu} via e-mail.
109
110@end itemize
7c4978a8
RS
111
112@item
541d49e1
JG
113If you are a Scheme fan, you can help develop Guile. Please have a look
114at the URL @url{http://www.gnu.ai.mit.edu:/software/guile/guile.html}
115and then contact @email{guile@@gnu.ai.mit.edu}.
7c4978a8
RS
116
117@item
118Help develop the GNU web browser, E-scape.
119
120@item
121Help develop Windows NT emulation for GNU systems---for example, WINE.
122
123@item
124Implement the Kermit data transfer protocol. (See below.)
125
126@item
632c6364
RS
127Develop a free compatible replacement for Qt, a GUI toolkit library. Qt
128is not free software, because users are prohibited from distributing
129modified versions. Thus, Qt cannot be included in a free operating
130system (adding it would make the system as a whole non-free).
131
132But some developers are writing free applications that use Qt and cannot
133run without it. These programs, although free software, are useless for
134free operating systems because there is no way to make them run.
135
136This is leading to a serious problem, and a free replacement for Qt is
137the only solution. Hence the high degree of urgency of this project.
7c4978a8
RS
138
139@item
140Develop a substitute, which runs on GNU systems, for some very popular
141or very important application that many non-programmers use on Windows,
142and which has no comparable free equivalent now.
143@end itemize
144
d6eb79ad 145@node Documentation
bb5d4e1a
RS
146@chapter Documentation
147
148We very urgently need documentation for some parts of the system
149that already exist or will exist very soon:
150
151@itemize @bullet
bb5d4e1a 152@item
c05524ad
RS
153A C reference manual. (RMS made a try at one, which you could start
154with).
bb5d4e1a
RS
155
156@item
157A manual for Ghostscript.
c05524ad 158
c05524ad
RS
159@item
160A manual for TCSH.
bb5d4e1a
RS
161
162@item
163A manual for PIC (the graphics formatting language).
164
bb5d4e1a
RS
165@item
166A manual for Oleo.
167
168@item
169A book on how GCC works and why various machine descriptions
170are written as they are.
171
172@item
173A manual for programming X-window applications.
174
175@item
176Manuals for various X window managers.
177
178@item
261597d4 179Reference cards for those manuals that don't have them: C
c05524ad 180Compiler, Make, Texinfo, Termcap, and maybe the C Library.
bb5d4e1a
RS
181
182@item
261597d4 183Many utilities need documentation, including @code{grep} and others.
bb5d4e1a
RS
184@end itemize
185
d6eb79ad 186@node Unix-Related Projects
d9e60f52 187@chapter Unix-Related Projects
bb5d4e1a 188
d9e60f52 189@itemize @bullet
bb5d4e1a
RS
190@item
191An improved version of the POSIX utility @code{pax}. There is one on
c05524ad 192Usenet, but it is said to be poorly written. Talk with
d7d39d78 193@code{thomas@@gnu.ai.mit.edu} about this project.
bb5d4e1a 194
5aba97f2 195@ignore
bb5d4e1a
RS
196@item
197Modify the GNU @code{dc} program to use the math routines of GNU
198@code{bc}.
5aba97f2 199@end ignore
bb5d4e1a
RS
200
201@item
202A @code{grap} preprocessor program for @code{troff}.
203
204@item
205Various other libraries.
206
207@item
208An emulation of SCCS that works using RCS.
c05524ad 209
948c942f 210@item
c05524ad
RS
211Less urgent: @code{diction}, @code{explain}, and @code{style}, or
212something to do the same kind of job. Compatibility with Unix is not
213especially important for these programs.
bb5d4e1a
RS
214@end itemize
215
d6eb79ad 216@node Kernel Projects
d9e60f52 217@chapter Kernel-Related Projects
bb5d4e1a 218
d9e60f52 219@itemize @bullet
bb5d4e1a 220@item
5aba97f2 221An over-the-ethernet debugger stub that will allow the kernel to be
bb5d4e1a
RS
222debugged from GDB running on another machine.
223
5aba97f2
RS
224This stub needs its own self-contained implementation of all protocols
225to be used, since the GNU system will use user processes to implement
226all but the lowest levels, and the stub won't be able to use those
227processes. If a simple self-contained implementation of IP and TCP is
228impractical, it might be necessary to design a new, simple protocol
229based directly on ethernet. It's not crucial to support high speed or
230communicating across gateways.
231
232It might be possible to use the Mach ethernet driver code, but it would
233need some changes.
234
bb5d4e1a
RS
235@item
236A shared memory X11 server to run under MACH is very desirable. The
237machine specific parts should be kept well separated.
c05524ad
RS
238
239@item
240An implementation of CIFS, the ``Common Internet File System,'' for the
241HURD. This protocol is an offshoot of SMB.
bb5d4e1a
RS
242@end itemize
243
d6eb79ad 244@node Extensions
d9e60f52 245@chapter Extensions to Existing GNU Software
bb5d4e1a 246
d9e60f52 247@itemize @bullet
bb5d4e1a 248@item
d9e60f52
DM
249Enhance GCC. See files @file{PROJECTS} and @file{PROBLEMS} in the GCC
250distribution.
bb5d4e1a 251
a81ed99e
RS
252@item
253Interface GDB to Guile, so that users can write debugging commands in
254Scheme. This would also make it possible to write, in Scheme, a
255graphical interface that uses Tk and is tightly integrated into GDB.
256
bb5d4e1a 257@item
b6a061a8 258Rewrite GNU @code{sed} completely, to make it cleaner.
bb5d4e1a 259
2eebaacd 260@item
b6a061a8
RS
261Rewrite Automake and Deja-GNU in Scheme, so they can run in Guile.
262Right now they are written in Perl and TCL, respectively. There are
263also other programs, not terribly long, which we would also like
264to have rewritten in Scheme.
265
266@item
267Finish the partially-implemented C interpreter project.
2eebaacd
RS
268
269@item
b74dc89e 270Help with the development of GNUStep, a GNU implementation of the
2eebaacd
RS
271OpenStep specification.
272
5aba97f2
RS
273@item
274Add features to GNU Make to record the precise rule with which each file
275was last recompiled; then recompile any file if its rule in the makefile
276has changed.
277
bb5d4e1a
RS
278@item
279Add a few features to GNU @code{diff}, such as handling large input
280files without reading entire files into core.
281
bb5d4e1a
RS
282@item
283An @code{nroff} macro package to simplify @code{texi2roff}.
284
285@item
286A queueing system for the mailer Smail that groups pending work by
287destination rather than by original message. This makes it possible
288to schedule retries coherently for each destination. Talk to
d9e60f52 289@code{tron@@veritas.com} about this.
bb5d4e1a 290
5aba97f2 291Smail also needs a new chief maintainer.
bb5d4e1a 292
5aba97f2
RS
293@item
294Enhanced cross-reference browsing tools. (We now have something at
295about the level of @code{cxref}.) We also could use something like
296@code{ctrace}. (Some people are now working on this project.)
bb5d4e1a
RS
297@end itemize
298
d6eb79ad 299@node X Windows Projects
d9e60f52 300@chapter X Windows Projects
bb5d4e1a 301
d9e60f52 302@itemize @bullet
bb5d4e1a
RS
303@item
304An emulator for Macintosh graphics calls on top of X Windows.
305
bb5d4e1a 306@item
ca0afed9
RS
307A music playing and editing system. This should work with LilyPond, a
308free program for music typesetting.
7263f2f7 309
bb5d4e1a
RS
310@item
311A program to edit dance notation (such as labanotation) and display
312dancers moving on the screen.
313
b10fca68
RS
314@item
315Port the Vibrant toolkit to work on X without using Motif.
316
bb5d4e1a
RS
317@item
318A program to display and edit Hypercard stacks.
319
bb5d4e1a
RS
320@item
321A paint program, supporting both bitmap-oriented operations and
322component-oriented operations. @code{xpaint} exists, but isn't very
323usable.
cab856b0 324
2eb394c2
RS
325@item
326A vector-based drawing program in the spirit of Adobe Illustrator
327and Corel Draw.
328
c05524ad
RS
329@item
330An interactive 3D modeling utility with rendering/raytracing capabilities.
331
332@item
333A program for graphic morphing of scanned photographs.
bb5d4e1a
RS
334@end itemize
335
ca0afed9
RS
336@node Encryption Projects
337@chapter Encryption Projects
bb5d4e1a 338
ca0afed9
RS
339These projects need to be written outside the US by people who are not
340US citizens, to avoid problems with US export control law.
bb5d4e1a 341
d9e60f52 342@itemize @bullet
c05524ad 343@item
ca0afed9 344A free library for public-key encryption.
c05524ad 345
ca0afed9 346This library should use the Diffie-Helman algorithm for public key
c05524ad 347encryption, not the RSA algorithm, because the Diffie-Helman patent in
ca0afed9
RS
348the US will expire in 1997.
349
350@item
351A free program for sended encrypted mail using public-key encryption.
352
353This program should use the library described above for the public-key
354encryption. It should use triple-DES, not IDEA, for block encryption,
355because IDEA is patented in many countries and the patents will not
356expire soon.
f86b32b7
RS
357
358In other respects, it should be like PGP. If the new version of PGP
359no longer uses RSA and IDEA, compatibility with it may be feasible.
360
361There is a suggestion that the Blowfish algorithm might be a good choice
362for the non-public-key block encryption. I'm not an encryption expert
363so I don't have an opinion about that.
c05524ad 364
c05524ad 365Many people believe that PGP is free software, but that is not actually
7263f2f7
RS
366true. The distribution terms do not allow everyone to use and
367redistribute it. We used to think that these restrictions had been
368imposed by the patent holders for the RSA and IDEA algorithms, and that
369PGP could be free software if these algorithms were replaced by
370alternatives. But we have since learned that the owners of PGP are
371themselves unwilling to make it free software. Writing a new program is
372the only way to get free software for this job.
373
374@item
375A free secure telnet program more or less like ssh/sshd. Since this
376requires a public key encryption algorithm, it is closely related to the
377preceding item.
378
379This program should follow the draft standard for ssh. As always, it
380cannot implement the RSA algorithm, but must instead support the
381alternatives that will be patent-free in late 1997. It cannot support
f86b32b7
RS
382IDEA, but can use triple-DES and/or Blowfish or other non-patented
383alternatives.
c05524ad 384
bb5d4e1a 385@item
eee331a5
RS
386Free software for doing secure commercial transactions on the web.
387This too needs public key encryption.
ca0afed9
RS
388@end itemize
389
390@node Other Projects
391@chapter Other Projects
bb5d4e1a 392
ca0afed9
RS
393If you think of others that should be added, please
394send them to @code{gnu@@prep.ai.mit.edu}.
395
396@itemize @bullet
a47e454e 397@item
7c4978a8
RS
398A free program that can transfer files on a serial line
399using the same protocol that Kermit uses.
a47e454e 400
bb5d4e1a
RS
401@item
402An imitation of Page Maker or Ventura Publisher.
403
404@item
405An imitation of @code{dbase2} or @code{dbase3} (How dbased!)
406
bb5d4e1a
RS
407@item
408A bulletin board system. There are a few free ones, but they don't have
409all the features that people want in such systems. It would make sense
410to start with an existing one and add the other features.
411
412@item
c05524ad
RS
413A general ledger program, including support for accounts payable,
414account receivables, payroll, inventory control, order processing, etc.
415
416@item
417A teleconferencing program which does the job of CU-SeeMe (which is,
418alas, not free software).
bb5d4e1a 419
bb5d4e1a
RS
420@item
421A program to typeset C code for printing.
261597d4 422For ideas on what to do, see the book,
bb5d4e1a
RS
423
424@display
425Human Factors and Typography for More Readable Programs,
426Ronald M. Baecker and Aaron Marcus,
427Addison-Wesley, ISBN 0-201-10745-7
428@end display
429
430(I don't quite agree with a few of the details they propose.)
431
7c4978a8 432@item
541d49e1
JG
433A program to convert Microsoft Word documents to text/enriched, TeX,
434LaTeX, Texinfo, or some other format that free software can edit.
7c4978a8
RS
435
436@item
437A free replacement for the semi-free Qt library.
438
ca0afed9
RS
439@item
440High-quality music compression software.
441(Talk with phr@@netcom.com for relevant suggestions.)
442
443@item
444A program to play sound distributed in ``Real Audio'' format.
445
446@item
447A program to generate ``Real Audio'' format from audio input.
448
632c6364 449@ignore @c Software patents have made this domain off limits to free software.
ca0afed9
RS
450@item
451An MPEG III audio encoder/decoder (but it is necessary to check, first,
452whether patents make this impossible).
632c6364 453@end ignore
ca0afed9 454
bb5d4e1a
RS
455@item
456Speech-generation programs (there is a program from Brown U that you
457could improve).
458
459@item
948c942f
RS
460Speech-recognition programs (single-speaker, disconnected speech is sufficient).
461
bb5d4e1a 462@item
b6a061a8
RS
463More scientific mathematical subroutines.
464(A clone of SPSS is being written already.)
bb5d4e1a
RS
465
466@item
467Statistical tools.
468
eee331a5
RS
469@item
470A scientific data collection and processing tool,
471perhaps something like Scientific Workbench and/or Khoros,
472
bb5d4e1a
RS
473@item
474Software to replace card catalogues in libraries.
475
ca0afed9
RS
476@item
477A project-scheduling package that accepts a list of project sub-tasks
478with their interdependencies, and generates Gantt charts and Pert charts
479and all the other standard project progress reports.
480
bb5d4e1a
RS
481@item
482Grammar and style checking programs.
483
bb5d4e1a
RS
484@item
485A translator from Scheme to C.
486
eee331a5
RS
487@item
488A fast emulator for the i386 which works by translating
489machine instructions into the machine language of the host machine.
490(Support for emulation of other machines would enhance the program
491but might make it much more difficult.)
492
ca0afed9
RS
493@item
494A map display or geographic information system.
495
bb5d4e1a
RS
496@item
497Optical character recognition programs; especially if suitable for
498scanning documents with multiple fonts and capturing font info as well
261597d4 499as character codes. Work is being done on this, but more help is needed.
5aba97f2 500
bb5d4e1a
RS
501@item
502A program to scan a line drawing and convert it to Postscript.
503
504@item
505A program to recognize handwriting.
506
507@item
508A pen based interface.
509
bb5d4e1a
RS
510@item
511CAD software, such as a vague imitation of Autocad.
ca0afed9
RS
512
513@item
514A program to receive data from a serial-line tap to facilitate the
515reverse-engineering of communication protocols.
bb5d4e1a
RS
516@end itemize
517
d6eb79ad
RS
518@node Compilers
519@chapter Compilers for Other Batch Languages
bb5d4e1a 520
d9e60f52 521Volunteers are needed to write parsers/front ends for languages such as
7c4978a8
RS
522Algol 60, Algol 68, PL/I, Cobol, Fortran 90, Eiffel, or whatever, to be
523used with the code generation phases of the GNU C compiler.
2eebaacd 524
cab856b0
RS
525@c Fortran status is here so gnu@prep and the volunteer coordinators
526@c don't have to answer the question -len
2eebaacd 527You can get the status of the Fortran front end with this command:
cab856b0 528
2eebaacd
RS
529@example
530finger -l fortran@@gnu.ai.mit.edu
cab856b0 531@end example
bb5d4e1a 532
d6eb79ad
RS
533@node Games and Recreations
534@chapter Games and Recreations
bb5d4e1a 535
c05524ad
RS
536Video-oriented games that work with the X window system.
537
d9e60f52 538@itemize @bullet
bb5d4e1a
RS
539@item
540Empire (there is a free version but it needs upgrading)
541
2eebaacd
RS
542@item
543An ``empire builder'' system that makes it easy to write various kinds of
544simulation games.
545
c05524ad
RS
546@item
547Improve GnuGo, which is not yet very sophisticated.
548
bb5d4e1a 549@item
632c6364 550Write imitations of some popular video game:
bb5d4e1a 551
d9e60f52 552@itemize -
bb5d4e1a
RS
553@item
554Space war, Asteroids, Pong, Columns.
555@item
556Defending cities from missiles.
557@item
2eebaacd 558Plane shoots at lots of other planes, tanks, etc.
bb5d4e1a
RS
559@item
560Wizard fights fanciful monster.
561@item
562A golf game.
563@item
564Program a robot by sticking building blocks together,
565then watch it explore a world.
566@item
7c4978a8
RS
567Biomorph evolution (as in Scientific American and @cite{The Blind
568Watchmaker}).
bb5d4e1a
RS
569@item
570A program to display effects of moving at relativistic speeds.
571@end itemize
bb5d4e1a
RS
572@end itemize
573
574We do not need @code{rogue}, as we have @code{hack}.
575
576@contents
577
578@bye