# GNU's Bulletin, vol. 1 no. 2

# Gnu's Who

In the first Bulletin there was a piece Gnu's Zoo telling of the various people working on Project Gnu and connecting them with an appropriate animal. Matching menageries of people to menageries of animals gets increasingly hard to do. So I have settled for presenting just the biography without the bestiary.

Paul Rubin started working for the Foundation full time this summer and is now helping us again in January. During the school year he studies mathematics at UC Berkeley. He wrote the C Compatible Compiler Preprocessor (CCCP) and some other utilities, worked on getting the printed Emacs manuals made, and is now developing kernel maintenance tools for TRIX. He likes jazz and classical music and hates cats.

hack (Jay Fenlason) joined project GNU full time this fall. He's been a UNIX hacker since high school, and wrote the original version of Hack among other things. He's most famous for his work on various Logo interpreters, including LSRHS/Childrens Museum logo, and TLC logo for the Commodore Amiga. When he's not hacking, he reads, writes poetry, and plays role-playing games.

Diane Wells has been helping all summer and fall and winter, answering the mail and filling orders.

Stephen Gildea redesigned the Emacs reference card for version 18. The new reference card source uses TeX instead of a proprietary formatting program.

Pierre MacKay typeset the masters that the Emacs manual pages were shot from on his high quality phototypesetter.

### GNU'S BULLETIN

Copyright (C) January 1987 by the Free Software Foundation.

Editor: Jerome E. Puzo
Asst. Editor: Paul Rubin

> Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and permission notice are preserved, and that the distributor grants the recipient permission for further redistribution as permitted by this notice.

# What is the Free Software Foundation?

by Richard M. Stallman

The Free Software Foundation is dedicated to eliminating restrictions on copying, redistribution, understanding and modification of software.

The word "free" in our name does not refer to price; it refers to freedom. First, the freedom to copy a program and redistribute it to your neighbors, so that they can use it as well as you. Second, the freedom to change a program, so that you can control it instead of it controlling you; for this, the source code must be made available to you.

The Foundation works to give you these freedoms by developing free compatible replacements for proprietary software. Specifically, we are putting together a complete, integrated software system "GNU" that is upward-compatible with Unix. When it is released, everyone will be permitted to copy it and distribute it to others; in addition, it will be distributed with source code, so you will be able to learn about operating systems by reading it, to port it to your own machine, to improve it, and to exchange the changes with others.

There are already organizations that distribute free CPM and MSDOS software. The Free Software Foundation is doing something different.

1. The other organizations exist primarily for distribution; they distribute whatever happens to be available. We hope to provide a complete integrated free system that will eliminate the need for any proprietary software.

2. One consequence is that we are now interested only in software that fits well into the context of the GNU system. Distributing free MSDOS or Macintosh software is a useful activity, but it is not part of our game plan.

3. Another consequence is that we will actively attempt to improve and extend the software we distribute, as fast as our manpower permits. For this reason, we will always be seeking donations of money, computer equipment or time, labor, and source code to improve the GNU system.

4. In fact, our primary purpose is this software development effort; distribution is just an adjunct which also brings in some money. We think that the users will do most of the distribution on their own, without needing or wanting our help.

### Why a Unix-Like System?

It is necessary to be compatible with some widely used system to give our system an immediate base of trained users who could switch to it easily and an immediate base of application software that can run on it. (Eventually we will provide free replacements for proprietary application software as well, but that is some years in the future.)

We chose Unix because it is a fairly clean design which is already known to be portable, yet whose popularity is still rising. The disadvantages of Unix seem to be things we can fix without removing what is good in Unix.

Why not imitate MSDOS or CP/M? They are more widely used, true, but they are also very weak systems, designed for tiny machines. Unix is much more powerful and interesting. When a system takes years to implement, it is important to write it for the machines that will become available in the future; not to let it be limited by the capabilities of the machines that are in widest use at the moment but will be obsolete when the new system is finished.

Why not aim for a new, more advanced system, such as a Lisp Machine? Mainly because that is still more of a research effort; there is a sizeable chance that the wrong choices will be made and the system will turn out not very good. In addition, such systems are often tied to special hardware. Being tied to one manufacturer's machine would make it hard to remain independent of that manufacturer and get broad community support.

# GNU Project Status (3 Jan. 1987)

