GNU's Who

The GNU Team has grown larger in the last few months: Brian
Fox and Opus Goldstein have joined Jay Fenlason
as the only employees of the Foundation. Most recently, Brian
created a stand-alone texinfo formatter and browser and is now
working on sh, the shell. Stacey is running the mail
room, distributing tapes and manuals and generally doing every
thing that programmers do not do (e.g. interfacing with the
"real" world). Jay Fenlason has just finished the profiler
and is now working on miscellaneous utilities.

Richard Stallman continues to do countless tasks,
including refining the C compiler, GDB, GNU Emacs, etc.; he has
also written a termcap manual and several other documents.
Robert J. Chassell publishes our manuals, and serves as
the Foundation's treasurer. Chris Hofstader has become our
fund raiser. (Don't be surprised if he asks you for money.)
Finally, Len Tower continues to handle electronic
administrivia (mailing lists, information requests, and system
mothering).

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.

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.

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 our goal. For information on how to get
the software we do distribute, please see the article later in
this issue, `How To Get GNU Software'.

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,
documentation and source code to improve the GNU system.

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.

Our First Large Donation.

Software Research Associates, a Japanese software house, has
donated $10,000 to the GNU project. In addition they plan to send
us a Sun-like SONY workstation and lend us a staff programmer for
6 months.

This represents the influence of Kouichi Kishida, who
organized the Japanese Sigma project (to stimulate Unix
competence in Japan), only to conclude later that the project had
gone astray and that a "grass roots movement" was needed instead.
We hope to be this movement.

GNUs Flashes, February 1988

by Richard M. Stallman

Some parts of BSD are becoming free. After years of
urging from us and others, the people who maintain Berkeley
Unix have decided to release various parts of it (those which
don't contain AT&T code) separately as free software. This
includes substantial programs which we hope to use in GNU, such
as TCP/IP support and the C-shell.

Berkeley and GNU project cooperating. The next
release of Berkeley Unix may contain Make, AWK and SH from the
GNU project instead of those from Unix. The reason is that they
would like to have improvements in these programs like those in
system V.3; but they find the new restrictions on V.3 licenses
unpalatable. Both we and they hope they never get a V.3
license. We may help them avoid it by providing alternative
software. GNU Make already supports the system V features; a
volunteer is now writing the extensions for Gawk.

Shell disappointment. For a year and a half, the GNU
shell was "just about done". The author made repeated promises
to deliver what he had done, and never kept them. Finally I
could no longer believe he would ever deliver anything. So
Foundation staff member Brian Fox is now implementing an
imitation of the Bourne shell. Once it is done, we will extend
it with the features of the Korn shell, thus coming to
Berkeley's aid.

We may use Sprite, or the Sprite file system with
MACH. We still hope to use the MACH kernel from CMU when it
becomes free, after the parts of Berkeley Unix which currently
form part of it have been replaced as planned. The MACH people
say that in a month or two certain new features (call-outs from
the kernel to user code) should be ready that will enable us to
start working on replacing some of these parts with new code.
One thing we are considering is adapting the file system from
Berkeley's Sprite kernel for use in MACH. This file system was
designed from the beginning to work in a distributed manner.
The file system is the largest part of MACH that needs
replacement, now that the Berkeley TCP/IP code, also used in
MACH, has been declared free.

GNU Make is done. The GNU version of Make is now
ready, and will be distributed soon. It features
conditionals, pattern rules, and indirect search for implicit
rules, and built-in functions for text processing. Here is
how a GNU Makefile can say that the file `foo' is linked from
the object files of all C source files in the current
directory:

Most libraries are done.Roland McGrath, who
contributed a great deal to GNU Make, has a nearly complete set
of ANSI C library functions. We hope they will be ready some
time this spring. These join the GNU malloc,
regexp and termcap libraries that
have existed for some time. Meanwhile, Steve Moshier has
contributed a full series of mathematical library
functions.

Profiler replacement done. Foundation staffer Jay
Fenlason has recently completed a profiler to go with GNU
C, compatible with `prof' from Berkeley Unix. I hope it will be
distributed with GNU C soon.

Termcap Manual. We are now publishing the first
thorough manual for Termcap, which some have suggested ought to
be entitled "Twice as much as you ever wanted to know about
Termcap".

GNU mailer being done.Landon Noll and
Ronald Karr of Amdahl are writing a mail queueing and
delivery system, called Smail. This project will be a supported
part of Amdahl's UTS system--and it will be available on
exactly the same terms as GNU Emacs! We may use this mailer for
the GNU system, or another mailer that Rayan Zachariasen
is writing, whichever turns out better.

Ghostscript status Ghostscript, the free Postscript
for GNU, will with luck be finished by Peter Deutsch
(except for bugs) in March. Therefore, it might be ready for us
to distribute a few months later.

Emacs version 18.50 This version, to be available in
a few weeks, will fix many bugs and add support for the 80386,
the Sun 4, the Convex, the IRIS 4d and the HP 9000 series 800;
also support for system V.3; and add support for version 11 of
the X window system.

GDB can read COFF format. COFF is the hairy
executable file format used on system V. Recently Dave
Johnson of Brown University contributed support for reading
COFF files in GDB, the GNU debugger. This code will appear in
GDB 2.5, accompanying Emacs 18.50. As a result, it should now
be possible to use GDB on system V without a large amount of
work. In general, support for COFF isn't important for the GNU
project, since we are going to use the BSD object file format
in GNU. Everything said below about VMS applies to COFF support
as well.

G++, the GNU C++ compiler.Michael Tiemann of MCC has written a C++
compiler as an extension of GNU C. This is the first compiler
that compiles C++ directly instead of
preprocessing it into C. G++ is now being tested
at several sites. Michael believes it is as reliable as
AT&T's C++ preprocessor, but this still leaves
a long way to go before it is a solid product. G++
comes with GDB+, a version of GDB that supports
C++ class operations in its expression
evaluator.

GDB and GNU C support the 32000. GNU C has now
compiled itself correctly on the Sequent 32000 system. The port
was done by Michael Tiemann of MCC, who says it is more
reliable than Sequent's compiler and yields a 40% speedup for
several programs including a prolog interpreter. Support for
the 32000 is now released in GNU C version 1.17, along with
existing support for the 68000 series and the VAX. GDB support
for the 32000 is in GDB 2.5, to appear with Emacs 18.50.

GNU C ports in progress. People are working on
porting GNU C to the IBM 370, to the IBM RT/PC, and to the
80386. The 80386 is the easiest; there is little doubt that
this port will be available in a few months at most. The other
machines have more troublesome architectural differences and it
isn't yet certain whether GNU C can handle them fully without
significant new features.

GNU C is becoming reliable. GNU C bug reports are
becoming less frequent, suggesting that it is approaching a
state of reliability. People are still reporting bugs, but they
also say they think there are fewer bugs than in commercial
compilers. John Gilmore is now compiling all of BSD Unix
with GNU C. He has found several bugs, but not a great number
for such a large amount of code never before compiled.

GNU C for VMS. Fed up with the deficiencies of the
VMS C compiler, David Kashtan from SRI decided to spend
a couple of weeks and make GNU C run on VMS. After making
considerable changes to satisfy the VMS C compiler, he got it
running and was able to take most of the changes out. We hope
to deliver VMS support in GNU C version 1.19 or 1.20, but we
can't be certain when he will finish merging it and deliver it.
(Uh oh, I hope it's not going to take a year...) When VMS
support is delivered to us, the usual GNU C sources will
contain everything needed for it, but you won't be able to
compile them with the standard VMS C compiler due to its
various incompatibilities and deficiencies. You will need a
binary of GNU C. We plan to offer mag tapes with VMS backup
savesets containing binaries as well as sources. Other GNU
programs currently working on VMS include GNU Emacs and Bison.
Please don't ask us to devote effort to additional VMS support,
because it is peripheral to the GNU project. We merge in and
support VMS ports that users do, because it is hard to refuse
to pass on work that other people have done. But even when the
changes are clean, this drains considerable effort from our
real goal, which is to produce a complete integrated system.
(When they aren't clean, we summon up the courage to ignore
them.) Merging VMS GNU Emacs and reorganizing the changes to
ease future maintenance consumed several weeks even though the
"real work" was done by others. I hope we have learned not to
let this happen again.

Looking for a tech writer. We are trying to hire a
technical writer, but so far we have not found anyone suitable.
It seems that tech writers are not as likely as programmers to
accept a pay cut to work for our cause. We still have a couple
of candidates who are possible, and we're still looking.

GNU C++

brings Object Oriented Programming to GNU

by Michael Tiemann

C++ is among the most popular languages for
object-oriented programming, for two reasons: it is nearly a
superset of C, thus making it easily accessible to the C user
community, and it is supported by AT&T, which leads a
standards-hungry public to believe that, by subscribing to
C++ (as opposed to SmallTalk, Objective C, or many
other alternatives), they are following "the standard". About a
million lines of code have been written in C++.

Last summer, I was faced with the task of selecting a language
to use for a new computer architecture project. So strong was the
influence of C++, that the only decision I could
make was "which one". C++ from AT&T looked like
the logical choice, except for two problems: it is proprietary
software, and it is a preprocessor which converts
C++ code into C code. This is slow and means that
the constructs and concepts of C++ aren't available
in the debugger.

I decided to see whether we could quickly modify GNU C into a
C++ compiler that has the quality people expect from
compilers for other languages, such as easy retargetability and
source-level debugging support. I could--and I have.

The GNU C++ compiler is intended to implement the
C++ programming language, as specified in
Stroustrup's reference manual. Since most of the GNU C compiler
is language-independent, it only took six months to make a
general beta-test release. There are still gaps and bugs, but I
am working hard on finishing it. All the optimizations of GNU C
apply equally to C++. I have also added
C++-inspired optimizations. Some of them, such as
inlining functions, will also work in some cases for C; others,
such as optimizing virtual functions, are strictly
C++.

GNU C++ is not only the first free
C++ compiler; it is the first direct
compiler for C++ available at any price, and it is
the first C++ implementation to interface with a
C++ source-level debugger (GDB+, a
modification of the existing GNU debugger).

GNU C++ is therefore remarkable from a technical
point of view, but it is even more remarkable organizationally,
because it is free software whose development was paid for by the
Microelectronics and Computer Technology Corporation (MCC), a
consortium established in 1982 to do long range research for
around 20 shareholder companies.

In January, six months after I started working on GNU
C++, the group of MCC shareholders sponsoring the
computer architecture project were told for the first time that I
was writing free software. It was easy to imagine they might
disapprove, Scrooge-like, or even insist on halting the work. But
it was just the opposite: our cooperation with the Free Software
Foundation was good news to them. Technology transfer is one of
the most difficult barriers for shareholders to overcome when
picking up MCC research.

When MCC delivers specialized software, it comes with no
experts beyond those who wrote it, and it is all but unusable
except by painful learning. When we deliver software that relies
on a proprietary environment which they do not have access to,
that software becomes an expensive hostage of its environment. By
providing software which can be made accessible to anybody,
without fear of compromising cooperative agreements, it gives the
shareholders freedom to use that technology in ways previously
unavailable to them.

Our group was specifically congratulated on its achievement of
delivering technology that they wanted, and making that
technology available via the Free Software Foundation.
Considering that this is the first free software that MCC has
ever sponsored, and the incredibly positive reaction that we
received, it is very exciting to think of the possibilities that
lie ahead.

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, version 10, 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 (as of version
18.50) has run on many kinds of Unix systems: those made by
Alliant (system release 1, 2 or 3), Amdahl (UTS), AT&T (3b
machines and 7300 pc), CCI 5/32 and 6/32, Celerity, Convex,
Digital (Vax, not PDP-11), Dual, Elxsi 6400, Encore, GEC 93,
Gould, HP (9000 series 200, 300 or 800 (Spectrum) but not
series 500), IBM (RT/PC running 4.2 and AIX), Integrated
Solutions (Optimum V with 68020 and VMEbus), Iris (2500 Turbo
and 4D), LMI (Nu), Masscomp, Megatest, MIPS, NCR (Tower 32),
Nixdorf Targon 31, 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, 2.2 or
3). Emacs also runs on several 80386 machines. 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 VAXen under
4.2 and 4.3bsd, on Suns (systems version 2 and 3), and on some
32000 systems. 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 code for the 32000,
68000, 68020 and Vax. It features automatic register packing
that makes register declarations unnecessary. It supports full
ANSI C as of the latest draft standard. The texinfo source of
the manual "Internals of GNU CC" is included.

Bison Bison is an upward-compatible replacement for
YACC, with additional as-yet-undocumented features. It has been
in use for several 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 and 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, and
several typesetting previewers. Version 10 of X Windows is
distributed on the GNU Emacs tape; version 11 (which is totally
incompatible) is distributed on the GCC tape. Emacs version
18.50 will support both versions 10 and 11.

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, we do not distribute documentation with the 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. In the meantime, several books have been
published about Scheme.

Hack Hack is a display oriented adventure game
similar to Rogue.

The GDB Song

with thanks to Joel Bion, Mark Baushke, and Lynn
Slater

Somebody asked us what was GDB. With apologies to Oscar
Hammerstein II, Richard Rodgers, and Julie Andrews, we offered
the following reply:

Let's start at the very beginning, a very good place to
start,

When you're learning to sing, its Do, Re, Mi;
When you're learning to code, its G, D, B.

(background) G, D, B.

The first three letters just happen to be, G, D, B.

(background) G, D, B.

(Chorus)

G!,

GNU!, it's Stallman's hope,

B,

a break I set myself.

D,

debug that rotten code,

Run,

a far, far way to go.

Print,

to see what you have done,

Set,

a patch that follows print.

Quit,

and recompile your code - - -

That will bring it back to G,
D,
B,
<link>

(Resume from the Chorus)

Why Was Copyright Invented?

by Richard M. Stallman

Now that copyright is becoming a public nuisance that the
public tries to ignore, copyright owners try to justify this
imposition by calling it an intrinsic right. As they tell it,
their intrinsic right is a tradition that makes the public good
irrelevant.

This is contrary to the facts of the history of copyright.

The Supreme Court has stated explicitly what copyright was
for. Writing for the Court, Justice Stewart explained:

The immediate effect of our copyright law is to secure a
fair return for an "author's" creative labor. But the ultimate
aim is, by this incentive, to stimulate artistic creativity for
the general public good. `The sole interest of the United
States and the primary object in conferring the [copyright]
monopoly,' this Court has said, `lie in the general benefits
derived by the public from the labors of authors.'

---Fox Film Corp. v. Doyal (286 US 123, 127)

So when copyright interferes with the public use of a program,
that directly attacks the reason for having copyright.

When Programs Become Available

or Rather, how NOT to find out when a program becomes
available...

by Richard M. Stallman

I have dared to make a few predictions about when certain
programs will be ready for distribution. Now, after the fact, I
hope that wasn't a mistake.

Creating a given program often takes much longer than
expected. If this happens, many of you who are eager to use it
might have the idea of phoning or writing to ask me whether the
program is available yet. Or, even worse, to describe which parts
are completed, or which machines it will be ported to, or how
easy it will be to port to certain machines, or which features
are going to be implemented.

Some of these questions have no answers. When a program isn't
finished, we don't know which features we will add while
finishing it. We don't make plans to port programs because our
usual policy is to leave porting up to you. This is a way of
recruiting wider participation.

Responding to all possible inquiries would divert time and
energy and slow the completion of the program, causing even more
inquiries. Were we to permit this to happen, the amount of time
left to devote to programming could approach zero.

Only you can save the GNU project from this absurd fate.
Please exert your will power, be patient, and wait for us to
announce that programs are available. If you would like to see
more GNU software appear faster, the best thing to do is to
volunteer a significant amount of your time.

The best way to find out quickly when a piece of GNU software
is released or updated for general on-line distribution is to
arrange to receive the info-gnu mailing list on which our
announcements are made. To receive info-gnu, send a request
to

ucbvax!prep.ai.mit.edu!info-gnu-request
(usenet)

info-gnu-request@prep.ai.mit.edu (internet)

Some specific programs such as Emacs, GCC, GDB, GNU Chess, and
G++ have specific mailing lists of their own on
which new versions are announced. To be on these lists, just
mention in your request which programs you are interested in.

Tape distribution normally starts some weeks later than
on-line distribution, either because we demand a higher standard
of reliability for users who cannot easily get upgrades, or
because we are hopelessly confused and can't get our act
together. We generally make another electronic announcement when
tape distribution starts. You can order tapes in advance if you
wish, if you understand that delivery may be delayed for many
weeks while we work on reliability.

When we expect true reliability to take many months to
achieve, we may offer a beta-test tape at an earlier date, as we
are doing with GNU C. We announce these tapes in the usual
ways.

If you can't receive Usenet or Internet mail and you are
planning to order a tape of a specific program, you can telephone
the Foundation to find out whether the program is available for
tape distribution. Our phone number is (617) 876-3296. It is best
to call in the morning, EST, as you will be more likely to reach
Opus Goldstein, our office and shipping person, rather than our
tape machine. In general, Opus cannot contact each person
individually to say when a tape is ready, but perhaps an
arrangement can be made if it is important.

If you are planning to get a copy from someone else, please
ask that person to inform you when it is ready. This will spread
the burden.

If you are truly desperate for a prognostication, you might
try consulting your local fortune-tellers. They don't know any
less than we about the future.

GNU Wish List

Money, as always. Please remember, we are tax-deductable
and, among other things, we want to hire somebody to write
documentation!!!

Office equipment, e.g. a desktop copier; a nifty new phone
answering machine that deletes old messages; a couple of Sun
workstations or VAXen; 1200/2400/4800/9600 baud modems; and an
electric typewriter that has a delete key.

Highly knowledgible technical people to write excellent
documentation on a volunteer basis.

Top flight programmers to help write utilities and
compilers for new languages.

Clipings of media articles mentioning GNU.

How To Get GNU Software

All the software and publications from the Free Software
Foundation are distributed with permission to copy and
redistribute. The easiest way to get a copy of GNU software is
from someone else who has it. Just copy it from them.

If you have access to the Internet, you can get the latest
software from the host `prep.ai.mit.edu'. For more
information, read the file
`/u2/emacs/GETTING.GNU.SOFTWARE' on that host.

If you cannot get the software from a friend or over the net,
the Free Software Foundation distributes tapes for a copying and
distribution fee. See the order form on the inside back
cover.

If you do not have net access, and your computers cannot use
either of the two media we distribute on, you must get our
software from third party groups--people and organizations that
do not work with us, but have our software in other forms. For
your convenience, other groups that are helping to spread GNU
software are listed below. Please note that the Free Software
Foundation is not affiliated with them in any way, and is
not responsible for either the currency of their versions or the
swiftness of their responses.

These Internet sites have some GNU programs available for
anonymous FTP: louie.udel.edu,
nic.nyser.net, bu-it.bu.edu,
uunet.uu.net, spam.istc.sri.com, and
simtel20.arpa (under PD:<Unix.GNU>).

Information on how to uucp some GNU programs is available via
electronic mail from: arnold@skeeve.UUCP,
ihnp4!hutch!barber, hqda-ai!merlin.
Also, you can ask:
hao!scicom!qetzal!upba!ugn!nepa!denny or else from:
postmaster@uunet.uu.net.

Ohio State also uucps GNU programs. They post their
instructions monthly to newsgroup comp.sources.d on
Usenet. Current details from Karl Kleinpaste
karl@tut.cis.ohio-state.edu or
karl@ohio-state.arpa or
...!cbosgd!osu-cis!karl; or Bob Sutterfield
(substitute bob for karl in the above addresses).