Free Software Ideology and the GNU Project: Current Status and Immediate Challenges.

Fees Income

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Donations

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Number of volunteers

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Number of employees

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Number of members

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Subsidiaries

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Own

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Tagline

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Web site

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

Liquidation date

Lua error in Module:Wikidata on line 170: attempt to index field "wikibase" (a nil value).

The current work of the GNU project includes software development, awareness raising, political campaigning, and distribution of new materials.

Project origins

When the project first started, they...

  • An asteroid is named after the GNU project - (9965) GNU.

see also

Write a review on "The GNU Project"

Notes

Links

  • (English) - official site of the GNU project

An excerpt characterizing the GNU Project

- Lies, murder, betrayal ... Don't you have such words? ..
- It was a long time ago ... no one remembers anymore. Only me. But we know what it was. This is embedded in our "ancient memory" to never forget. Have you come from where evil lives?
I nodded sadly. I was very sorry for my native Earth, and for the fact that life on it was so wildly imperfect that it made me ask such questions ... But, at the same time, I really wanted Evil to leave our House forever, because that I loved this house with all my heart, and very often dreamed that someday such a wonderful day would come when:
a person will smile with joy, knowing that people can only bring him good ...
when a lonely girl is not afraid to walk through the darkest street in the evening, not being afraid that someone will offend her...
when you can open your heart with joy, without fear that your best friend will betray you...
when it will be possible to leave something very expensive right on the street, not being afraid that if you turn away - and it will be immediately stolen ...
And I sincerely, with all my heart, believed that somewhere such a wonderful world really exists, where there is no evil and fear, but there is a simple joy of life and beauty ... That is why, following my naive dream, I used the slightest opportunity to to learn at least something about how it is possible to destroy this very same, so tenacious and so indestructible, our earthly Evil... And one more thing - so that it would never be ashamed to tell someone somewhere that I am a Human. ..
Of course, these were naive childhood dreams ... But then I was still just a child.
– My name is Atis, Svetlana Man. I live here from the very beginning, I have seen Evil... A lot of evil...
– And how did you get rid of him, wise Hatis?! Did someone help you? .. - I asked hopefully. - Can you help us? .. Give at least advice?
– We found the reason... And killed it. But your evil is beyond our control. It is different... Just like others and you. And not always someone else's good may be good for you. You must find your own reason. And destroy it, - he gently put his hand on my head and a wonderful peace flowed into me ... - Farewell, Human Svetlana ... You will find the answer to your question. Rest to you...
I stood deep in thought, and did not pay attention to the fact that the reality surrounding me had changed a long time ago, and instead of a strange, transparent city, we now “floated” on dense purple “water” on some unusual, flat and transparent device, which there were no handles, no oars - nothing at all, as if we were standing on a large, thin, moving transparent glass. Although no movement or pitching was felt at all. It glided over the surface surprisingly smoothly and calmly, making you forget that it was moving at all ...
– What is it?.. Where are we sailing? I asked in surprise.
“To pick up your little friend,” Veya replied calmly.
- But how?!. She can't...
- Will be able. She has the same crystal as yours, was the answer. - We will meet her at the "bridge", - and without explaining anything else, she soon stopped our strange "boat".
Now we were already at the foot of some kind of brilliant “polished” black as night wall, which was sharply different from everything bright and sparkling around, and seemed artificially created and alien. Suddenly, the wall “parted”, as if in that place it consisted of dense fog, and in a golden “cocoon” appeared ... Stella. Fresh and healthy, as if she had just gone for a pleasant walk... And, of course, she was wildly pleased with what was happening... When she saw me, her pretty face beamed happily and, out of habit, she immediately chattered:
– Are you here too?!... Oh, how good!!! And I was so worried! .. So worried! .. I thought something must have happened to you. But how did you get here? .. - the baby stared dumbfounded at me.

MAIN STANDARDS

UNIX's supplied by computer manufacturers

The car Operating system "Original"
Sun 1,2,10, ... SunOS 4.1.2 BSD 4.3
Sun 10,20,1000 SunOS 5.5 SVR4.0
IBM RS/6000 AIX SV 3.2
HP Apollo 900 HP/UX 10 BSD 4.2 & SV 3.2
Sequent Dynix SW 4.0
Motorola 922 SVR4/88 SVR4.0
Besta-88 bestix SV 3.1
DEC Ultrix BSD 4.2
DEC Alpha AXP OSF/1 BSD 4.3
SGCS Silicon Graphic IRIX 6.0

By choosing a platform, we automatically get "its own" UNIX with it. Perhaps, from the point of view of convenience and integrity of the user and administrator environment, the most pleasant of them is AIX. And the most common one is Solaris 2.5 (of course).