by RMS (See also the article "GNU Software Available Now", elsewhere in this issue).

- GNU Emacs and GDB.

  GNU Emacs and GDB are already released. Berkeley is distributing GNU Emacs with the 4.3 distribution, and DEC is going to distribute it with Unix systems on Vaxes.

- gsh, the GNU imitation C shell.

  Beta-test release of a C shell with input editing and compilation of shell scripts is expected at the end of January.

  The same program is supposed to imitate sh, but that doesn't work yet.

- Kernel.

  I am planning to use a remote procedure call kernel called TRIX, developed at MIT, as the GNU kernel. It runs, and supports basic Unix compatibility, but needs a lot of new features. Its authors have decided to distribute it free. It was developed on an obscure, expensive 68000 box designed years ago at MIT.

  In December 1986, we started working on the changes needed to TRIX.

- C compiler

  I am now working on finishing a new portable optimizing C compiler. It supports the Oct 1986 draft of ANSI C and has compiled both itself and GNU Emacs. However, I plan to make some rearrangements in order to enable compilation of arbitrarily large functions in bounded amounts of memory, though with some decrease in optimization compared to what can be done with lots of memory.

  The compiler performs automatic register allocation, common subexpression elimination, invariant code motion from loops, constant propagation and copy propagation, delaying popping of function call arguments, plus many local optimizations that are automatically deduced from the machine description. By the time it is finished it will probably also know when to keep constant addresses in registers.

  It makes shorter and faster 68020 code than the sun compiler with -O.

  A new cpp was written last summer. It is as fast as the Unix cpp. PHR is now making it support the Oct 1986 standard.

- Assembler.

  An assembler has been written. It works well on Vaxes but proves to be harder to port than I had hoped, so some rewriting is needed to simplify the interface between the machine-dependent portions and the machine-independent ones.

- Window system.

  I plan to use the X window system written at MIT. This system is already available free.

- Documentation system.

  I now have a truly compatible pair of programs which can convert a file of texinfo format documentation into either a printed manual or an Info file.

  Documentation files are needed for many utilities.

- Stdio

  A free stdio system has just been received.

- Other utilities.

  The GNU `ls', `grep', `make' and `ld' are in regular use. `tar' recently appeared on USENET net.sources. The other object-file management utilities are written too. `cron' and `at' were recently submitted, and so was `m4'. The assembler works for the Vax, but proves to be hard to port, so it may need considerable rewriting.

  `awk' is now in final testing stages. `diff' is making progress. We have a program like `lex' but not fully compatible; work is required on it.

- Free Software Foundation.

  The foundation exists for two purposes: to accept gifts to support GNU development, and to carry out distribution. We are now tax exempt; you can deduct donations to us on your tax returns.

  Our address is

  > Free Software Foundation
  > 1000 Mass Ave
  > Cambridge, MA 02138

  and our phone number is (617) 876-3296.

- Service directory.

  The foundation now maintains a Service Directory; a list of people who offer service to individual users of GNU Emacs and, eventually, all parts of the GNU system. Service can be answering questions for new users, customizing programs, porting to new systems, or anything else.

- Possible target machines.

  GNU will require a cpu that uses 32-bit addresses and integers and addresses to the 8-bit byte. 1 meg of core should be enough, though 2 meg would probably make a noticeable improvement in performance. Running much of the system in 1/2 meg may be possible, but certainly not GNU Emacs. I do not expect that virtual memory will be required, but it is VERY desirable in any case.

  GNU Emacs requires more than a meg of addressable memory in the system, although a meg of physical memory is probably enough if there is virtual memory.

  A hard disk will be essential; at least 20 meg will be needed to hold the system plus the source code plus the manual plus swapping space. Plus more space for the user's files, of course. I'd recommend 80meg for a personal GNU system.

  This is not to say that it will be impossible to adapt some or all of GNU for other kinds of machines; but it may be difficult, and I don't consider it part of my job to try to reduce that difficulty.

  I have nothing to say about any specific models of microcomputer, as I do not follow hardware products.

- Porting.

  It is too early to inquire about porting GNU (except GNU Emacs). First, we have to finish it.

# GNU Software Available Now

