GNU's Bulletin, vol. 1 no. 7 -- June, 1989


The GNU's Bulletin is the semi-annual newsletter of the Free Software Foundation, bringing you news about the GNU Project.

Free Software Foundation, Inc. Telephone: (617) 876-3296
675 Massachusetts Avenue Electronic mail: gnu@prep.ai.mit.edu
Cambridge, MA 02139 USA


GNU's Who

Some new people have joined our full-time staff. Joseph Arceneaux is working on Emacs version 19. Soon to arrive are Karl Berry, Kathy Hargreaves, and Jim Kingdon. Randy Smith, who has been working on GDB, will be leaving us for grad school in the fall.

Mike Haertel is back with us, working on a new, more efficient malloc and on finishing the C interpreter started by Nobuyuki Hikichi. Roland McGrath has been hired for the summer to complete the ANSI C library which he started.

Brian Fox is still working for us at UC Santa Barbara. He is beta-releasing BASH, the `Bourne Again SHell' which is the GNU version of sh that incorporates extensions found in the Korn and C shells. Jay Fenlason is writing the GNU spreadsheet program Oleo, and maintaining the GNU assembler, tar and sed. Jay also takes care of our backups and creating distribution tapes. Diane Barlow Close, our first full-time technical writer, is writing the documentation for all of the small Unix utilities that have been completed for us, while living in San Diego, CA.

Opus Goldstein is our jack-of-all-trades office staff. If you call our office, she is the one who answers. She fills the orders, and handles the day-to-day operations of the Foundation. Robert Chassell is our Treasurer. Besides dealing with foundation issues not related to programming, he is working on an elementary introduction to programming in Emacs Lisp.

Richard Stallman continues as a volunteer to do countless tasks, including refining the C compiler, GNU Emacs, etc. and their documentation. Finally, volunteer Len Tower continues as our electronic JOAT (jack-of-all-trades), handling mailing lists, information requests, system mothering, etc.


GNU's Bulletin

Copyright (C) 1989 Free Software Foundation, Inc.

Written by: Joseph Arceneaux, Robert Chassell, John Gilmore,
Leonard H. Tower Jr., and Richard Stallman

Illustrations: Etienne Suvasa

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?

The Free Software Foundation is dedicated to eliminating restrictions on copying, redistribution, understanding and modification of computer programs. We do this by promoting the development and use of free software in all areas of computer use. Specifically, we are putting together a complete integrated software system called "GNU" (GNU's Not Unix) that will be upward compatible with Unix. Some large parts of this system are already working and we are distributing them now.

The word "free" in our name refers to two specific freedoms: first, the freedom to copy a program and give it away to your friends and co-workers; second, the freedom to change a program as you wish, by having full access to source code. Furthermore, you can study the source and learn how such programs are written. You may then be able to port it, improve it, and share your changes with others.

Other organizations distribute whatever free software happens to be available. By contrast, FSF concentrates on development of new free software, building toward a GNU system complete enough to eliminate the need to purchase a proprietary system.

Besides developing GNU, the Foundation has secondary functions: producing tapes and printed manuals of GNU software, carrying out distribution, and accepting gifts to support GNU development. We are tax exempt; you can deduct donations to us on your tax returns. Our development effort is funded partly from donations and partly from distribution fees. Note that the distribution fees purchase just the service of distribution: you never have to pay anyone license fees to use GNU software, and you always have the freedom to make your copy from a friend's computer at no charge (provided your friend is willing).

The Foundation also maintains a Service Directory: a list of people who offer service for pay to users of GNU programs and systems. Service can mean answering questions for new users, customizing programs, porting to new systems, or anything else. Contact us if you want to be listed.

After we create our programs, we continually update and improve them. We release between 2 and 20 updates a year for each program. Doing this while developing new programs takes a lot of work, so any donations of pertinent source code and documentation, machines, labor or money are always appreciated.

The board of the Foundation is: Richard Stallman, President; Robert Chassell, Treasurer; Gerald J. Sussman, Harold Abelson and Leonard H. Tower Jr., Directors.

What Is Copyleft?

In the section entitled "What Is the Free Software Foundation," we state that "you never have to pay anyone license fees to use GNU software, and you always have the freedom to make your copy from a friend's computer at no charge." What exactly do we mean by this, and how do we make sure that it stays true?

The simplest way to make a program free is to put it in the public domain. Then people who get it from sharers can share it with others. But bad citizens can also do what they like to do: sell binary-only versions under typical don't-share-with-your-neighbor licenses. They would thus enjoy the benefits of the freeness of the original program while withholding these benefits from the users. It could easily come about that most users get the program this way, and our goal of making the program free for all users would have been undermined.

To prevent this from happening, we don't normally place GNU programs in the public domain. Instead, we protect them by what we call copylefts. A copyleft is a legal instrument that makes everybody free to copy a program as long as the person getting the copy gets with it the freedom to distribute further copies, and the freedom to modify their copy (which means that they must get access to the source code). Typical software companies use copyrights to take away these freedoms; now we software sharers use copylefts to preserve these freedoms.

The copyleft used by the GNU project is made from a combination of a copyright notice and the GNU General Public License. The copyright notice is the usual kind. The General Public License is a copying license which basically says that you have the freedoms we want you to have and that you can't take these freedoms away from anyone else. (The actual document consists of several pages of rather complicated legalbol that our lawyer said we needed.) The complete license is included in all GNU source code distributions and many manuals, and we will send you a printed copy on request.

Recently the Foundation made a dramatic change in the General Public License. The terms for copying remain unchanged, but the structure of the license is different, and it is now easier to copyleft programs. The License is now essentially a subroutine, and programs need only state that the General Public License applies to them. Specifics on using the License now accompany it, so refer there for details.

"As we enjoy great advantages from the inventions of others, we should be glad of an opportunity to serve others by any invention of ours"

--Benjamin Franklin

GNUs Flashes

Programming Freedom Activism

by Richard Stallman

"To benefit by the discoveries of his fellowmen is thus not only a natural right, it is also the natural duty which every man owes to himself and to society; and the mutual, universal progress thence resulting is the fulfillment of the earthy destiny of the human race."

Robinson, "Treatise on the Law of Patents."

Interface Copyright Battle Gaining Speed

The battle against user interface copyrighting is gathering momentum. GNU founder Richard Stallman joined MIT professors Gerald J. Sussman and Marvin Minsky in placing an ad in The Tech, MIT's student newspaper, warning of the harm that such monopolies could do to computer users and the computer industry. Here is the text of the ad:


Apple and Lotus are trying to create a new form of legal monopoly: a copyright on a class of user interfaces. These monopolies would cause serious problems for users and developers of computer software and systems.

Until two years ago, the law seemed clear: no one could restrict others from using a user interface; programmers were free to implement any interface they chose. Imitating interfaces, sometimes with changes, was standard practice in the computer field. The interfaces we know evolved gradually in this way; for example, the Macintosh user interface was developed over fifteen years at Stanford, SRI, Xerox and other places. Hundreds of students and researchers contributed to this effort, and no one has a right to own it all now.

Most computer companies, and nearly all computer users, are happy with this state of affairs. Lotus and Apple say it does not offer "enough incentive" to develop their products, but they must have considered it "enough" when they made their decision to do so. It seems they are not satisfied with the opportunity to continue to compete in the marketplace--not even with a head start.

If Lotus and Apple are permitted to make law through the courts, the precedent will hobble the software industry:

Express your opinion! Reconsider your plans! You can make a difference.


Reporters from the Boston Globe and Computer Reseller News saw the ad and then published articles in their papers. Followups to the Globe article then appeared in Computerworld and InfoWorld. The InfoWorld article was seen by a public relations agent who is donating time to help fight the user interface copyright. Additionally, several lawyers have asked for our help to find useful expert witnesses.

On Wednesday, May 24th the League for Programming Freedom picketed Lotus Development Corporation in Cambridge. Despite a heavy threat of rain, some 200 people showed up for the demonstration carrying signs and handing out flyers. Attendees included Bryan S. Kocher, President of the ACM, and Patrick Winston, head of MIT's AI Lab. The protest was led by FSF founder Richard Stallman.

If you would like to help fight for the freedom to write programs, you can do so by joining and working for the League for Programming Freedom. Since the League is still being organized, it does not have an address of its own. For the moment, you may phone or write to the League in care of the Free Software Foundation. Note, however, that the League will be an entirely separate organization from the Foundation with different agendas and personnel. The League will be exclusively devoted to fighting monopolistic attempts to limit the freedom of programmers to develop software.

Dangerous Legislation Proposed

Legislation has been proposed by Senator Orrin Hatch to prohibit the lending and rental of software by anyone, including private individuals. Similar legislation has been considered for musical recordings. Such legislation would be an aggressive attack on the traditional freedom to borrow and lend. Libraries could eventually be forced into oblivion if they begin limiting their contents to media which become obsolete.

Hatch and other supporters of this bill reason that software publishers are losing much money because people only borrow the software to make copies. Libraries that lend software say this is untrue, but even if it were, this would be insufficient reason for such an attack on our liberties. There is essentially no resistance on Capitol Hill to this legislation; the software publishers have been very outspoken in their position, but there has been little or no effort made to explain the interests of users.

The only resistance to this proposal has been from the American Library Association, who have obtained language in the bill which would exempt libraries from this legislation for a three year test period. It seems likely, however, that software publishers will only continue complaining about "lost" profits and at the end of the test period even libraries will be prohibited from lending software.

Regaining these rights will be much more difficult than making an effort to preserve them now. Please help alarm people about this problem. Write to Senator Hatch and Representative Dennis DeConcini as well as your own legislators and ask them to vote against bill S.198, the Computer Software Rental Amendments Act. A sufficient address is:

You can also phone senators and representatives at (202) 225-3121, or look in your phone directory for their local offices.

Common Knowledge's Universal Index

There is also an international group called Common Knowledge working to compile public domain, copyright free and machine-readable information. The group, consisting of journalists, scientists, librarians and others, is amassing a database of non-copyrighted information which they call the "Universal Index". They are doing this to provide an alternative to the information merchants, who are increasingly successful at reducing the amount of material available to traditional libraries. Their address is:

Common Knowledge, Jefferson, MD 21755, USA, Phone: (301) 695--3100

GNU Wish List

Wishes for this issue are for:

Porting BSD Unix Through the GCC

by John Gilmore

I have ported the University of California at Berkeley's latest Unix sources through the GNU C Compiler. In the process, I made Berkeley Unix more compatible with the draft ANSI C standard, made many programs less machine-dependent and less compiler-dependent, and tested GCC.

Berkeley Unix has set the standard for high powered Unix systems for many years, and continues to offer an improved alternative to AT&T Unix releases. However, Berkeley's C compiler is based on an old version of PCC, the Portable C Compiler from AT&T. By merging GCC into the Berkeley release, we provided ANSI C compatibility, better optimization, and improved compiler maintenance. The GNU project gained an important test case for GCC, and a strong collaborator in the free software movement.

The project was conceived by John Gilmore, and aided by Keith Bostic and Mike Karels of Berkeley, and Richard Stallman of FSF. I did most of the actual porting, while Keith and Mike provided machine resources, collaborated on major decisions, and arbitrated the style and content of the changes to Unix. Richard provided quick turnaround on compiler bug fixes and problem solving.

We are producing a Unix source tree which can be compiled by both the old and the new compilers. Rather than introducing new #ifdef's, we are rewriting the code so that it does not depend on the features of either compiler. Whenever we have to make a change, we are moving in the direction of ANSI C, POSIX compatibility, and machine independence.

We have used GCC releases 1.15 through 1.35. I did four complete "passes" over the Unix source tree; each involved running "make clean; make" on the entire source tree, and examining 500K to 800K of resulting output. I'd fix as many errors as I could, testing small parts of the source tree in the process, then merge my changes back into the master sources and rebuild the whole thing again.

The errors fell into two general categories: language changes in ANSI C, and non-portable code. In some cases it was hard to tell the difference.

The major ANSI C problem was the generation of character constants in the preprocessor. Excessive use of this now-obsolete feature in system header files caused us to change about 10 include files and about 45 source modules. Another preprocessor problem was that ANSI C uses a different syntax for token concatenation; we rewrote pieces of five modules to avoid having to concatenate tokens. ANSI C clarified the rules for the scope of names declared extern. We moved extern declarations around, or added global function declarations, in more than 38 files to handle this. Nine programs used new ANSI keywords, such as signed or const, as identifiers; we picked new identifiers. Eleven modules used typedefs as formal parameters names, or used unsigned with a typedef.

The worst non-portable construct we found in the Unix sources was the use of pointers with member names that aren't right for the pointer type. Fixing this problem caused a lot of work, because we had to figure out what each untyped or mistyped pointer was really being used for, then fix its type, and the references to it. We changed 5 modules due to this, and abandoned one program, efl, which would have required too much work to fix.

Another problem was caused by using CPP as a macro processor for assembler source. We circumvented this problem by making the assembler source acceptable to both old-CPP and ANSI CPP.

A major problem was asm constructs in C source. Some programs were written in C with intermixed assembler code, producing a mess when compiled with anything but the original compiler. Other routines, such as compress, drop in an asm here or there as an optimization. Still more modules, including the kernel, run a sed script over the assembler code generated by the C compiler, before assembling and linking it. We eliminated as many uses of asm as we could, and turned others into assembler language subroutines in `.s' files. Both the Pascal and Lisp interpreters used heavy hacking with sed scripts; each of these took several days to fix.

