Using cl macros push, pop, when, unless throughout
the file. This is not further mentioned in this ChangeLog entry.
Documentation largely updated. Parser rewritten for better
Multifile Document processing. Macros with naked label arguments
supported. Some Mule related changes.
(reftex-default-label-alist-entries): Customization type is now
computed from reftex-label-alist-builtin. Enumerate has new
typekey `i'. `n' is now reserved for footnotes etc.
(reftex-label-alist): Introduced default regular expressions.
Customization type is now computed from
reftex-label-alist-builtin.
(reftex-label-menu-flags): New flag for showing file borders.
(reftex-refontify-context): New option.
(reftex-bibfile-ignore-list): Now a user option (was: variable).
(reftex-cite-format): Now a user option (was: variable).
Customization type is now computed from
reftex-cite-format-builtin.
(reftex-comment-citations): Now a user option (was: variable).
(reftex-toc-follow-mode): Now a user option (was: variable).
(reftex-optimizations-for-large-documents): New custom group.
(reftex-keep-temporary-buffers): 1 as additional value.
(reftex-initialize-temporary-buffers): New option.
(reftex-enable-partial-scans): New option.
(reftex-save-parse-info): New option.
(reftex-plug-into-AUCTeX): Now a user option (was: variable).
(reftex-auto-show-entry): New value 'copy allowed.
(reftex-load-hook): Now a declared variable.
(reftex-mode-hook): Now a declared variable.
(reftex-label-numbers-symbol): Variable removed.
(reftex-list-of-labels-symbol): Variable removed.
(reftex-label-numbers-symbol): Variable removed.
(reftex-bibfile-list-symbol): Variable removed.
(reftex-docstruct-symbol): New variable (buffer-local).
(reftex-master-include-list): Variable removed.
(reftex-make-master-buffer): Function removed.
(reftex-make-master-buffer-hook): Hook removed.
(reftex-insert-buffer-or-file): Function removed.
(reftex-parse-document): Function adapted to new parser.
(reftex-access-scan-info): Changed to fit new parser. Now detects
changes in label-alist related variables automatically.
(reftex-parse-one,reftex-parse-all): New functions.
(reftex-all-document-files): New function.
(reftex-grep-document,reftex-search-document,
reftex-query-replace-document): Now use
`reftex-all-document-files'.
(reftex-section-or-include-regexp): New variable.
(reftex-everything-regexp): New variable.
(reftex-find-label-regexp-format): New variable.
(reftex-find-label-regexp-format2): New variable.
(reftex-do-parse): New function.
(reftex-is-multi): New function.
(reftex-parse-from-file): New function.
(reftex-locate-bibliography-files): New function.
(reftex-last-assoc-before-elt): New function.
(reftex-replace-label-list-segment): New function.
(reftex-silence-toc-markers): New function.
(reftex-access-parse-file): New function.
(reftex-label): Now uses `reftex-where-am-I'.
(reftex-offer-label-menu): New keys `%' and `i' and `r'.
(reftex-select-item): Recursive edit moved to key `e'. New key
`x' for external documents. Works now also with nin-nil
pop-frame.
(reftex-offer-label-menu): Now uses `reftex-where-am-I'.
(reftex-make-and-insert-label-menu): More efficient, allow
optional extra fontification.
(reftex-find-nearby-label): Function removed.
(reftex-scan-buffer-for-labels): Function removed.
(reftex-section-info): New function.
(reftex-nth-parens-substring): Renamed to reftex-nth-arg. Return
nil when not enough args are present.
(reftex-move-over-touching-args): New function.
(reftex-where-am-I): New function.
(reftex-nth-arg-wrapper): New function.
(reftex-select-label-callback): Deal with special macros as well.
(reftex-find-duplicate-labels): Ignore special entries in
docstruct.
(reftex-kill-temporary-buffers): New arg buffer.
(reftex-show-entry): Copy context when necessary.
(reftex-toc): New key `R', use reftex-where-am-I.
(reftex-nearest-section): Use reftex-where-am-I.
(reftex-toc-visit-line): Completely rewritten. Uses markers and
several backup methods.
(reftex-citation): Recursive edit moved to `e' key.
(reftex-scan-buffer): Function removed.
(reftex-get-bibfile-list): Changed to work with chapterbib
package.
(reftex-find-tex-file): New function.
(reftex-find-files-on-path): Now first looks for file with
additional .tex extension, then for the naked file name.
(reftex-citation): Split into reftex-citation and
reftex-do-citation.
(reftex-do-citation): Recursive edit now on `e' key.
(reftex-what-macro): Allow white space between macro arguments.
(reftex-allow-for-ctrl-m): Renamed to
`reftex-make-regexp-allow-for-ctrl-m'.
(reftex-nearest-match): New function.
(reftex-auto-mode-alist): New function.
(reftex-make-desparate-section-regexp): New funtion.
(reftex-get-file-buffer-force): Rewritten to use new variable
`reftex-initialize-temporary-buffers'.
(reftex-label-alist-builtin): Use abbreviated regexps.
(reftex-label-mac-list): New variable.
(reftex-parse-args): New function.
(easy-menu-define): Menu extended. Some parts are now computed.
from the user options.
(reftex-move-to-next-arg,reftex-move-to-previous-arg) New
functions. Now we can parse macros with distributed arguments.
(reftex-goto-label): Function removed.
(reftex-position-cursor): Function removed.
(reftex-item): Function removed.
(reftex-add-to-label-alist): No longer autoloaded.
(reftex-toc-indent): Constant removed.
(reftex-label-indent): Constant removed.
(reftex-context-indent): Constant removed.
(reftex-match-string): New function.
(reftex-memory): New variable
(reftex-reset-mode): No longer hacks local variables. Now resets
path variables as well.
(reftex-truncate): New functions, to make RefTeX work with Mule.
(reftex-fp): New macro, to make RefTeX work with Mule.
(reftex-format-bib-entry): Now uses `reftex-truncate' to truncate
author names. `extra' and `title' are no longer truncated at all.
(reftex-all-assq): New function.
(reftex-view-crossref): Works now also if mouse click is on macro.
(reftex-context-substring): Now returns substring without text
properties.
(reftex-tex-path,reftex-bib-path): New variables.
(reftex-split): Function replaced with builtin `split-string'.
(reftex-find-bib-file): New function.
(reftex-find-files-on-path): Function removed.
(reftex-find-file-on-path): New function.
(reftex-access-search-path,reftex-parse-colon-path,
reftex-recursive-directory-list,reftex-expand-path): New
functions, dealing with recursive TEXINPUTS and BIBINPUTS
definitions.
\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 16 September 1997@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, Intro, (dir), (dir)@top GNU Task ListThis file is updated automatically from @file{tasks.texi}, which waslast updated on @value{lastupdate}.@end ifinfo@menu* Intro::* Highest Priority::* Documentation::* Unix-Related Projects::* Kernel Projects::* Extensions::* X Windows Projects::* Encryption Projects::* Other Projects::* Compilers::* Games and Recreations::@end menu@node Intro@chapter About the GNU Task ListIf you did not obtain this file directly from the GNU project andrecently, please check for a newer version. You can ftp the task listfrom any GNU FTP host in directory @file{/pub/gnu/tasks/}. The tasklist is available there in several different formats: @file{tasks.text},@file{tasks.texi}, @file{tasks.info}, and @file{tasks.dvi}. The GNUHURD task list is also there in file @file{tasks.hurd}.@c to fix an overfill, join the paragraphs -lenThe task list is also available on the GNU World Wide Web server:@url{http://www.gnu.ai.mit.edu/prep/tasks_toc.html}.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 tosend you the GNU coding standards.Because of the natural tendency for most volunteers to write programmingtools or programming languages, we have a comparative shortage ofapplications useful for non-programmer users. Therefore, we ask you toconsider writing such a program.Typically, a new program that does a completely new job advancesthe GNU project, and the free software community, more than animprovement to an existing program.Typically, new features or new programs advance the free softwarecommunity more, in the long run, than porting existing programs. Onereason is that portable new features and programs benefit people on manyplatforms, not just one. At the same time, there tend to be manyvolunteers for porting---so your help will be more valuable in otherareas, where volunteers are more scarce.Typically, it is more useful to extend a program in functionality thanto improve performance. Users who use the new functionality willappreciate it very much, if they use it; but even when they benefit froma performance improvement, they may not consider it very important.@node Highest Priority@chapter Highest PriorityThis task list mentions a large number of tasks that would be more orless useful. With luck, at least one of them will inspire you to startwriting. It's better for you to work on any task that inspires you thannot write free software at all.But if you would like to work on what we need most, here is a list ofhigh priority projects.@itemize @bullet@itemIf you are good at writing documentation, please do that.@itemIf you are very good at C programming and interested in kernels, you canhelp develop the GNU HURD, the kernel for the GNU system. Please have alook at @url{http://www.gnu.ai.mit.edu/software/hurd/hurd.html}, andthen get a copy of the latest HURD task list from:@itemize @bullet@item@url{http://www.gnu.ai.mit.edu/prep/tasks.hurd.html}, via the World WideWeb.@item@url{ftp://prep.ai.mit.edu/pub/gnu/tasks/tasks.hurd}, via anonymous FTP.@item@email{gnu@@prep.ai.mit.edu} via e-mail.@end itemize@itemIf you are a Scheme fan, you can help develop Guile. Please have a lookat the URL @url{http://www.gnu.ai.mit.edu:/software/guile/guile.html}and then contact @email{guile@@gnu.ai.mit.edu}.@itemHelp develop the GNU web browser, E-scape.@itemHelp develop Windows NT emulation for GNU systems---for example, WINE.@itemImplement the Kermit data transfer protocol. (See below.)@itemDevelop a free compatible replacement for Qt, a GUI toolkit library. Qtis not free software, because users are prohibited from distributingmodified versions. Thus, Qt cannot be included in a free operatingsystem (adding it would make the system as a whole non-free).But some developers are writing free applications that use Qt and cannotrun without it. These programs, although free software, are useless forfree operating systems because there is no way to make them run.This is leading to a serious problem, and a free replacement for Qt isthe only solution. Hence the high degree of urgency of this project.@itemDevelop a substitute, which runs on GNU systems, for some very popularor very important application that many non-programmers use on Windows,and which has no comparable free equivalent now.@end itemize@node Documentation@chapter DocumentationWe very urgently need documentation for some parts of the systemthat already exist or will exist very soon:@itemize @bullet@itemA C reference manual. (RMS made a try at one, which you could startwith).@itemA manual for Ghostscript.@itemA manual for TCSH.@itemA manual for PIC (the graphics formatting language).@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: CCompiler, Make, Texinfo, Termcap, and maybe the C Library.@itemMany utilities need documentation, including @code{grep} and others.@end itemize@node Unix-Related Projects@chapter Unix-Related Projects@itemize @bullet@itemAn improved version of the POSIX utility @code{pax}. There is one onUsenet, but it is said to be poorly written. Talk with@code{thomas@@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.@itemLess urgent: @code{diction}, @code{explain}, and @code{style}, orsomething to do the same kind of job. Compatibility with Unix is notespecially important for these programs.@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.@itemAn implementation of CIFS, the ``Common Internet File System,'' for theHURD. This protocol is an offshoot of SMB.@end itemize@node Extensions@chapter Extensions to Existing GNU Software@itemize @bullet@itemEnhance GCC. See files @file{PROJECTS} and @file{PROBLEMS} in the GCCdistribution.@itemInterface GDB to Guile, so that users can write debugging commands inScheme. This would also make it possible to write, in Scheme, agraphical interface that uses Tk and is tightly integrated into GDB.@itemRewrite GNU @code{sed} completely, to make it cleaner.@itemRewrite Automake and Deja-GNU in Scheme, so they can run in Guile.Right now they are written in Perl and TCL, respectively. There arealso other programs, not terribly long, which we would also liketo have rewritten in Scheme.@itemFinish the partially-implemented C interpreter project.@itemHelp with the development of GNUStep, a GNU implementation of theOpenStep specification.@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. This should work with LilyPond, afree program for music typesetting.@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 program to display and edit Hypercard stacks.@itemA paint program, supporting both bitmap-oriented operations andcomponent-oriented operations. @code{xpaint} exists, but isn't veryusable.@itemA vector-based drawing program in the spirit of Adobe Illustratorand Corel Draw.@itemAn interactive 3D modeling utility with rendering/raytracing capabilities.@itemA program for graphic morphing of scanned photographs.@end itemize@node Encryption Projects@chapter Encryption ProjectsThese projects need to be written outside the US by people who are notUS citizens, to avoid problems with US export control law.@itemize @bullet@itemA free library for public-key encryption.This library should use the Diffie-Helman algorithm for public keyencryption, not the RSA algorithm, because the Diffie-Helman patent inthe US will expire in 1997.@itemA free program for sended encrypted mail using public-key encryption.This program should use the library described above for the public-keyencryption. It should use triple-DES, not IDEA, for block encryption,because IDEA is patented in many countries and the patents will notexpire soon.In other respects, it should be like PGP. If the new version of PGPno longer uses RSA and IDEA, compatibility with it may be feasible.There is a suggestion that the Blowfish algorithm might be a good choicefor the non-public-key block encryption. I'm not an encryption expertso I don't have an opinion about that.Many people believe that PGP is free software, but that is not actuallytrue. The distribution terms do not allow everyone to use andredistribute it. We used to think that these restrictions had beenimposed by the patent holders for the RSA and IDEA algorithms, and thatPGP could be free software if these algorithms were replaced byalternatives. But we have since learned that the owners of PGP arethemselves unwilling to make it free software. Writing a new program isthe only way to get free software for this job.@itemA free secure telnet program more or less like ssh/sshd. Since thisrequires a public key encryption algorithm, it is closely related to thepreceding item.This program should follow the draft standard for ssh. As always, itcannot implement the RSA algorithm, but must instead support thealternatives that will be patent-free in late 1997. It cannot supportIDEA, but can use triple-DES and/or Blowfish or other non-patentedalternatives.@itemFree software for doing secure commercial transactions on the web.This too needs public key encryption.@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@itemA free program that can transfer files on a serial lineusing the same protocol that Kermit uses.@itemAn imitation of Page Maker or Ventura Publisher.@itemAn imitation of @code{dbase2} or @code{dbase3} (How dbased!)@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, including support for accounts payable, account receivables, payroll, inventory control, order processing, etc.@itemA teleconferencing program which does the job of CU-SeeMe (which is,alas, not free software).@itemA program to typeset C code for printing.For ideas on what to do, see the 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.)@itemA program to convert Microsoft Word documents to text/enriched, TeX,LaTeX, Texinfo, or some other format that free software can edit.@itemA free replacement for the semi-free Qt library.@itemHigh-quality music compression software.(Talk with phr@@netcom.com for relevant suggestions.)@itemA program to play sound distributed in ``Real Audio'' format.@itemA program to generate ``Real Audio'' format from audio input.@ignore @c Software patents have made this domain off limits to free software.@itemAn MPEG III audio encoder/decoder (but it is necessary to check, first,whether patents make this impossible).@end ignore@itemSpeech-generation programs (there is a program from Brown U that youcould improve).@itemSpeech-recognition programs (single-speaker, disconnected speech is sufficient).@itemMore scientific mathematical subroutines.(A clone of SPSS is being written already.)@itemStatistical tools.@itemA scientific data collection and processing tool,perhaps something like Scientific Workbench and/or Khoros,@itemSoftware to replace card catalogues in libraries.@itemA project-scheduling package that accepts a list of project sub-taskswith their interdependencies, and generates Gantt charts and Pert chartsand all the other standard project progress reports.@itemGrammar and style checking programs.@itemA translator from Scheme to C.@itemA fast emulator for the i386 which works by translatingmachine instructions into the machine language of the host machine.(Support for emulation of other machines would enhance the programbut might make it much more difficult.)@itemA map display or geographic information system.@itemOptical character recognition programs; especially if suitable forscanning documents with multiple fonts and capturing font info as wellas character codes. Work is being done on this, but more help is needed.@itemA program to scan a line drawing and convert it to Postscript.@itemA program to recognize handwriting.@itemA pen based interface.@itemCAD software, such as a vague imitation of Autocad.@itemA program to receive data from a serial-line tap to facilitate thereverse-engineering of communication protocols.@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, Cobol, Fortran 90, Eiffel, or whatever, to beused with the code generation phases of the GNU C compiler.@c Fortran status is here so gnu@prep and the volunteer coordinators@c don't have to answer the question -lenYou can get the status of the Fortran front end with this command:@examplefinger -l fortran@@gnu.ai.mit.edu@end example@node Games and Recreations@chapter Games and RecreationsVideo-oriented games that work with the X window system.@itemize @bullet@itemEmpire (there is a free version but it needs upgrading)@itemAn ``empire builder'' system that makes it easy to write various kinds ofsimulation games.@itemImprove GnuGo, which is not yet very sophisticated.@itemWrite imitations of some popular video game:@itemize -@itemSpace war, Asteroids, Pong, Columns.@itemDefending cities from missiles.@itemPlane shoots at lots of other planes, tanks, etc.@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 and @cite{The BlindWatchmaker}).@itemA program to display effects of moving at relativistic speeds.@end itemize@end itemizeWe do not need @code{rogue}, as we have @code{hack}.@contents@bye