- GNU Emacs

  In 1975, Richard Stallman developed the first Emacs: the extensible, customizable real-time display editor. GNU Emacs is his second implementation of Emacs. It's the first Emacs available on Unix systems which offers true Lisp, smoothly integrated into the editor, for writing extensions. It also provides a special interface to MIT's free X window system, which makes redisplay very fast.

  GNU Emacs has been in widespread use since 1985 and often, as at MIT's Project Athena, displaces proprietary implementations of Emacs because of its greater reliability as well as its good features and easier extensibility.

  GNU Emacs has run on many kinds of Unix systems: those made by Alliant (system release 1 or 2), AT&T (3b machines and 7300 pc), Celerity, Digital (Vax, not PDP-11), Dual, Encore, Gould, HP (9000 series 200 or 300 but not series 500), IBM (RT/PC running 4.2), Integrated Solutions (Optimum V with 68020 and VMEbus), Masscomp, Megatest, NCR (Tower 32), Plexus, Pyramid, Sequent, Stride (system release 2), Sun (any kind), Tahoe, Tektronix (NS16000 system), Texas Instruments (Nu), Whitechapel (MG1), and Wicat. These include both Berkeley Unix and System V (release 0, 2 or 2.2). It also runs on Apollo machines and on VAX/VMS.

  GNU Emacs use is described by the GNU Emacs Manual, available from the Free Software Foundation.

- GDB

  GDB is the source-level C debugger written for the GNU project in 1986. It offers many features not usually found in debuggers on Unix, such as a history that records all values examined within the debugger for concise later reference, multi-line user-defined commands, and a strong self-documentation capability. It currently runs on Vaxes and Suns (systems version 2 and 3).

  A users' manual for GDB is available from the Foundation.

- GNU CC

  The GNU C compiler is a fairly portable optimizing compiler. It generates good 68000 and 68020 code and generated good Vax code when it was last tested for the Vax. It features automatic register packing that makes register declarations unnecessary. It supports full ANSI C as of the latest draft standard. We expect to release the compiler in 1st quarter 1987.

- Bison

  Bison is an upward-compatible replacement for YACC, with some additional undocumented features. It has been in use for a couple of years.

- X Window System

  X is a portable, network transparent window system for bitmap displays written at MIT and DEC. It currently runs on DEC VAXstation, Lexidata 90, and most Sun Microsystems displays, with others in the works. X supports overlapping windows, fully recursive subwindows, and provides hooks for several different styles of user interface. Applications provided include a terminal emulator, bitmap editor, several window managers, clock, window dump and undump programs, hardcopy printing program for the LN03 printer, several typesetting previewers, and more.

- MIT Scheme

  Scheme is a simplified, lexically scoped dialect of Lisp, designed at MIT and other universities for two purposes: teaching students of programming, and researching new parallel programming constructs and compilation techniques. MIT Scheme is written in C and runs on many kinds of Unix systems.

  Sorry, there is no documentation for the current distribution version of MIT Scheme. A new standard for Scheme has been designed by the various labs that work on Scheme, and work is going on at MIT to change MIT Scheme to fit. Once that is done, the standard will serve as a manual for MIT Scheme. At that time, we will distribute both the new release of Scheme and the standard.

- GNU Chess

  GNU Chess was written in 1986 by Stuart Cracraft, who is continuing to develop it. It comes with an interface to the X window system to display a pretty chessboard. It also has an opening book which is being added to all the time.

- Hack

  Hack is a display oriented adventure game similar to Rogue.

# How To Get GNU Software

All software and publications are distributed with a permission to copy and redistribute. The easiest way to get a copy of GNU Software is from someone else who has it. You need not ask for permission; just copy it.

If you have access to the Internet, you can get the latest distribution version of GNU Software from host `prep.ai.mit.edu'. For more info read: ``/u2/emacs/GETTING.GNU.SOFTWARE'` on said host.

If you cannot get a copy in any of these ways, you can order one from the Free Software Foundation. Please consult the accompanying Order Form for prices and details.

# Emacs 18 runs on Vax VMS.

- GNU Emacs now runs on Vax VMS.

- Searching is several times faster.

- Running out of memory is never fatal.

  Memory usage for strings is cut in half by a new garbage collector.

- GNU Emacs can emulate other editors: EDT, VI, Gosmacs.

- New major modes for LaTeX, Fortran, Scribe, Modula2 and Prolog.

