(dumpglyphs): Check the dimension of FONT while
[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!
ca0afed9 6@set lastupdate 18 July 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
90If you are good at writing documentation, please do.
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
127Develop a free compatible replacement for Qt, a graphics toolkit
128library.
129
130@item
131Develop a substitute, which runs on GNU systems, for some very popular
132or very important application that many non-programmers use on Windows,
133and which has no comparable free equivalent now.
134@end itemize
135
d6eb79ad 136@node Documentation
bb5d4e1a
RS
137@chapter Documentation
138
139We very urgently need documentation for some parts of the system
140that already exist or will exist very soon:
141
142@itemize @bullet
bb5d4e1a 143@item
c05524ad
RS
144A C reference manual. (RMS made a try at one, which you could start
145with).
bb5d4e1a
RS
146
147@item
148A manual for Ghostscript.
c05524ad 149
c05524ad
RS
150@item
151A manual for TCSH.
bb5d4e1a
RS
152
153@item
154A manual for PIC (the graphics formatting language).
155
bb5d4e1a
RS
156@item
157A manual for Oleo.
158
159@item
160A book on how GCC works and why various machine descriptions
161are written as they are.
162
163@item
164A manual for programming X-window applications.
165
166@item
167Manuals for various X window managers.
168
169@item
261597d4 170Reference cards for those manuals that don't have them: C
c05524ad 171Compiler, Make, Texinfo, Termcap, and maybe the C Library.
bb5d4e1a
RS
172
173@item
261597d4 174Many utilities need documentation, including @code{grep} and others.
bb5d4e1a
RS
175@end itemize
176
d6eb79ad 177@node Unix-Related Projects
d9e60f52 178@chapter Unix-Related Projects
bb5d4e1a 179
d9e60f52 180@itemize @bullet
bb5d4e1a
RS
181@item
182An improved version of the POSIX utility @code{pax}. There is one on
c05524ad 183Usenet, but it is said to be poorly written. Talk with
d7d39d78 184@code{thomas@@gnu.ai.mit.edu} about this project.
bb5d4e1a 185
5aba97f2 186@ignore
bb5d4e1a
RS
187@item
188Modify the GNU @code{dc} program to use the math routines of GNU
189@code{bc}.
5aba97f2 190@end ignore
bb5d4e1a
RS
191
192@item
193A @code{grap} preprocessor program for @code{troff}.
194
195@item
196Various other libraries.
197
198@item
199An emulation of SCCS that works using RCS.
c05524ad 200
948c942f 201@item
c05524ad
RS
202Less urgent: @code{diction}, @code{explain}, and @code{style}, or
203something to do the same kind of job. Compatibility with Unix is not
204especially important for these programs.
bb5d4e1a
RS
205@end itemize
206
d6eb79ad 207@node Kernel Projects
d9e60f52 208@chapter Kernel-Related Projects
bb5d4e1a 209
d9e60f52 210@itemize @bullet
bb5d4e1a 211@item
5aba97f2 212An over-the-ethernet debugger stub that will allow the kernel to be
bb5d4e1a
RS
213debugged from GDB running on another machine.
214
5aba97f2
RS
215This stub needs its own self-contained implementation of all protocols
216to be used, since the GNU system will use user processes to implement
217all but the lowest levels, and the stub won't be able to use those
218processes. If a simple self-contained implementation of IP and TCP is
219impractical, it might be necessary to design a new, simple protocol
220based directly on ethernet. It's not crucial to support high speed or
221communicating across gateways.
222
223It might be possible to use the Mach ethernet driver code, but it would
224need some changes.
225
bb5d4e1a
RS
226@item
227A shared memory X11 server to run under MACH is very desirable. The
228machine specific parts should be kept well separated.
c05524ad
RS
229
230@item
231An implementation of CIFS, the ``Common Internet File System,'' for the
232HURD. This protocol is an offshoot of SMB.
bb5d4e1a
RS
233@end itemize
234
d6eb79ad 235@node Extensions
d9e60f52 236@chapter Extensions to Existing GNU Software
bb5d4e1a 237
d9e60f52 238@itemize @bullet
bb5d4e1a 239@item
d9e60f52
DM
240Enhance GCC. See files @file{PROJECTS} and @file{PROBLEMS} in the GCC
241distribution.
bb5d4e1a 242
a81ed99e
RS
243@item
244Interface GDB to Guile, so that users can write debugging commands in
245Scheme. This would also make it possible to write, in Scheme, a
246graphical interface that uses Tk and is tightly integrated into GDB.
247
bb5d4e1a 248@item
b6a061a8 249Rewrite GNU @code{sed} completely, to make it cleaner.
bb5d4e1a 250
2eebaacd 251@item
b6a061a8
RS
252Rewrite Automake and Deja-GNU in Scheme, so they can run in Guile.
253Right now they are written in Perl and TCL, respectively. There are
254also other programs, not terribly long, which we would also like
255to have rewritten in Scheme.
256
257@item
258Finish the partially-implemented C interpreter project.
2eebaacd
RS
259
260@item
b74dc89e 261Help with the development of GNUStep, a GNU implementation of the
2eebaacd
RS
262OpenStep specification.
263
5aba97f2
RS
264@item
265Add features to GNU Make to record the precise rule with which each file
266was last recompiled; then recompile any file if its rule in the makefile
267has changed.
268
bb5d4e1a
RS
269@item
270Add a few features to GNU @code{diff}, such as handling large input
271files without reading entire files into core.
272
bb5d4e1a
RS
273@item
274An @code{nroff} macro package to simplify @code{texi2roff}.
275
276@item
277A queueing system for the mailer Smail that groups pending work by
278destination rather than by original message. This makes it possible
279to schedule retries coherently for each destination. Talk to
d9e60f52 280@code{tron@@veritas.com} about this.
bb5d4e1a 281
5aba97f2 282Smail also needs a new chief maintainer.
bb5d4e1a 283
5aba97f2
RS
284@item
285Enhanced cross-reference browsing tools. (We now have something at
286about the level of @code{cxref}.) We also could use something like
287@code{ctrace}. (Some people are now working on this project.)
bb5d4e1a
RS
288@end itemize
289
d6eb79ad 290@node X Windows Projects
d9e60f52 291@chapter X Windows Projects
bb5d4e1a 292
d9e60f52 293@itemize @bullet
bb5d4e1a
RS
294@item
295An emulator for Macintosh graphics calls on top of X Windows.
296
bb5d4e1a 297@item
ca0afed9
RS
298A music playing and editing system. This should work with LilyPond, a
299free program for music typesetting.
7263f2f7 300
bb5d4e1a
RS
301@item
302A program to edit dance notation (such as labanotation) and display
303dancers moving on the screen.
304
b10fca68
RS
305@item
306Port the Vibrant toolkit to work on X without using Motif.
307
bb5d4e1a
RS
308@item
309A program to display and edit Hypercard stacks.
310
bb5d4e1a
RS
311@item
312A paint program, supporting both bitmap-oriented operations and
313component-oriented operations. @code{xpaint} exists, but isn't very
314usable.
cab856b0 315
2eb394c2
RS
316@item
317A vector-based drawing program in the spirit of Adobe Illustrator
318and Corel Draw.
319
c05524ad
RS
320@item
321An interactive 3D modeling utility with rendering/raytracing capabilities.
322
323@item
324A program for graphic morphing of scanned photographs.
bb5d4e1a
RS
325@end itemize
326
ca0afed9
RS
327@node Encryption Projects
328@chapter Encryption Projects
bb5d4e1a 329
ca0afed9
RS
330These projects need to be written outside the US by people who are not
331US citizens, to avoid problems with US export control law.
bb5d4e1a 332
d9e60f52 333@itemize @bullet
c05524ad 334@item
ca0afed9 335A free library for public-key encryption.
c05524ad 336
ca0afed9 337This library should use the Diffie-Helman algorithm for public key
c05524ad 338encryption, not the RSA algorithm, because the Diffie-Helman patent in
ca0afed9
RS
339the US will expire in 1997.
340
341@item
342A free program for sended encrypted mail using public-key encryption.
343
344This program should use the library described above for the public-key
345encryption. It should use triple-DES, not IDEA, for block encryption,
346because IDEA is patented in many countries and the patents will not
347expire soon.
f86b32b7
RS
348
349In other respects, it should be like PGP. If the new version of PGP
350no longer uses RSA and IDEA, compatibility with it may be feasible.
351
352There is a suggestion that the Blowfish algorithm might be a good choice
353for the non-public-key block encryption. I'm not an encryption expert
354so I don't have an opinion about that.
c05524ad 355
c05524ad 356Many people believe that PGP is free software, but that is not actually
7263f2f7
RS
357true. The distribution terms do not allow everyone to use and
358redistribute it. We used to think that these restrictions had been
359imposed by the patent holders for the RSA and IDEA algorithms, and that
360PGP could be free software if these algorithms were replaced by
361alternatives. But we have since learned that the owners of PGP are
362themselves unwilling to make it free software. Writing a new program is
363the only way to get free software for this job.
364
365@item
366A free secure telnet program more or less like ssh/sshd. Since this
367requires a public key encryption algorithm, it is closely related to the
368preceding item.
369
370This program should follow the draft standard for ssh. As always, it
371cannot implement the RSA algorithm, but must instead support the
372alternatives that will be patent-free in late 1997. It cannot support
f86b32b7
RS
373IDEA, but can use triple-DES and/or Blowfish or other non-patented
374alternatives.
c05524ad 375
bb5d4e1a 376@item
eee331a5
RS
377Free software for doing secure commercial transactions on the web.
378This too needs public key encryption.
ca0afed9
RS
379@end itemize
380
381@node Other Projects
382@chapter Other Projects
bb5d4e1a 383
ca0afed9
RS
384If you think of others that should be added, please
385send them to @code{gnu@@prep.ai.mit.edu}.
386
387@itemize @bullet
a47e454e 388@item
7c4978a8
RS
389A free program that can transfer files on a serial line
390using the same protocol that Kermit uses.
a47e454e 391
bb5d4e1a
RS
392@item
393An imitation of Page Maker or Ventura Publisher.
394
395@item
396An imitation of @code{dbase2} or @code{dbase3} (How dbased!)
397
bb5d4e1a
RS
398@item
399A bulletin board system. There are a few free ones, but they don't have
400all the features that people want in such systems. It would make sense
401to start with an existing one and add the other features.
402
403@item
c05524ad
RS
404A general ledger program, including support for accounts payable,
405account receivables, payroll, inventory control, order processing, etc.
406
407@item
408A teleconferencing program which does the job of CU-SeeMe (which is,
409alas, not free software).
bb5d4e1a 410
bb5d4e1a
RS
411@item
412A program to typeset C code for printing.
261597d4 413For ideas on what to do, see the book,
bb5d4e1a
RS
414
415@display
416Human Factors and Typography for More Readable Programs,
417Ronald M. Baecker and Aaron Marcus,
418Addison-Wesley, ISBN 0-201-10745-7
419@end display
420
421(I don't quite agree with a few of the details they propose.)
422
7c4978a8 423@item
541d49e1
JG
424A program to convert Microsoft Word documents to text/enriched, TeX,
425LaTeX, Texinfo, or some other format that free software can edit.
7c4978a8
RS
426
427@item
428A free replacement for the semi-free Qt library.
429
ca0afed9
RS
430@item
431High-quality music compression software.
432(Talk with phr@@netcom.com for relevant suggestions.)
433
434@item
435A program to play sound distributed in ``Real Audio'' format.
436
437@item
438A program to generate ``Real Audio'' format from audio input.
439
440@item
441An MPEG III audio encoder/decoder (but it is necessary to check, first,
442whether patents make this impossible).
443
bb5d4e1a
RS
444@item
445Speech-generation programs (there is a program from Brown U that you
446could improve).
447
448@item
948c942f
RS
449Speech-recognition programs (single-speaker, disconnected speech is sufficient).
450
bb5d4e1a 451@item
b6a061a8
RS
452More scientific mathematical subroutines.
453(A clone of SPSS is being written already.)
bb5d4e1a
RS
454
455@item
456Statistical tools.
457
eee331a5
RS
458@item
459A scientific data collection and processing tool,
460perhaps something like Scientific Workbench and/or Khoros,
461
bb5d4e1a
RS
462@item
463Software to replace card catalogues in libraries.
464
ca0afed9
RS
465@item
466A project-scheduling package that accepts a list of project sub-tasks
467with their interdependencies, and generates Gantt charts and Pert charts
468and all the other standard project progress reports.
469
bb5d4e1a
RS
470@item
471Grammar and style checking programs.
472
473@item
261597d4 474An implementation of the S language (an interpreted language used for
5aba97f2 475statistics).
bb5d4e1a
RS
476
477@item
478A translator from Scheme to C.
479
eee331a5
RS
480@item
481A fast emulator for the i386 which works by translating
482machine instructions into the machine language of the host machine.
483(Support for emulation of other machines would enhance the program
484but might make it much more difficult.)
485
ca0afed9
RS
486@item
487A map display or geographic information system.
488
bb5d4e1a
RS
489@item
490Optical character recognition programs; especially if suitable for
491scanning documents with multiple fonts and capturing font info as well
261597d4 492as character codes. Work is being done on this, but more help is needed.
5aba97f2 493
bb5d4e1a
RS
494@item
495A program to scan a line drawing and convert it to Postscript.
496
497@item
498A program to recognize handwriting.
499
500@item
501A pen based interface.
502
bb5d4e1a
RS
503@item
504CAD software, such as a vague imitation of Autocad.
ca0afed9
RS
505
506@item
507A program to receive data from a serial-line tap to facilitate the
508reverse-engineering of communication protocols.
bb5d4e1a
RS
509@end itemize
510
d6eb79ad
RS
511@node Compilers
512@chapter Compilers for Other Batch Languages
bb5d4e1a 513
d9e60f52 514Volunteers are needed to write parsers/front ends for languages such as
7c4978a8
RS
515Algol 60, Algol 68, PL/I, Cobol, Fortran 90, Eiffel, or whatever, to be
516used with the code generation phases of the GNU C compiler.
2eebaacd 517
cab856b0
RS
518@c Fortran status is here so gnu@prep and the volunteer coordinators
519@c don't have to answer the question -len
2eebaacd 520You can get the status of the Fortran front end with this command:
cab856b0 521
2eebaacd
RS
522@example
523finger -l fortran@@gnu.ai.mit.edu
cab856b0 524@end example
bb5d4e1a 525
d6eb79ad
RS
526@node Games and Recreations
527@chapter Games and Recreations
bb5d4e1a 528
c05524ad
RS
529Video-oriented games that work with the X window system.
530
d9e60f52 531@itemize @bullet
bb5d4e1a 532@item
c05524ad
RS
533A Doom-compatible display game engine, for running the many free
534levels people have written for Doom.
bb5d4e1a
RS
535
536@item
537Empire (there is a free version but it needs upgrading)
538
2eebaacd
RS
539@item
540An ``empire builder'' system that makes it easy to write various kinds of
541simulation games.
542
c05524ad
RS
543@item
544Improve GnuGo, which is not yet very sophisticated.
545
bb5d4e1a
RS
546@item
547Imitations of popular video games:
548
d9e60f52 549@itemize -
bb5d4e1a
RS
550@item
551Space war, Asteroids, Pong, Columns.
552@item
553Defending cities from missiles.
554@item
2eebaacd 555Plane shoots at lots of other planes, tanks, etc.
bb5d4e1a
RS
556@item
557Wizard fights fanciful monster.
558@item
559A golf game.
560@item
561Program a robot by sticking building blocks together,
562then watch it explore a world.
563@item
7c4978a8
RS
564Biomorph evolution (as in Scientific American and @cite{The Blind
565Watchmaker}).
bb5d4e1a
RS
566@item
567A program to display effects of moving at relativistic speeds.
568@end itemize
569
570@item
571Intriguing screen-saver programs to make interesting pictures.
572Other such programs that are simply entertaining to watch.
573For example, an aquarium.
bb5d4e1a
RS
574@end itemize
575
576We do not need @code{rogue}, as we have @code{hack}.
577
578@contents
579
580@bye