It was the advent of commercial implementations of Unix that led to the so-called Unix wars. Each of the firms, in an effort to achieve superiority in the market, included in its system some features, its own improvements and improvements, sometimes even with the direct goal of isolating its system from others on the market. Firms-developers in their efforts to gain an advantage over competitors made changes even in application programming interface(API- Applications Programmer "s Interface), - a specification of a set of functions that software developers must comply with to make their programs compatible with the operating system. This further increased the incompatibility of different versions of Unix and led to incompatibility of software developed by different (including independent) suppliers.

But a much worse consequence of the wars between different versions of Unix was that the free exchange of source code that had helped Unix so rapidly improve in the early stages of its development ceased. Knowing no other model for profiting from software other than keeping it secret and having complete control over the development of a commercial product, AT&T strictly forbade the distribution of source codes. Few people were attracted to the threat of legal action for illegally distributing Unix tapes. The flow of new ideas from universities has dried up.

To overcome this problem, several attempts were made to standardize Unix.

The first serious effort to standardize the versions of the API (programming interface) developed for System V and Berkeley was made in 1983 by an initiative group called /usr/group. However, as the number of versions of the operating system grew, the effectiveness of the standard decreased, and a year later, in 1985, the POSIX (Portable Operating System Interface for Computing Environment) standard was created.



In 1988, the POSIX 1003.1-1988 standard was developed, which defined the application programming interface. This standard has found wide application in many operating systems, including non-UNIX architectures. Two years later, the standard was adopted as the IEEE (Institute of Electrical and Electronic Engineers, still existing) IEEE 1003.1-1990 standard. The standard defines only the interface, and e specific organization, so it does not distinguish between system calls and library functions, calling all API elements just functions.

All later Unix standards include POSIX, and all subsequent versions of Unix adhere to this standard. The only big addition that later appeared in the Unix kernel was sockets, which came from BSD.

A non-profit organization - the X / Open consortium (later Open Group), created in 1984 by a number of European companies, undertook the development of a common set of operating system interfaces, agreed between various manufacturers, and the creation of truly open systems for which the cost of application portability would be minimal .

In 1992, a document known as the X/OpenPortability Guide version 3 (XPG3) appeared, which included POSIX 1003.1-1988 and the standard for the X Windows System graphics system developed at the Massachusetts Institute of Technology (USA). In 1994 - XPG4.2.

In 1996, the union of X / Open and OSF led to the creation of The Open Group consortium, which continued developments in the field of open systems, for example, further development of the Common Desktop Environment user interface, interfaces for the Distributed Computing Environment - DCE, etc.

(American National Standards Institute)

In 1989, the American National Standards Institute approved the X3.159-1989 standard for the C programming language. The standard defines the syntax, semantics, and content of the standard library.

GNU is an association of developers who create free software of all sorts.

GNU is a project that has created a lot of free software as part of an open source strategy.

At the same time, these programs can do everything from working with files to word processing, and the gcc compiler (GNU C) is one of the most reliable and efficient compilers for UNIX. This makes it possible to equip almost any UNIX-like operating system with free software.

What is GNU/Linux?

Since Linux is just a kernel, this kind of equipment is essential. The kernel is responsible for working with memory, disks, internal devices, but, for example, it does not have a text editor. But it can run other programs. Therefore, the addition of a free kernel with a set of free programs looks very natural. The result is the GNU/Linux tandem.

"The abbreviation GNU stands for "GNU is not UNIX" (GNU - Not UNIX). The main idea behind the development of the GNU system is its complete difference from UNIX. UNIX has always been and remains proprietary software, meaning it deprives its users of the freedom to collaborate as well as control over their computers. In order to be a community that freely uses its own computers, we needed a free operating system. We didn't have enough money to buy and make free any of the existing systems, but we had enough knowledge and skills to create a new one. The creation of GNU was a massive undertaking. We made it in the name of our freedom, and yours too."

In 1985, R. Stallman wrote his famous GNU Manifesto (it was published in the March 1985 issue of Dr. Dobb's Journal) and founded the Free Software Foundation (FSF) - a charitable foundation for the development of free software. distributing the Emacs tapes, and later on distributing other free software (both from the GNU Project and outside it) and selling their manuals, which provided funds for the development of the GNU project.The FSF accepted donations, but most of the revenue has always come from selling copies of free software and related services.

The development of free software was a very important step, but R.Stallman's even greater merit should be recognized as the creation of the GNU General Public License (GPL). Different authors translate this name into Russian in different ways - the Universal Public License, the Generalized Public License, etc. But it is considered that Only the English version of this license is valid. The main idea of ​​the GPL is that the user must have the following four rights (or four freedoms):

The right to run the program for any purpose (freedom 0)

· The right to study the structure of the program and adapt it to your needs (freedom 1), which involves access to the source code of the program.

· The right to distribute the program while being able to help others (freedom 2).

· The right to improve the program and publish improvements for the benefit of the entire community (freedom 3), which also involves access to the source code of the program.

You may use, copy, modify, modify, transfer, or sell modified (or unmodified) versions to others in any way you like, provided that the result of such processing is also distributed under the GPL license. The last condition is the most important and defining in this license. It ensures that the results of free software developers' efforts remain open source and do not become part of any conventionally licensed product. It also distinguishes free software from free software. One of the requirements of this license is that when you sell software under the GPL, you must make the source code of that software available to anyone who wants to have access to it. In the words of the creators of the FSF, the GPL "makes software free and ensures that it stays free."

The main purpose of the GPL is to protect free software from "privatization". But it should be noted that it is designed in such a way as to allow all "fair" ways of making money from free software. This is a very significant point that needs special attention. When first introduced to the GPL, it may be misunderstood that this license generally prohibits any way to make money from the software or its development. In fact, the GPL in particular, and the FSF in general, directly encourage the business associated with the provision of related services - training, consulting, and commercial software replication. This makes it possible to attract to cooperation both corporations and people for whom material interest is more important than moral incentives.

Originally published in the book open sources. Richard Stallman was , but contributed this article so that the ideas of the free software movement would not be entirely absent from that book.

The first software-sharing community

When I started working at the MIT Artificial Intelligence Lab in 1971, I became part of a software-sharing community that had existed for many years. Sharing of software was not limited to our particular community; it is as old as computers, just as sharing of recipes is as old as cooking. But we did it more than most.

The AI ​​Lab used a timesharing operating system called ITS (the Incompatible Timesharing System) that the lab's staff hackers (1) had designed and written in assembler language for the Digital PDP -10, one of the large computers of the era. As a member of this community, an AI Lab staff system hacker, my job was to improve this system.

We did not call our software “free software”, because that term did not yet exist; but that is what it was. Whenever people from another university or a company wanted to port and use a program, we gladly let them. If you saw someone using an unfamiliar and interesting program, you could always ask to see the source code, so that you could read it, change it, or cannibalize parts of it to make a new program.

(1) The use of “hacker” to mean “security breaker” is a confusion on the part of the mass media. We hackers refuse to recognize that meaning, and continue using the word to mean someone who loves to program, someone who enjoys playful cleverness, or the combination of the two. See my article, On Hacking.

The collapse of the community

The situation changed drastically in the early 1980s when Digital discontinued the PDP-10 series. Its architecture, elegant and powerful in the 60s, could not naturally extend to the larger address spaces that were becoming feasible in the 80s. This meant that nearly all of the programs composing ITS were obsolete.

The AI ​​Lab hacker community had already collapsed, not long before. In 1981, the spin-off company Symbolics had hired away nearly all of the hackers from the AI ​​Lab, and the depopulated community was unable to maintain itself. (The book Hackers, by Steve Levy, describes these events, as well as giving a clear picture of this community in its prime.) When the AI ​​Lab bought a new PDP-10 in 1982, its administrators decided to use Digital's nonfree timesharing system instead of ITS.

The modern computers of the era, such as the VAX or the 68020, had their own operating systems, but none of them were free software: you had to sign a nondisclosure agreement even to get an executable copy.

This meant that the first step in using a computer was to promise not to help your neighbor. A cooperating community was forbidden. The rule made by the owners of proprietary software was, “If you share with your neighbor, you are a pirate. If you want any changes, beg us to make them.”

The idea that the proprietary software social system—the system that says you are not allowed to share or change software—is antisocial, that it is unethical, that it is simply wrong, may come as a surprise to some readers. But what else could we say about a system based on dividing the public and keeping users helpless? Readers who find the idea surprising may have taken the proprietary software social system as a given, or judged it on the terms suggested by proprietary software businesses. Software publishers have worked long and hard to convince people that there is only one way to look at the issue.

When software publishers talk about “enforcing” their “rights” or “stopping piracy”, what they actually say is secondary. The real message of these statements is in the unstated assumptions they take for granted, which the public is asked to accept without examination. Let's therefore examine them.

One assumption is that software companies have an unquestionable natural right to own software and thus have power over all its users. (If this were a natural right, then no matter how much harm it does to the public, we could not object.) Interestingly, the US Constitution and legal tradition reject this view; copyright is not a natural right, but an artificial government-imposed monopoly that limits the users" natural right to copy.

Another unstated assumption is that the only important thing about software is what jobs it allows you to do—that we computer users should not care what kind of society we are allowed to have.

A third assumption is that we would have no usable software (or would never have a program to do this or that particular job) if we did not offer a company power over the users of the program. This assumption may have seemed plausible, before the free software movement demonstrated that we can make plenty of useful software without putting chains on it.

If we decline to accept these assumptions, and judge these issues based on ordinary commonsense morality while placing the users first, we arrive at very different conclusions. Computer users should be free to modify programs to fit their needs, and free to share software, because helping other people is the basis of society.

A stark moral choice

With my community gone, to continue as before was impossible. Instead, I faced a stark moral choice.

The easy choice was to join the proprietary software world, signing nondisclosure agreements and promising not to help my fellow hacker. Most likely I would also be developing software that was released under nondisclosure agreements, thus adding to the pressure on other people to betray their fellows too.

I could have made money this way, and perhaps amused myself writing code. But I knew that at the end of my career, I would look back on years of building walls to divide people, and feel I had spent my life making the world a worse place.

I had already experienced being on the receiving end of a nondisclosure agreement, when someone refused to give me and the MIT AI Lab the source code for the control program for our printer. (The lack of certain features in this program made use of the printer extremely frustrating.) So I could not tell myself that nondisclosure agreements were innocent. I was very angry when he refused to share with us; I could not turn around and do the same thing to everyone else.

Another choice, straightforward but unpleasant, was to leave the computer field. That way my skills would not be misused, but they would still be wasted. I would not be culpable for dividing and restricting computer users, but it would happen nonetheless.

So I looked for a way that a programmer could do something for the good. I asked myself, was there a program or programs that I could write, so as to make a community possible once again?

The answer was clear: what was needed first was an operating system. That is the crucial software for starting to use a computer. With an operating system, you can do many things; without one, you cannot run the computer at all. With a free operating system, we could again have a community of cooperating hackers—and invite anyone to join. And anyone would be able to use a computer without starting out by conspiring to deprive his or her friends.

As an operating system developer, I had the right skills for this job. So even though I could not take success for granted, I realized that I was elected to do the job. I chose to make the system compatible with Unix so that it would be portable, and so that Unix users could easily switch to it. The name GNU was chosen, following a hacker tradition, as a recursive acronym for “GNU"s Not Unix.” It is pronounced as one syllable with a hard g.

An operating system does not mean just a kernel, barely enough to run other programs. In the 1970s, every operating system worthy of the name included command processors, assemblers, compilers, interpreters, debuggers, text editors, mailers, and much more. ITS had them, Multics had them, VMS had them, and Unix had them. The GNU operating system would include them too.

Later I heard these words, attributed to Hillel (1):

If I am not for myself, who will be for me?
If I am only for myself, what am I?
If not now, when?

The decision to start the GNU Project was based on a similar spirit.

(1) As an Atheist, I don't follow any religious leaders, but I sometimes find I admire something one of them has said.

Free as in freedom

The term “free software” is sometimes misunderstood—it has nothing to do with price. It is about freedom. Here, therefore, is the definition of free software.

A program is free software, for you, a particular user, if:

  • You have the freedom to run the program as you wish, for any purpose.
  • You have the freedom to modify the program to suit your needs. (To make this freedom effective in practice, you must have access to the source code, since making changes in a program without having the source code is exceedingly difficult.)
  • You have the freedom to redistribute copies, either gratis or for a fee.
  • You have the freedom to distribute modified versions of the program, so that the community can benefit from your improvements.

Since “free” refers to freedom, not to price, there is no contradiction between selling copies and free software. In fact, the freedom to sell copies is crucial: collections of free software sold on CD-ROMs are important for the community, and selling them is an important way to raise funds for free software development. Therefore, a program which people are not free to include on these collections is not free software.

Because of the ambiguity of “free”, people have long looked for alternatives, but no one has found a better term. The English language has more words and nuances than any other, but it lacks a simple, unambiguous, word that means “free”, as in freedom—“unfettered” being the word that comes closest in meaning. Such alternatives as “liberated”, “freedom”, and “open” have either the wrong meaning or some other disadvantage.

GNU software and the GNU system

Developing a whole system is a very large project. To bring it into reach, I decided to adapt and use existing pieces of free software wherever that was possible. For example, I decided at the very beginning to use TeX as the principal text formatter; a few years later, I decided to use the X Window System rather than writing another window system for GNU.

Because of these decisions, and others like them, the GNU system is not the same as the collection of all GNU software. The GNU system includes programs that are not GNU software, programs that were developed by other people and projects for their own purposes, but which we can use because they are free software.

Commencing the project

In January 1984 I quit my job at MIT and began writing GNU software. Leaving MIT was necessary so that MIT would not be able to interfere with distributing GNU as free software. If I had remained on the staff, MIT could have claimed to own the work, and could have imposed their own distribution terms, or even turned the work into a proprietary software package. I had no intention of doing a large amount of work only to see it become useless for its intended purpose: creating a new software-sharing community.

However, Professor Winston, then the head of the MIT AI Lab, kindly invited me to keep using the lab's facilities.

The first steps

Shortly before beginning the GNU Project, I heard about the Free University Compiler Kit, also known as VUCK. (The Dutch word for “free” is written with a v.) This was a compiler designed to handle multiple languages, including C and Pascal, and to support multiple target machines. I wrote to its author asking if GNU could use it.

He responded derisively, stating that the university was free but the compiler was not. I therefore decided that my first program for the GNU Project would be a multilanguage, multiplatform compiler.

Hoping to avoid the need to write the whole compiler myself, I obtained the source code for the Pastel compiler, which was a multiplatform compiler developed at Lawrence Livermore Lab. It supported, and was written in, an extended version of Pascal, designed to be a system-programming language. I added a C front end, and began porting it to the Motorola 68000 computer. But I had to give that up when I discovered that the compiler needed many megabytes of stack space, and the available 68000 Unix system would only allow 64k.

I then realized that the Pastel compiler functioned by parsing the entire input file into a syntax tree, converting the whole syntax tree into a chain of “instructions”, and then generating the whole output file, without ever freeing any storage. At this point, I concluded I would have to write a new compiler from scratch. That new compiler is now known as GCC ; none of the Pastel compiler is used in it, but I managed to adapt and use the C front end that I had written. But that was some years later; first, I worked on GNU Emacs.

GNU Emacs

I began work on GNU Emacs in September 1984, and in early 1985 it was beginning to be usable. This enabled me to begin using Unix systems to do editing; having no interest in learning to use vi or ed, I had done my editing on other kinds of machines until then.

At this point, people began wanting to use GNU Emacs, which raised the question of how to distribute it. Of course, I put it on the anonymous ftp server on the MIT computer that I used. (This computer, prep.ai.mit.edu, thus became the principal GNU ftp distribution site; when it was decommissioned a few years later, we transferred the name to our new ftp server.) But at that time, many of the interested people were not on the Internet and could not get a copy by ftp. So the question was, what would I say to them?

I could have said, “Find a friend who is on the net and who will make a copy for you.” Or I could have done what I did with the original PDP-10 Emacs: tell them, “Mail me a tape and a SASE , and I will mail it back with Emacs on it.” But I had no job, and I was looking for ways to make money from free software. So I announced that I would mail a tape to whoever wanted one, for a fee of $150. In this way, I started a free software distribution business, the precursor of the companies that today distribute entire GNU/Linux system distributions.

Is a program free for every user?

If a program is free software when it leaves the hands of its author, this does not necessarily mean it will be free software for everyone who has a copy of it. For example, public domain software (software that is not copyrighted) is free software; but anyone can make a proprietary modified version of it. Likewise, many free programs are copyrighted but distributed under simple permissive licenses which allow proprietary modified versions.

The paradigmatic example of this problem is the X Window System. Developed at MIT, and released as free software with a permissive license, it was soon adopted by various computer companies. They added X to their proprietary Unix systems, in binary form only, and covered by the same nondisclosure agreement. These copies of X were no more free software than Unix was.

The developers of the X Window System did not consider this a problem—they expected and intended this to happen. Their goal was not freedom, just “success”, defined as “having many users.” They did not care whether these users had freedom, only that they should be numerous.

This led to a paradoxical situation where two different ways of counting the amount of freedom gave different answers to the question, “Is this program free?” If you judged based on the freedom provided by the distribution terms of the MIT release, you would say that X was free software. But if you measured the freedom of the average user of X, you would have to say it was proprietary software. Most X users were running the proprietary versions that came with Unix systems, not the free version.

Copyleft and the GNU GPL

The goal of GNU was to give users freedom, not just to be popular. So we needed to use distribution terms that would prevent GNU software from being turned into proprietary software. The method we use is called “copyleft”.(1)

Copyleft uses copyright law, but flips it over to serve the opposite of its usual purpose: instead of a means for restricting a program, it becomes a means for keeping the program free.

The central idea of ​​copyleft is that we give everyone permission to run the program, copy the program, modify the program, and distribute modified versions—but not permission to add restrictions of their own. Thus, the crucial freedoms that define “free software” are guaranteed to everyone who has a copy; they become inalienable rights.

For an effective copyleft, modified versions must also be free. This ensures that work based on ours becomes available to our community if it is published. When programmers who have jobs as programmers volunteer to improve GNU software, it is copyleft that prevents their employers from saying, “You can"t share those changes, because we are going to use them to make our proprietary version of the program.”

The requirement that changes must be free is essential if we want to ensure freedom for every user of the program. The companies that privatized the X Window System usually made some changes to port it to their systems and hardware. These changes were small compared with the great extent of X, but they were not trivial. If making changes were an excuse to deny the users freedom, it would be easy for anyone to take advantage of the excuse.

A related issue concerns combining a free program with nonfree code. Such a combination would inevitably be nonfree; whichever freedoms are lacking for the nonfree part would be lacking for the whole as well. To permit such combinations would open a hole big enough to sink a ship. Therefore, a crucial requirement for copyleft is to plug this hole: anything added to or combined with a copylefted program must be such that the larger combined version is also free and copylefted.

The specific implementation of copyleft that we use for most GNU software is the GNU General Public License, or GNU GPL for short. We have other kinds of copyleft that are used in specific circumstances. GNU manuals are copylefted also, but use a much simpler kind of copyleft, because the complexity of the GNU GPL is not necessary for manuals.(2)

(1) In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me a letter. On the envelope he had written several amusing sayings, including this one: “Copyleft—all rights reversed.” I used the word “copyleft” to name the distribution concept I was developing at the time.

Free Software Foundation employees have written and maintained a number of GNU software packages. Two notable ones are the C library and the shell. The GNU C library is what every program running on a GNU/Linux system uses to communicate with Linux. It was developed by a member of the Free Software Foundation staff, Roland McGrath. The shell used on most GNU/Linux systems is BASH , the Bourne Again Shell(1), which was developed by FSF employee Brian Fox.

We funded development of these programs because the GNU Project was not just about tools or a development environment. Our goal was a complete operating system, and these programs were needed for that goal.

(1) “Bourne Again Shell” is a play on the name “Bourne Shell”, which was the usual shell on Unix.

Free software support

The free software philosophy rejects a specific widespread business practice, but it is not against business. When businesses respect the users" freedom, we wish them success.

Selling copies of Emacs demonstrates one kind of free software business. When the FSF took over that business, I needed another way to make a living. I found it in selling services relating to the free software I had developed. This included teaching, for subjects such as how to program GNU Emacs and how to customize GCC, and software development, mostly porting GCC to new platforms.

Today each of these kinds of free software business is practiced by a number of corporations. Some distribute free software collections on CD-ROM; others sell support at levels ranging from answering user questions, to fixing bugs, to adding major new features. We are even beginning to see free software companies based on launching new free software products.

Watch out, though—a number of companies that associate themselves with the term “open source” actually base their business on nonfree software that works with free software. These are not free software companies, they are proprietary software companies whose products tempt users away from freedom. They call these programs “value-added packages”, which shows the values ​​they would like us to adopt: convenience above freedom. If we value freedom more, we should call them “freedom-subtracted” packages.

technical goals

The principal goal of GNU is to be free software. Even if GNU had no technical advantage over Unix, it would have a social advantage, allowing users to cooperate, and an ethical advantage, respecting the user's freedom.

But it was natural to apply the known standards of good practice to the work—for example, dynamically allocating data structures to avoid arbitrary fixed size limits, and handling all the possible 8-bit codes wherever that made sense.

In addition, we rejected the Unix focus on small memory size, by deciding not to support 16-bit machines (it was clear that 32-bit machines would be the norm by the time the GNU system was finished), and to make no effort to reduce memory usage unless it exceeded a megabyte. In programs for which handling very large files was not crucial, we encouraged programmers to read an entire input file into core, then scan its contents without having to worry about I/O.

These decisions enabled many GNU programs to surpass their Unix counterparts in reliability and speed.

donated computers

As the GNU Project's reputation grew, people began offering to donate machines running Unix to the project. These were very useful, because the easiest way to develop components of GNU was to do it on a Unix system, and replace the components of that system one by one. But they raised an ethical issue: whether it was right for us to have a copy of Unix at all.

Unix was (and is) proprietary software, and the GNU Project's philosophy said that we should not use proprietary software. But, applying the same reasoning that leads to the conclusion that violence in self defense is justified, I concluded that it was legitimate to use a proprietary package when that was crucial for developing a free replacement that would help others stop using the proprietary package.

But, even if this was a justifiable evil, it was still an evil. Today we no longer have any copies of Unix, because we have replaced them with free operating systems. If we could not replace a machine's operating system with a free one, we replaced the machine instead.

The GNU Task List

As the GNU Project proceeded, and increasing numbers of system components were found or developed, eventually it became useful to make a list of the remaining gaps. We used it to recruit developers to write the missing pieces. This list became known as the GNU Task List. In addition to missing Unix components, we listed various other useful software and documentation projects that, we thought, a truly complete system ought to have.

Today (1), hardly any Unix components are left in the GNU Task List—those jobs had been done, aside from a few inessential ones. But the list is full of projects that some might call “applications”. Any program that appeals to more than a narrow class of users would be a useful thing to add to an operating system.

Even games are included in the task list—and have been since the beginning. Unix included games, so naturally GNU should too. But compatibility was not an issue for games, so we did not follow the list of games that Unix had. Instead, we listed a spectrum of different kinds of games that users might like.

(1) That was written in 1998. In 2009 we no longer maintain a long task list. The community develops free software so fast that we can't even keep track of it all. Instead, we have a list of High Priority Projects, a much shorter list of projects we really want to encourage people to write.

The GNU Library GPL

The GNU C library uses a special kind of copyleft called the GNU Library General Public License(1), which gives permission to link proprietary software with the library. Why make this exception?

It is not a matter of principle; there is no principle that says proprietary software products are entitled to include our code. (Why contribute to a project predicated on refusing to share with us?) Using the LGPL for the C library, or for any library, is a matter of strategy.

The C library does a generic job; every proprietary system or compiler comes with a C library. Therefore, to make our C library available only to free software would not have given free software any advantage—it would only have discouraged use of our library.

One system is an exception to this: on the GNU system (and this includes GNU/Linux), the GNU C library is the only C library. So the distribution terms of the GNU C library determine whether it is possible to compile a proprietary program for the GNU system. There is no ethical reason to allow proprietary applications on the GNU system, but strategically it seems that disallowing them would do more to discourage use of the GNU system than to encourage development of free applications. That is why using the Library GPL is a good strategy for the C library.

For other libraries, the strategic decision needs to be considered on a case-by-case basis. When a library does a special job that can help write certain kinds of programs, then releasing it under the GPL, limiting it to free programs only, is a way of helping other free software developers, giving them an advantage against proprietary software.

Consider GNU Readline, a library that was developed to provide command-line editing for BASH. Readline is released under the ordinary GNU GPL, not the Library GPL. This probably does reduce the amount of Readline is used, but that is no loss for us. Meanwhile, at least one useful application has been made free software specifically so it could use Readline, and that is a real gain for the community.

Proprietary software developers have the advantages money provides; free software developers need to make advantages for each other. I hope some day we will have a large collection of GPL-covered libraries that have no parallel available to proprietary software, providing useful modules to serve as building blocks in new free software, and adding up to a major advantage for further free software development.

(1) This license is now called the GNU Lesser General Public License, to avoid giving the idea that all libraries ought to use it. See Why you shouldn't use the Lesser GPL for your next library for more information.

Scratching an itch?

Eric Raymond says that “Every good work of software starts by scratching a developer"s personal itch.” Maybe that happens sometimes, but many essential pieces of GNU software were developed in order to have a complete free operating system.

For example, we developed the GNU C library because a Unix-like system needs a C library, BASH because a Unix-like system needs a shell, and GNU tar because a Unix-like system needs a tar program. The same is true for my own programs—the GNU C compiler, GNU Emacs, GDB and GNU Make.

Some GNU programs were developed to cope with specific threats to our freedom. Thus, we developed gzip to replace the Compress program, which had been lost to the community because of the LZW patents. We found people to develop LessTif, and more recently started GNOME and Harmony, to address the problems caused by certain proprietary libraries (see below). We are developing the GNU Privacy Guard to replace popular nonfree encryption software, because users should not have to choose between privacy and freedom.

Of course, the people writing these programs became interested in the work, and many features were added to them by various people for the sake of their own needs and interests. But that is not why the programs exist.

unexpected developments

At the beginning of the GNU Project, I imagined that we would develop the whole GNU system, then release it as a whole. That is not how it happened.

Since each component of the GNU system was implemented on a Unix system, each component could run on Unix systems long before a complete GNU system existed. Some of these programs became popular, and users began extending them and porting them—to the various incompatible versions of Unix, and sometimes to other systems as well.

The process made these programs much more powerful, and attracted both funds and contributors to the GNU Project. But it probably also delayed completion of a minimal working system by several years, as GNU developers" time was put into maintaining these ports and adding features to the existing components, rather than moving on to write one missing component after another.

The GNU Hurd

By 1990, the GNU system was almost complete; the only major missing component was the kernel. We had decided to implement our kernel as a collection of server processes running on top of Mach. Mach is a microkernel developed at Carnegie Mellon University and then at the University of Utah; the GNU Hurd is a collection of servers (i.e., a herd of GNUs) that run on top of Mach, and do the various jobs of the Unix kernel. The start of development was delayed as we waited for Mach to be released as free software, as had been promised.

One reason for choosing this design was to avoid what seemed to be the hardest part of the job: debugging a kernel program without a source-level debugger to do it with. This part of the job had been done already, in Mach, and we expected to debug the Hurd servers as user programs, with GDB. But it took a long time to make that possible, and the multithreaded servers that send messages to each other have turned out to be very hard to debug. Making the Hurd work solidly has stretched on for many years.

Alix

The GNU kernel was not originally supposed to be called the Hurd. Its original name was Alix—named after the woman who was my sweetheart at the time. She, a Unix system administrator, had pointed out how her name would fit a common naming pattern for Unix system versions; as a joke, she told her friends, “Someone should name a kernel after me.” I said nothing, but decided to surprise her with a kernel named Alix.

It didn't stay that way. Michael (now Thomas) Bushnell, the main developer of the kernel, preferred the name Hurd, and redefined Alix to refer to a certain part of the kernel—the part that would trap system calls and handle them by sending messages to Hurd servers.

Later, Alix and I broke up, and she changed her name; independently, the Hurd design was changed so that the C library would send messages directly to servers, and this made the Alix component disappear from the design.

But before these things happened, a friend of hers came across the name Alix in the Hurd source code, and mentioned it to her. So she did have the chance to find a kernel named after her.

Linux and GNU/Linux

The GNU Hurd is not suitable for production use, and we don't know if it ever will be. The capability-based design has problems that result directly from the flexibility of the design, and it is not clear whether solutions exist.

Fortunately, another kernel is available. In 1991, Linus Torvalds developed a Unix-compatible kernel and called it Linux. It was proprietary at first, but in 1992, he made it free software; combining Linux with the not-quite-complete GNU system resulted in a complete free operating system. (Combining them was a substantial job in itself, of course.) It is due to Linux that we can actually run a version of the GNU system today.

Challenges in our future

We have our proven ability to develop a broad spectrum of free software. This does not mean we are invincible and unstoppable. Several challenges make the future of free software uncertain; meeting them will require steadfast effort and endurance, sometimes lasting for years. It will require the kind of determination that people display when they value their freedom and will not let anyone take it away.

The following four sections discuss these challenges.

secret hardware

Hardware manufacturers increasingly tend to keep hardware specifications secret. This makes it difficult to write free drivers so that Linux and XFree86 can support new hardware. We have complete free systems today, but we will not have them tomorrow if we cannot support tomorrow's computers.

There are two ways to cope with this problem. Programmers can do reverse engineering to figure out how to support the hardware. The rest of us can choose the hardware that is supported by free software; as our numbers increase, secrecy of specifications will become a self-defeating policy.

Reverse engineering is a big job; will we have programmers with sufficient determination to undertake it? Yes—if we have built up a strong feeling that free software is a matter of principle, and nonfree drivers are intolerable. And will large numbers of us spend extra money, or even a little extra time, so we can use free drivers? Yes, if the determination to have freedom is widespread.

(2008 note: this issue extends to the BIOS as well. There is a free BIOS, LibreBoot (a distribution of coreboot); the problem is getting specs for machines so that LibreBoot can support them without nonfree “blobs”.)

non-free libraries

A nonfree library that runs on free operating systems acts as a trap for free software developers. The library "s attractive features are the bait; if you use the library, you fall into the trap, because your program cannot usefully be part of a free operating system. (Strictly speaking, we could include your program, but it won" t run with the library missing.) Even worse, if a program that uses the proprietary library becomes popular, it can lure other unsuspecting programmers into the trap.

The first instance of this problem was the Motif toolkit, back in the 80s. Although there were as yet no free operating systems, it was clear what problem Motif would cause for them later on. The GNU Project responded in two ways: by asking individual free software projects to support the free X Toolkit widgets as well as Motif, and by asking for someone to write a free replacement for Motif. The job took many years; LessTif, developed by the Hungry Programmers, became powerful enough to support most Motif applications only in 1997.

Between 1996 and 1998, another nonfree GUI toolkit library, called Qt, was used in a substantial collection of free software, the desktop KDE .

Free GNU/Linux systems were unable to use KDE, because we could not use the library. However, some commercial distributors of GNU/Linux systems who were not strict about sticking with free software added KDE to their systems—producing a system with more capabilities, but less freedom. The KDE group was actively encouraging more programmers to use Qt, and millions of new “Linux users” had never been exposed to the idea that there was a problem in this. The situation appeared grim.

The free software community responded to the problem in two ways: GNOME and Harmony.

GNOME, the GNU Network Object Model Environment, is GNU's desktop project. Started in 1997 by Miguel de Icaza, and developed with the support of Red Hat Software, GNOME set out to provide similar desktop facilities, but using free software exclusively. It has technical advantages as well, such as supporting a variety of languages, not just C++.

Harmony is a compatible replacement library, designed to make it possible to run KDE software without using Qt.

In November 1998, the developers of Qt announced a change of license which, when carried out, should make Qt free software. There is no way to be sure, but I think that this was partly due to the community"s firm response to the problem that Qt posed when it was nonfree. (The new license is inconvenient and inequitable, so it remains desirable to avoid using Qt.)

How will we respond to the next tempting nonfree library? Will the whole community understand the need to stay out of the trap? Or will many of us give up freedom for convenience, and produce a major problem? Our future depends on our philosophy.

Software patents

The worst threat we face comes from software patents, which can put algorithms and features off limits to free software for up to twenty years. The LZW compression algorithm patents were applied for in 1983, and we still cannot release free software to produce proper compressed GIF s. In 1998, a free program to produce MP3 compressed audio was removed from distribution under threat of a patent suit.

There are ways to cope with patents: we can search for evidence that a patent is invalid, and we can look for alternative ways to do a job. But each of these methods works only sometimes; when both fail, a patent may force all free software to lack some feature that users want. After a long wait, the patents expire (the MP3 patents are expected to have expired by 2018), but what will we do until then?

Those of us who value free software for freedom "s sake will stay with free software anyway. We will manage to get work done without the patented features. But those who value free software because they expect it to be technically superior are likely to call it a failure when a patent holds it back. Thus, while it is useful to talk about the practical effectiveness of the “bazaar” model of development, and the reliability and power of some free software, we must not stop there. freedom and principles.

Free documentation

The biggest deficiency in our free operating systems is not in the software—it is the lack of good free manuals that we can include in our systems. Documentation is an essential part of any software package; when an important free software package does not come with a good free manual, that is a major gap. We have many such gaps today.

Free documentation, like free software, is a matter of freedom, not price. The criterion for a free manual is pretty much the same as for free software: it is a matter of giving all users certain freedoms. Redistribution (including commercial sale) must be permitted, online and on paper, so that the manual can accompany every copy of the program.

Permission for modification is crucial too. As a general rule, I don't believe that it is essential for people to have permission to modify all sorts of articles and books. For example, I don't think you or I are required to give permission to modify articles like this one, which describe our actions and our views.

But there is a particular reason why the freedom to modify is crucial for documentation for free software. When people exercise their right to modify the software, and add or change its features, if they are conscientious they will change the manual, too—so they can provide accurate and usable documentation with the modified program. A nonfree manual, which does not allow programmers to be conscientious and finish the job, does not fill our community's needs.

Some kinds of limits on how modifications are done pose no problem. For example, requirements to preserve the original author's copyright notice, the distribution terms, or the list of authors, are OK. It is also no problem to require modified versions to include notice that they were modified, even to have entire sections that may not be deleted or changed, as long as these sections deal with nontechnical topics. In other words, they don't block the free software community from making full use of the manual.

However, it must be possible to modify all the technical content of the manual, and then distribute the result in all the usual media, through all the usual channels; otherwise, the restrictions do obstruct the community, the manual is not free, and we need another manual.

Will free software developers have the awareness and determination to produce a full spectrum of free manuals? Once again, our future depends on philosophy.

We must talk about freedom

Estimates today are that there are ten million users of GNU/Linux systems such as Debian GNU/Linux and Red Hat “Linux”. Free software has developed such practical advantages that users are flocking to it for purely practical reasons.

The good consequences of this are evident: more interest in developing free software, more customers for free software businesses, and more ability to encourage companies to develop commercial free software instead of proprietary software products.

But interest in the software is growing faster than awareness of the philosophy it is based on, and this leads to trouble. Our ability to meet the challenges and threats above depends on the will to stand firm for freedom. To make sure our community has this will, we need to spread the idea to the new users as they come into the community.

But we are failing to do so: the efforts to attract new users into our community are far outstripping the efforts to teach them the civics of our community. We need to do both, and we need to keep the two efforts in balance.

"open source"

Teaching new users about freedom became more difficult in 1998, when a part of the community decided to stop using the term “free software” and say “open source software” instead.

Some who favored this term aimed to avoid the confusion of “free” with “gratis”—a valid goal. Others, however, aimed to set aside the spirit of principle that had motivated the free software movement and the GNU Project, and to appeal instead to executives and business users, many of whom hold an ideology that places profit above freedom, above community, above principles. Thus, the rhetoric of “open source” focuses on the potential to make high-quality, powerful software, but shuns the ideas of freedom, community, and principle.

The “Linux” magazines are a clear example of this—they are filled with advertisements for proprietary software that works with GNU/Linux. When the next Motif or Qt appears, will these magazines warn programmers to stay away from it, or will they run ads for it?

the support of business can contribute to the community in many ways; all else being equal, it is useful. but winning their support by speaking even less about freedom and principle can be disastrous; it makes the previous imbalance between outreach and civics education even worse.

“Free software” and “open source” describe the same category of software, more or less, but say different things about the software, and about values. The GNU Project continues to use the term “free software”, to express the idea that freedom, not just technology, is important.

Try!

Yoda "s aphorism ("There is no 'try'") sounds neat, but it doesn't work for me. I have done most of my work while anxious about whether I could do the job, and unsure that it would be enough to achieve the goal if I did. But I tried anyway, because there was no one but me between the enemy and my city. Surprising myself, I have sometimes succeeded.

Sometimes I failed; some of my cities have fallen. Then I found another city threatened, and got ready for another battle. Over time, I"ve learned to look for threats and put myself between them and my city, calling on other hackers to come and join me.

Nowadays, often I "m not the only one. It is a relief and a joy when I see a regiment of hackers digging in to hold the line, and I realize, this city may survive—for now. But the dangers are greater each year, and now Microsoft has explicitly targeted our community. We can "t take the future of freedom for granted. Don "t take it for granted! If you want to keep your freedom, you must be prepared to defend it.

TH.arial ( font-family: Arial, Serif;) P.topic ( font-family: sans-serif;) A.plain ( text-decoration: none;) A.topic01 ( color: #006890; font-family: sans-serif; text-decoration: none;) A.topic02 ( color: #099771; font-family: sans-serif; text-decoration: none;) serif; text-decoration: none;) A.topic04 ( color: #98650A; font-family: sans-serif; text-decoration: none;) text-decoration: none;) A.topic06 ( color: #099607; font-family: sans-serif; text-decoration: none;) A.topic07 ( color: #9E1215; font-family: sans-serif; decoration: none;) A.topic08 ( color: #970941; font-family: sans-serif; text-decoration: none;) A.topic09 ( color: #950995; font-family: sans-serif; text-decoration: none;) A.topic010 ( color: #390A98; font-family: sans-serif; text-decoration: none;) H1 ( font-family: sans-serif;) H2 ( font-family: sans-serif;) H3 ( font-family: sans-serif;) H4 ( font-family: sans-seri f;) H5 ( font-family: sans-serif;) H6 ( font-family: sans-serif;)

Free Software Ideology and the GNU Project: Current Status and Immediate Challenges

S.D. Kuznetsov

The Free Software Foundation (FSF) is a very interesting and in many ways exceptional phenomenon in today's programming world. Many domestic programmers had to deal with programs from FSF (the GCC programming system is especially well known), but the lack of publications in Russian makes it difficult to understand the ideology and goals of the FSF, and also makes it impossible to assess the existing backlog. The purpose of this short article is to at least partially fill this gap. The article is entirely based on the materials of the FSF and therefore, in accordance with the general principles of this organization, may be freely reprinted, copied or distributed in any other way (with the preservation of this note).

1. FSF Ideology and the General Goals of the GNU Project

FSF is a programming organization founded and led by Richard Stallman. In the most general setting, the task of the FSF is to eliminate restrictions on copying, distributing, studying and modifying computer programs. To achieve this common goal, the FSF encourages the development and use of free software targeted at a wide range of applications.

In his "GNU Manifesto", written back in 1985, R. Stallman, as the main idea that led to the emergence of FSF and the GNU project, puts forward his rejection of software ownership. The peculiarities of relationships in the programming community often make people choose to follow the natural feeling of friendship and mutual assistance, or submission that interferes with this property law. With free software, this onerous choice is no longer necessary.

Creating an integrated free software system avoids the duplication of work by programmers (which is often only required because of someone owning the software). The free distribution of source codes of programs facilitates their maintenance and adaptation to the needs of a particular user (it is not necessary to resort to the services of only companies that own licenses for source codes). There is an additional and very important opportunity to use good software for educational purposes.

According to R. Stallman, when switching to free software, programmers will not starve to death (although, apparently, they will earn a little less). Restriction on software copying is not the only way to make money. Stallman's main idea is that you should not sell programs, but the work of a programmer. In particular, the source of income may be maintenance of software systems or their configuration for use on new computers and / or in new conditions, teaching, etc.

Stallman's "Manifesto" is written very emotionally and in places is too utopian. Nevertheless, it seems that the ideas of free software are historically close to traditional (with the exception of the most recent years) attitudes among Soviet programmers. Perhaps it is the FSF line that is the most natural way to deep integration of the domestic and world communities of programmers.

More specifically, FSF is developing programs within the framework of the GNU project (the abbreviation GNU is expanded recursively - GNU "s Not Unix). The goal of the GNU project is to create a complete integrated software system that is compatible with the capabilities of the Unix OS environment (as a rule, the capabilities of GNU programs are wider capabilities of analogues of the Unix environment).

The FSF software is "free" in two senses. Firstly, any program can be freely copied and transferred to anyone. Secondly, the availability of source codes of programs provides an opportunity for free study of programs, their improvement and distribution of modified versions.

Just as the rights of ordinary software companies are protected by their copyright mark (copyright), the "freedom" of FSF software systems is protected by "copyleft" - a combination of copyright and a document with the title "GNU General Public License" present in all FSF texts. This document states the rights that any current owner of this text has, and the impossibility of depriving these rights from any other subject.

The main activity of the FSF is the development of new free software components within the framework of the GNU project. For the most part, the GNU project develops in a planned manner (see, in particular, section 3 of this article), but the FSF also accepts for free distribution programs developed by firms and individuals on their own initiative. In addition, the FSF produces and sells free software tapes, prepares, publishes, and distributes manuals for various components of GNU software, and maintains and distributes a service directory, a list of firms and individuals that provide paid services to users of GNU programs and systems. .

The financial basis of the FSF is the sale of tapes and documentation, as well as the sponsorship of commercial firms and individuals.

2. Available GNU Software

At present, not all components of the GNU Project software are ready. However, FSF distributes many programs, some of which are written directly by FSF programmers, and some of which are donated to FSF for free distribution by other organizations and individuals. Let's briefly list the software products distributed by FSF now.

Emacs is an extensible, customizable editor for different types of terminals and user needs. The extensibility of the editor is based on the use of the Lisp language interpreter built into the editor (a dialect of Common Lisp). Simultaneously with the source texts of the editor, manuals for using Emacs and a reference manual for programming in the Lisp language in the Emacs environment are distributed.

Bison is a replacement for the standard Yacc parser generator with some extensions. The guide is also being distributed.

Two implementations of a simplified dialect of the Lisp language - Scheme: one from MIT (written in C), the second from the University of Yale (written in Scheme).

The texi2roff utility is designed to convert text files in TeX format into text files of the roff standard format for Unix OS (documentation distributed by FSF on machine media is formatted in TeX format).

Utilities for packing/unpacking text files.

The GNU Chess Program.

GNU CC is a portable optimizing C compiler. Fully supports ANSI C standard. Contains tools to semi-automatically build code generators for new computers. Distributed with the manual.

A single-pass portable GAS assembler that is almost twice as fast as standard Unix assembler.

Free utility options for working with object files: ar, ld, nm, size, gprof, strip, and ranlib. A new dynamic loading utility, dld, is also being distributed.

GNU make includes nearly all of the BSD, System V, and POSIX make utilities, as well as a number of extensions. Distributed with the manual.

The GDB debugger can be used to debug programs written in C, C++ and Fortran. Distributed with the manual.

BASH (Bourne Again SHell) - The GNU Shell is compatible with the standard Unix sh command and includes a number of extensions taken from other Shell variants.

GAWK is the GNU version of the standard Unix AWK utility.

flex is a GNU replacement for the standard lexical analyzer generator lex. flex allows you to get more efficient scanners than lex.

GNU tar is an extension of the standard tar archive utility.

Part of files from BSD 4.3-tahoe that do not contain AT&T source code and were released for free distribution by the University of Berkeley. These files contain, in particular, the full source texts of some utilities, games, library routines, etc.

Systems that support working with software versions in large software projects, RCS (Revision Control System) and CVS (Concurrent Version System).

Faster than standard free versions of the grep and diff utilities.

An almost entirely Postscript compatible graphical language, Ghostscript.

An interactive program for drawing mathematical expressions and data gnuplot.

A set of tools for turning the GCC compiler into a C++ compiler, including advanced class libraries.

Huge amount of X11 programs, MIT X-Windows implementation (version 11, release 4). The volume of the article does not allow dwelling on this in more detail.

Basically, all programs distributed by FSF are designed to work in the Unix environment and are already used with various versions of this system, but there are versions of some programs for working with VMS and even MS-DOS.

3. Immediate Tasks of the GNU Project

The list of work that is planned to be done as part of the GNU project is quite extensive. Let us give only a brief overview of the main directions.

3.1. Documentation

It is required to prepare a number of manuals for programs that are already ready or close to completion: a reference manual for the C language, a description of GCC including a manual for determining target machines, a manual for programming application systems in the X-Windows environment, etc.

3.2. Projects related to the development of the free Unix kernel

FSF is working on building a Unix kernel based on the free Mach microkernel. Immediate tasks include the implementation of the TCP/IP network protocols and a new file system (it is hoped to take advantage of some off-the-shelf software that is expected to be declared free). There are other tasks, including the development of a remote OS kernel debugger.

3.3. Development of the free Unix environment

Some utilities need to be implemented (sdiff, mailx, join, etc.). Development of a number of libraries is required. Among the tasks is the development of a user-friendly terminal interface.

3.4. Extensions to existing GNU software

Basically, Emacs, GCC, and GDB need work.

With respect to Emacs, two areas of improvement are needed: extending Emacs to allow it to be used as a publishing system, and fully internationalizing Emacs so that any national script can be used.

GCC needs to be finalized to fix the accumulated comments and implement the existing suggestions (the list of comments and suggestions is distributed with the GCC).

GDB needs to be improved in terms of introducing a C interpreter into the debugger; some tweaks are also needed to be able to use GDB when debugging programs written in languages ​​other than C.

3.5. New compilers

Implementation of compilers for a number of programming languages ​​(Algol, Algol-68, PL/1, Ada, etc.) with access to the GCC code generator is required. (Such work is already underway for Fortran, Pascal, and Modula-2.)

3.5. Tons of other projects

The GNU Project's current list of immediate tasks includes a wide variety of other works. Let's mention the desire to have free analogues of Page Maker, Ventura Publisher, dbase2 or dbase3 systems, etc. Requires a number of X-Windows programs. Etc. etc.

4. How to get more information and/or GNU programs

To communicate with the FSF in today's domestic environment, it is best to use e-mail. The FSF's contact person for people who want to join the GNU Project is Walter Poxon. His e-mail address: You can also get information about the rules for receiving tapes with GNU software from the FSF. Unfortunately, this natural path is not very suitable for the current Soviet reality (the payment for the tapes, although symbolic, is still in hard currency).

In our country, in fact, there are all these tapes. Any holder of them, in accordance with the rules of the FSF game, is obliged to facilitate their further distribution. Unfortunately, this is quite a lot of technical work. The Soviet Association of UNIX Users (SUUG) plans to take over, as soon as technical conditions allow, free distribution of free software for its members and paid copying of tapes for everyone (this is a matter of the coming months). All SUUG members will receive relevant information, current information can be obtained at the address via e-mail or at the usual SUUG address: 125502, Moscow, st. Lavochkina, 19.

Literature.

  1. Richard M. Stallman. The GNU Manifesto.
  2. GNU General Public License // Free Software Foundation, 1989.
  3. GNU's Bulletin // Free Software Foundation, 1991.
  4. GNU Task List (periodically updated file available via e-mail; we based on the July 24, 1991 version)