- Terminal-independent function keys.
  The first, terminal-dependent level converts a terminal's function key codes into standard codes. The second level maps these into commands. Users can customize the second level and enjoy the same results automatically on all terminal types.

- All C-c LETTER keys are reserved for users. Such commands previously defined by Mail mode, Picture mode and Telnet mode have been moved.

- New Commands
  - Buffer-sorting commands.

    Various new commands sort the lines, paragraphs or pages in the region; they can also sort lines according to fields or columns.

  - `occur' output now serves as a menu.
    `M-x occur' now allows you to move quickly to any of the occurrences listed. To do this, select the ``*Occur*'` buffer that contains the output of `occur', move point to the occurrence you want, and type `C-c C-c`.

  - Meta-TAB performs completion on the Emacs Lisp symbol name in the buffer.

  - Dynamic abbreviation package.
    The new command Meta-/ expands an abbreviation in the buffer before point by searching the buffer for words that start with the abbreviation.

  - `c-tab-always-indent' parameter tells TAB in C mode to insert a tab character when used in the middle of a line.

  - Outline mode is customizable.
    You can now specify with a regexp which lines are outline headings. Lines that separate pages are always considered headings.

- File saving changes

  - Undo says "not modified" only when the buffer matches the disk file.

  - Auto save file name now has `#` at end.
    For a file ``foo'`, the auto save file is now called ``#foo#'`. This is so that ``*.c'` in a shell command will never match auto save files.

  - M-x recover-file checks file dates.
    M-x recover-file is used to recover a file's contents from its auto save file. Now this command checks the date of the auto save file and offers to recover from it only if it is newer.

  - Modifying a buffer whose file is changed on disk is detected instantly. Thus, you are warned that something is wrong before you go ahead and create a skewed version of the file.

  - Exiting Emacs offers to save ``*mail*'`.

  - M-x ftp-find-file and M-x ftp-write-file read and write files via Internet.

  - Precious files
    If you mark a buffer "precious", Emacs will save it by renaming so that there is no time between the disappearance of the old file and the appearance of the new one. This is used for RMAIL files.

- Existing Emacs usable as a server for `mail`, etc.
  Programs that invoke a user-specified editor as a temporary inferior can now be told to use an existing Emacs process instead.

- M-x disassemble disassembles byte-compiled Emacs Lisp functions.

- `substitute-key-definition' finds all keys defined as one command and redefines them all as another command.

- New hooks for file I/O.
  You can set up multiple hooks for finding and saving files. These can arrange automatically to get files via RCS, uncompression, ftp, etc.

- New data structure controls mode line format.
  Now it is possible to change one aspect of what appears in the mode line independently of what is being done with the rest of the mode line.

# GNU Wish List

The GNU project can always use donations of money or equipment. Specifically, we could use:

- Salary for two more full time programers.

- A computer powerful enough to develop the GNU kernel on. This means a 68xxx/32xxx class processor with several meg of main memory and an 80 meg disk.

- Local volunteers to help mail tapes and manuals to our clients, and answer mail. We need about 10 person-hours/week of help doing this.

- Dedicated people, with C and Unix knowledge, especially those with a local (Cambridge and surrounds) address, to write programs and documentation. Ask for our task list if you want to help.

# Thank Gnus

The Free Software Foundation would like to send special thank gnus to the following:

Thanks to Stacy Goldstein. Stacy answered the mail and filled orders for FSF. Her efforts got us thru a very busy season. She then left to continue her studies in Hawaii which she claims "is as good as they say".

Thanks to Todd Cooper and Henry Mensch. They also helped out in the mail room.

Thanks to the MIT Laboratory for Computer Science. The LCS has provided FSF with the loan of a TI Nu machine and a Microvax for program development.

Thanks to Professor Dertouzos, head of LCS. His specific decision to support us is greatly appreciated.

Thanks to the MIT Artificial Intelligence Laboratory for invaluable assistance of many kinds.

Thanks to Lisp Machine, Inc. LMI has generously provided office space, computer resources and a mailing address for FSF.

Thanks to the European Unix Users' Group of Sweden and the Swedish Royal Institute of Technology for their generous donations.

Thanks to those who sent money and offered help. Thanks also to those who support us by ordering Emacs manuals and distribution tapes.

The creation of this bulletin is our way of thanking all who have expressed interest in what we are doing.