We fixed three programs that used multi-character constants; two were clearly errors. Fifteen programs tried to declare functions or variables, while omitting both the type and storage class; we added int to the declarations. In two modules this diagnosed errors caused by use of `;' where `,' was intended. Changes to the rules for parsing declarations made us fix five modules, and declaration bugs in six more were caught by GCC's improved error checking. Fifteen programs had miscellaneous pointer usage bugs fixed. GCC caught bugs in five modules caused by misunderstood sign extension. Five or ten other miscellaneous bugs were caught and fixed.

We are pleased with the results so far. Most of the Unix code compiled without problems, and the parts which we have executed are free from code generation bugs. The worst of the ANSI C changes only required roughly fifty modules to be changed, and there were only two problems of this magnitude. A total of twenty bugs in GCC have been found so far, and most of them are now fixed. We expected several times this many bugs; the compiler is in better shape than any of us expected.

Many minor problems and nit incompatibilities with ANSI C have been removed from the Unix sources. Far fewer user programs should require attention when doing a BSD Unix port now. However, we did not attempt to make Berkeley Unix fully ANSI C compliant. In particular, we kept preprocessor comments (#endif FOO) as well as machine-specific #define's (#ifdef vax). GCC supports these features even though ANSI C does not.

Unfinished work remains. The BSD kernel has not yet been ported to GCC, though it has been syntax-checked. Optimization of the kernel will cause problems until volatile declarations are used in all the right places. Pieces of the Portable C Compiler are still used inside lint, f77, and pc. Various sources still need their setjmp calls fixed so that only volatile variables depend on keeping their values after a longjmp.

Our changes will be available to recipients of Berkeley's next software distribution, whenever that is. We will also make diffs available to others involved in porting Unix to ANSI C.

Future projects include building a complete set of ANSI C and POSIX compatible include files and libraries (including function prototypes), and converting the existing sources to use them. An eventual goal is to produce a fully standard-conforming Unix system--not only in the interface provided to users, but with sources which will compile and run on any standard-conforming compiler and libraries.

The success of this collaboration between GNU and Berkeley has encouraged further cooperation. The GNU project is working to provide reimplementations of System V features that Berkeley Unix lacks, such as improved shells and make commands. In return, Berkeley has released much of its software to the public, eliminating the AT&T license requirement for programs that AT&T did not supply. A large set of "freed" BSD software is available by uucp or ftp from uunet.uu.net in the subdirectory `bsd-sources', as well as on the GNU Compiler tape and the UUNET tapes.

GNU Project Status Report

GNU Documentation

GNU documentation is distributed as Texinfo source files. Texinfo source yields both a typeset hardcopy and an on-line format, accessed by a menu-driven system.

To make the printed manual, the Texinfo source file is processed through the TeX typesetting program. To make the on-line documentation using GNU Emacs, the Texinfo source file is processed with the M-x texinfo-format-buffer command; the resulting Info file is installed in the `info' directory which you reach by typing C-h i.

The following manuals, provided with our software, are also available in hardcopy; see the order form on the inside back cover.

The Emacs Manual describes how to use GNU Emacs. It also explains advanced features, such as outline mode and regular expression search. The manual tells how to use the special modes for programming in languages such as C and Lisp, how to use the tags utility, and how to compile and correct code. It also describes how to make your own keybindings and make other elementary customizations.

This manual does not cover programming in Emacs Lisp. This topic will be handled in an introductory Emacs Lisp programming manual and an Emacs Lisp reference manual. The reference manual should be out this summer. Watch for the announcement.

The Texinfo Manual describes how to write documents in Texinfo source code. It describes the markup language used to create both an Info file and a printed document from the same source file: how to make tables, lists, chapters, nodes, indices and cross references. It also describes how to use Texinfo Mode in GNU Emacs and how to catch mistakes.

The Termcap Manual is often described as "Twice as much as you ever wanted to know about Termcap". It describes the format of the Termcap data base, the definitions of terminal capabilities and how to interrogate a terminal description. This manual is primarily for programmers.

The Bison Manual describes how to write a grammar description that Bison can convert into a C program that can parse that grammar. This manual assumes no prior knowledge of parser generators. It describes the concepts and then provides a series of increasingly complex examples before describing what goes on in considerable detail.

The GAWK Manual describes how to use the GNU implementation of AWK. It is written for someone who has never used AWK before, and describes all the features of this powerful string manipulating language.

The Make Manual describes the GNU Make utility, a program used to rebuild parts of other programs when and as needed. The manual tells how to write a makefile, which describes how to recompile the parts of your program and how they depend on each other.

The GDB Manual explains how to use the GNU DeBugger. It describes how to run your program under control of the debugger, how to examine and alter data within the program, and how to modify the flow of control within the program. It also explains how to use GDB through GNU Emacs, with auto-display of source lines.

GNU Software Available Now

We now offer three Unix software source distribution tapes, plus VMS tapes for GNU Emacs and GNU C that include sources and VMS executables. The first Unix tape (called the "Release" or "Emacs" tape) contains GNU Emacs as well as various other well-tested programs that we consider reliable. The second Unix tape (called the "Beta test" or "Compiler" tape) contains the GNU C compiler and related utilities, and other new programs that are less thoroughly tested. The third Unix tape (called the "X11" tape) contains the X11 distribution from the MIT X consortium. See the order form, on the inside back cover, for details about media, etc.

Contents of Release Tape

The software on this tape is considered to be fairly stable, but as always, we welcome your bug reports.

Contents of Beta Test Tape

The programs on this tape are all recent releases and can be considered to be at various stages of user testing. As always, we solicit your comments and bug reports. This tape is also known as the Compiler tape.

Contents of X11 Tape.

The X11 tape contains Version 11, Release 3 of the MIT X window system. X11 is more powerful than, but incompatible with, the no-longer-supported version 10. MIT no longer labels Version 11 `beta test' but is still releasing frequent patches and updates.

VMS Emacs and Compiler Tapes

We offer a VMS tape of the GNU Emacs editor, and a separate VMS tape containing the beta-test GNU C compiler. The VMS compiler tape also contains Bison (needed to compile GCC), GAS (needed to assemble GCC's output) and some library and include files. Both VMS tapes include executables that you can bootstrap from.

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 GNU software is to copy it from someone else who has it.

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 `/u/emacs/GETTING.GNU.SOFTWARE' on that host. Please note that the internet address of `prep' has changed to 18.71.0.38.

If you cannot get the software from a friend or over the net, or if you would like to contribute some funds to our efforts and receive the latest versions, the Free Software Foundation distributes tapes for a copying and distribution fee. See the order form on the inside back cover.

There are also third party groups that distribute our software: people and organizations that do not work with us, but have our software in other forms. For your convenience, some of them 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 providing for anonymous FTP:

scam.berkeley.edu, spam.istc.sri.com, bu-it.bu.edu,
wsmr-simtel20.army.mil (under `PD:<UNIX.GNU>'),
cc.utah.edu (VMS GNU Emacs), and uunet.uu.net.

Those on the SPAN network can ask rdss::corbet.

Information on how to obtain some GNU programs using UUCP is available via electronic mail from:

hao!scicom!qetzal!upba!ugn!nepa!denny, arnold@skeeve.UUCP,
uunet!hutch!barber, hqda-ai!merlin, acornrc!bob,
ames!killer!wisner, mit-eddie!bloom-beacon!ht!spt!gz,
sun!nosun!illian!darylm, or info@uunet.uu.net.

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

Information on getting floppy disks of GNU Emacs for the AT&T Unix PC (aka 3B1 or PC7300) is available from: brant@manta.pha.pa.us.

Thank GNUs

Thanks to our Anonymous Contributor, and thanks to Hewlett-Packard for their donations of a $100,000 each. Also, thanks to the Open Software Foundation for their donation of $25,000.

Many thanks to the following people for copying Sun cartridges: Barry Kleinman and Andre Mesarovic of Index Technology; George Brown; Devon McCullough and Nick Papadakis; Mark Nahabedian and Shaun Keller of Phoenix Technology; and finally thanks in advance to Mark Hannon of ICAD.

Thanks to all those mentioned in GNU Flashes and the GNU Project Status Report.

Thanks to the MIT Laboratory for Computer Science, and its director, Professor Michael Dertouzos. LCS has provided FSF with the loan of a Microvax for program development.

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

Thanks to Arnold Robbins and Dave Trueman for their work on GAWK and the GAWK manual.

Thanks to John Klensin of the INFOODS Project at MIT for use of the project's machine for making our VMS master tapes.

Thanks go out to all those who have lent us machines, including Brewster Kahle of Thinking Machines, Inc. for the Sun 4/110, K. Richard Magill for the AT&T Unix PC, CMU's Mach Project for the Sun 3/60, Intel Corp. for their 386 workstation, and SONY Corp. and Software Research Associates, Inc., both of Tokyo, for the SONY News workstations.

Thanks to all those who have contributed ports and extensions, as well as those who have contributed other source code, documentation, and good bug reports.

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.


                                                -------
                                               |       |
Free Software Foundation, Inc.                 | stamp |
675 Massachusetts Avenue                       |       |
Cambridge, MA  02139  USA                      | here  |
                                               |       |
                                                -------


Use rule at top of this page for page 1.