GNU Projekat

Richard Stallman

originalno izdano u knjizi "Open Sources"

 [slika Sta je GNU] [Albanski | Bosanski | Katalonski | Kineski(Obicni) | Kineski(Tradicionalni) | Hrvatski | Česki | Danski | Njemački | Engleski | Francuski | Grčki  | Bugarski | Indonezijski | Talijanski | Japanski | Korejski | Norveški | Rumunski | Portugalski | Romski | Ruski | Srpski | Španski | Švedski | Čai | Turski | Vijetnamski]

Prva software-sharing zajednica

Kada sam počeo raditi u MIT Laboratoriju umjetne inteligencije 1971-e, postao sam dio software-sharing zajednice koja je postojala mnogo godina. Dijeljenje software-a nije bilo ograničeno samo na našu zajednicu; ono je staro koliko i kompjuteri, kao što je dijeljenje recepata staro koliko i kuhanje. Ali mi smo to radili više nego drugi.

AI Lab (laboratorij um.int. op.prev.) je koristio timesharing operativni sistem zvani ITS (the Incompatible Timesharing System) kojeg su hackeri (1) laboratorijskog osoblja dizajnirali i napisali u asemblerskom jeziku za Digital PDP-10, jedan od velikih kompjutera tog vremena. Kao član ove zajednice, AI Lab sistemski hacker, moj je posao bio da poboljšam sistem.

Naš software nismo nazvali "slobodan software", jer taj pojam još nije ni postojao; ali je to u stvari bilo to. Kadgod su ljudi s drugih univerziteta ili kompanija htjeli da portaju i koriste program, drage volje smo im dopustili. Ako ste vidjeli nekoga da koristi nepoznat i interesantan program, uvijek ste mogli tražiti da vidite source kod, da bi ga pročitali, promijenili, ili otkinuli dijelove da bi napravili novi program.

(1) Korištenje riječi "hacker" u smislu "provala sigurnosti" je zbunjujuća za dijelove masovnih medija. Mi hackeri odbijamo da prihvatimo to značenje, te nastavljamo koristiti riječ u značenju "Neko ko voli programiranje i uživa pametovati o tome".

Raspad zajednice

Situacija se drastično promijenila ranih 80-tih kada je Digital ugasio PDP-10 seriju. Njegova arhitektura, elegantna i moćna u 60-tim, nije se mogla proširiti na veći adresni prostor koji je postao dostupan u 80-tim. Ovo je značilo da su skoro svi programi koji su sačinjavali ITS postali zastarjeli.

Zajednica AI lab hackera se već raspala, nedugo prije. 1981., kompanija Symbolics je zaposlila gotovo sve hackere iz AI lab-a, te se tako razrijeđena zajednica nije mogla uzdržavati. (knjiga Hackers autora Steve Levy-a opisuje dogadjaje, te daje čistu sliku ove zajednice u svom vrhuncu.) Kada je AI lab kupio novi PDP-10 1982.-e, njegovi administratori su odlučili da koriste Digitalove timesharing sisteme, koji nisu bili besplatni, umjesto ITS-a.

Moderni kompjuteri ove ere, kao VAX ili 68020, su imali sopstvene operativne sisteme, ali nijedan od njih nije bio slobodan software: morali ste potpisati ugovor o šutnji (nondisclosure agreement - ugovor po kojemu niste smjeli odavati nikakve podatke o proizvodu po.a.) da biste dobili izvršnu (.exe) kopiju.

Ovo je značilo da je prvi korak u korištenju kompjutera bio da se obeća da ne smijete pomoći komšiji. Kooperativna zajednica je bila zabranjena. Pravilo vlasnika posjedovanog software-a bilo je, "Ako ga podijelite sa susjedom, onda ste pirat. Ako želite ikakve promjene, molite nas da ih napravimo."

Ideja da je društveni sistem posjedovanog software-a--sistem koji kaže da nije dozvoljeno dijeliti ili mijenjati software-- da je taj sistem anti-društven, neetičan, jednostavno pogrešan, može biti iznenađenje za neke čitatelje. Ali šta drugo možemo reći o sistemu baziranom na podjeli javnosti i držanju korisnika bespomoćnim? Čitatelji koje ideja iznenadi su vjerojatno uzeli posjedovani software 'zdravo za gotovo', ili ga sude na principima koji vrijede u biznisu posjedovanog software-a. Izdavači software-a su dugo radili da ubijede ljude da je samo jedan način gledanja na ovo pitanje.

Kada izdavači software-a govore o "nametanju" svojih "prava", ono što zaista *kažu* je sekundarno. Prava poruka ovih tvrdnji su neizrečene pretpostavke koje uzimaju za pravo; javnost treba da ih prihvati bez kritike. Hajdemo ih ispitati.

Jedna pretpostavka je da software kompanije imaju bezupitno pravo da posjeduju software te stoga imaju moć nad svim korisnicima. (Ako postoji prirodno pravo, bez obzira koliko šteti javnosti, ne smijemo prigovoriti.) Zanimljivo je da Ustav SAD-a i pravna tradicija odbacuju ovaj stav; copyright nije prirodno pravo, nego umjetni monopol nametnut od vlade koji ograničava korisnike u namjeri da kopiraju.

Još jedna neizrečena pretpostavka je da je jedina važna stvar za software ta što vam omogučava da uradite--da mi korisnici kompjutera ne bi smjeli mariti kakvu vrstu društva smijemo imati.

Treća pretpostavka je da ne bi imali korisnog software-a (ili nikada ne bi imali program koji će uraditi ovo ili ono) da nismo dali kompaniji moć nad korisnicima programa. Ove pretpostavke su mogle zvučati vjerojatne, prije nego što je pokret slobodnog software-a demonstrirao da možemo imati gomilu korisnih programa a da ga ne stavljamo u lance.

Ako odbijemo da prihvatimo ove pretpostavke, te sudimo ove stvari na temelju zdravog razuma pri ćemu na prvo mjesto stvaljamo korisnike, doći ćemo do različitih zaključaka. Korisnici kompjutera bi trebali biti slobodni da mijenjaju programe za vlastite potrebe, jer je pomaganje drugima osnova drustva.

Ovdje nema mjesta za opširne izjave o razlozima ovog stava, te želim usmjeriti čitatelja na web stranicu http://www.gnu.org/philosophy/why-free.html.

Nepopustljiv moralni izbor.

Sa odlaskom moje zajednice, nije bilo moguće nastaviti kao prije. Umjesto toga mučio me nepopustljiv moralni izbor.

Jednostavniji izbor bi bio da se pridružim svijetu posjedovanog software-a, potpisujući ugovor o šutnji i obećavajući da neću pomagati svojim prijateljima hackerima. najvjerojatnije bih i ja programirao software koji se prodavao pod ugovorom o šutnji, i prema tome činio pritiske na druge ljude da izdaju svoje prijatelje.

Na ovaj način bih zaradio, te se možda zabavljao pišući kod. Ali znao sam da bih se na kraju karijere osvrnuo i vidio sve godine kroz koje sam pravio zidove među ljudima, te bih osjećao da sam proveo život čineći svijet gorim mjestom.

Već sam bio doživio da budem na kraju ugovora o šutnji, kada je neto odbio da daa meni i MIT AI lab-u source kod od kontrolnog programa za pisać. (Manjak nekih stvari u programu je činilo korištenje printera frustrirajućim.) Stoga nisam sebi mogao reći da su ugovori o šutnji nedužni. Bio sam bijesan kada je odbio da ga podijeli sa nama; nisam se mogao okrenuti i uraditi to isto svima drugima.

Drugi izbor, otvoren ali neugodan, je bio da napustim polje računarstva. Na taj način moje sposobnosti ne bi bile zloupotrijebljene, ali bi i dalje bile neiskoristene. Ne bih bio kri za podjelu i ograničenja korisnika kompjutera, ali bi se to ipak dogodilo.

Stoga sam potražio način na koji bi programer mogao učiniti nešto dobro. Upitao sam se, da li postoji program ili programi koje bih mogao napisati da bih još jednom zajednicu učinio mogućom.

Odgovor je bio jednostavan: prvo što sam trebao je operativni sistem. To je osnovni software koji trebate imati da bi počeli koristiti kompjuter. S operativnim sistemom, možete mnogo toga uraditi; bez njega, ne možete ni pokrenuti kompjuter. S slobodnim operativnim sistemom bismo ponovo mogli imati zajednicu kooperativnih hackera--i pozvati svakoga da nam se pridruži. I svako bi mogao koristiti kompjuter a da ne mora špijunirati svoje prijatelje.

Kao programer operativnog sistema, imao sam prave vještine za posao. Pa iako nisam mogao za to mogao uzeti zaslugu, shvatio sam da sam izabran za taj posao. Izabrao sam da napravim operativni sistem kompatibilan Unix-u da bi bio portabilan, te da bi se Unix korisnici mogli lagano prebaciti na njega. Ime GNU je izabrano koristeci hackersku tradiciju, rekurzivni akronim za "GNU nije Unix (GNU's Not Unix)".

Operativni sistem se ne sastoji samo od kernela, koji jedva da može pokrenuti druge programe. U 1970-tim svaki operativni sistem vrijedan pomena se satojao od procesora, asemblera, kompajlera, interpretatora, debagera, tekst editora, mailers-a, i još mnogo toga. ITS ih je imao, Multics također, VMS ih je imao, te ih je imao i Unix. GNU OS ih je također trebao imati.

Kasnije sam čuo ove riječi, pripisane Hillel (1):

Ako nisam za sebe, ko će biti za mene?
Ako sam samo za sebe, šta sam ja?
Ako ne sada, kada?

Odluka o osnivanju GNU projekta je bila bazirana na sličnoj ideji.

(1) Kao ateista ne slijedim niti jednog religijskog vodju, ali ponekad nađem nešto što je neko od njih rekao.

Slobodan kao u slobodi (*)

Izraz 'slobodan software' se ponekad pokrešno protumači--on nema ništa sa cijenom. Radi se o slobodi. Stoga definicija je slobodnog software-a: program je slobodan software za vas, općenito, ako:

Pošto se 'slobodan' odnosi na slobodu, a ne na cijenu, nema suprotnosti između prodavanja kopija i slobodnog software-a. U stvari, pravo prodaje kopija je osnovno: kolekcioniranje slobodnog software-a koji se prodaje na CD-ROM-ovima je važno za zajednicu i njihovom prodajom se prikuplja novac za razvoj slobodnog software-a. Zbog toga program koji ljudi nisu slobodni da uvrste u ove kolekcije nije slobodan software.

Zbog dvosmislenosti pojma 'slobodan', ljudi su dugo trazili alternative, ali niko nije pronašao prikladnu alternativu. Engleski jezik ima više riječi i nijansi od bilo kojeg drugog jezika, ali mu manjka jednostavna, nedvosmislena, riječ koja znači 'slobodan' kao u riječi sloboda--'nesputan' je riječ koja ima najbliže značenje, Alternative kao 'oslobođen', 'sloboda' i 'otvoren' imaju ili pogrešno značenje ili neke druge nedostatke.

(*) rijec 'free' u engleskom ima dva značenja: besplatan i slobodan, te se zbog toga i koriste u sličnom značenju u frazi 'free software'. op.prev.

GNU software i GNU sistem

Razvoj čitavog sistema je veoma velik projekat. Da bi ga doveli nadohvat ruke, odlučio sam da prilagodim i koristim postojeće dijelove slobodnog software-a gdje je god to bilo moguće. Na primjer, na samom početku sam odlučio da koristim TeX kao osnovni tekst formater; nekoliko godina kasnije sam odlučio da radije koristim X Windows sistem nego da pišem jos jedan window sistem za GNU.

Zbog ove odluke GNU sistem nije isto kao kolekcija svog GNU software-a. GNU sistem uključuje programe koji nisu GNU software, programe koje su programirali drugi ljudi i projekti za njihove potrebe, ali koje možemo koristiti jer su slobodan software.

Početak projekta

U januaru 1984. sam prekinuo posao u MIT-u i počeo pisati GNU software. Napuštanje MIT-a je bilo neophodno da se on ne bi upletao u distribuciju GNU-a kao slobodnog software-a. Da sam ostao kao član osoblja, MIT je mogao tražiti vlasničko pravo nad software-om, te je mogao iznuditi svoje vlastite uvjete distribuiranja, ili čak ga preokrenuti u posjedovani software. Nisam imao namjeru toliko mnogo uraditi da bih vidio kako postaje beskoristan u svoj prvotnoj namjeri: stvaranju nove zajednice koja bi dijelila software.

Međutim, profesor Winston, tadašnji sef MIT AI Lab-a, me ljubazno pozvao da koristim laboratorijske prostorije.

Prvi koraci

Nedugo prije počinjanja GNU projekta, čuo sam za Free University Compiler Kit (besplatni univerzitetski kompajlerski paket), također poznat kao VUCK. (nizozemska rijec za 'besplatan' se piše sa V). Ovo je bio kompajler dizajniran da radi s više jezika, uključujući C i Pascal, i da podržava mnogostruke target mašine. Pitao sam autora smije li ga GNU koristiti.

Odgovorio je prezirno da je univerzitet besplatan ali kompajler nije. Stoga sam odlučio da moj prvi program za GNU projekat mora biti multi-jezični, multi-platformski kompajler.

Nadajući se da ću izbjeći pisanje cijelog kompajlera, nabavio sam source kod Pastel kompajlera, koji je bio multi-platformski kompajler programiran u Lawrence Livermore Lab-u. Podržavao je, i bio pisan u njemu, produženu verziju Pascala dizajniran da bude sistem-programski jezik. Dodao sam prednji dio u C-u i počeo portovanje na Motorola 68000 kompjuter. Ali sam morao odustati kada sam otkrio da kompajler treba više megabajta stack space-a, dok je 68000 Unix sistem dozvoljavao samo 64k.

Tada sam shvatio da paster kompajler funkcionira tako da dijeli čitav input file u sintax tree, konvertira cijeli syntax tree u lanac 'instrukcija', te zatim generira cijeli output file, a da nikada ne prazni nikakav storage. Novi kompajler je danas znan kao GCC; ništa od Pastel kompajlera se ne koristi u njemu, ali sam uspio da prilagodim i koristim prednji dio pisan u C-u i zadnji dio pisan u C-u koji sam napisao. Ali to je bilo nekoliko godina kasnije; prvo sam radio na GNU Emacs-u.

GNU Emacs

U septembru 1984. sam počeo raditi na Emacs-u, te se početkom 1985. mogao koristiti. Ovo mi je omogučilo da počnem koristiti Unix sisteme za editovanje; nije me interesiralo da naučim koristiti vi ili ed, pa sam do tada vršio editovanja na drugim masinama.

U tom trenutku su ljudi počeli iskazivati želju da koriste GNU Emacs, što je stvorilo pitanje kako ga distribuirati. Naravno, stavio sam ga na anonymous ftp server na MIT kompjuteru koje sam koristio. (Ovaj kompjuter, prep.ai.mit.edu, je prema tome postao osnovni GNU ftp site za distribuciju; kada je ugašen nekoliko godina kasnije, prenijeli smo ime na naš novi ftp server.) Ali u to vrijeme večina zainteresiranih ljudi nije bila na Internetu i nije mogla dobiti kopiju preko ftp-a. Stoga se postavilo pitanje, šta da im kažem?

Mogao sam reći, "Nađi prijatelja koji ima pristup internetu i koji će ti napraviti kopiju." Ili sam mogao uraditi ono što sam radio s originalnim PDP-10 Emacs-om: reći im, "Pošalji mi traku i SASE, i ja ću ti sve to poslati sa snimljenim Emacs-om." Ali nisam imao posao, i tražio sam nacina da zaradim od slobodnog software-a. Stoga sam objavio da cu svakom poslati traku za $150. Na ovaj način sam započeo distribuciju slobodnog software-a, preteći kompanijama koje danas distribuiraju cijeli GNU sistem baziran na Linux-u.

Da li je program slobodan za svakoga korisnika?

Ako je program slobodan software i kada napusti ruke autora, ne znači da će biti slobodan za svakoga ko ima kopiju. Na primjer, software u public domainu (software koji nije pod copyright-om) je besplatan; ali svako može napraviti posjedovanu modificiranu verziju. Na isti način, mnogi slobodni programi su pod copyright-om, ali se distribuiraju pod jednostavnim dopuštajućim licencama koje dozvoljavaju posjedovane modificirane verzije.

Paradigmatski primjer ovog problema je X Windows sistem razvijen u MIT-u, i objavljen kao slobodan software s dopuštajućom licencom, kojeg su ubrzo prihvatile razne kompjuterske kompanije. Dodali su X-e svojim posjedovanim Unix sistemima, samo u binarnoj formi, te stavili pod isti ugovor o šutnji. Ove kopije X-a nisu ništa više slobodne nego što je Unix.

Programeri X Windows-a nisu razmatrali ovaj problem--očekivali su i željeli da se ovo dogodi. Njihov cilj nije bila sloboda, nego uspjeh, definiran kao 'imati mnogo korisnika'. Nije ih zanimalo da li će ovi korisnici imati slobodu, samo da budu mnogobrojni.

Ovo nas je dovelo do paradoksalne situacije gdje su dva razlicita načina računanja na količinu slobode dovela do različitih odgovora na pitanje 'Da li je program slobodan?'. Ako sudite na temelju slobode koju daju MIT uvjeti distribuiranja, rekli biste da su X-i slobodan software. Ali ako mjerite slobodu običnog korisika X-a, rekli biste da je posjedovani software. Većina X korisnika je koristila posjedovanu verziju koja je došla s Unix sistemima, a ne slobodnu.

Copyleft i GNU GPL

Cilj GNU-a je bio da korisnicima pruži slobodu, a ne da samo bude popularan. Stoga trebamo koristiti uvjete distribuiranja koji bi spriječili da se GNU software pretvori u posjedovani software. Metoda koju koristimo se zove "copyleft". (1)

Copyleft koristi copyright zakon, ali dopusta da bude u suprotnosti s osnovnom namjerom: umjesto sa bude sredstvo privatiziranja software-a, ono postaje sredstvo koje se brine da software bude slobodan.

Osnovna ideja copyleft-a je da svakome damo dozvolu da koristi program, kopira ga, modificira, te distribuira modificirane verzije--ali da ne dozoli da stavljaju ograničenja. Prema tome, glavne slobode koje definiraju "slobodan software" su garantirane svakom ko ima kopiju; one postaju neotuđiva prava.

----------------------------
Tekst ispod još nije preveden.

 

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 non-free code. Such a combination would inevitably be non-free; whichever freedoms are lacking for the non-free 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.

(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.

The Free Software Foundation

As interest in using Emacs was growing, other people became involved in the GNU project, and we decided that it was time to seek funding once again. So in 1985 we created the Free Software Foundation, a tax-exempt charity for free software development. The FSF also took over the Emacs tape distribution business; later it extended this by adding other free software (both GNU and non-GNU) to the tape, and by selling free manuals as well.

The FSF accepts donations, but most of its income has always come from sales--of copies of free software, and of other related services. Today it sells CD-ROMs of source code, CD-ROMs with binaries, nicely printed manuals (all with freedom to redistribute and modify), and Deluxe Distributions (where we build the whole collection of software for your choice of platform).

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 joke 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 non-free 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 "value added", which reflects the values they would like us to adopt: convenience above freedom. If we value freedom more, we should call them "freedom subtracted" products.

Technical goals

The principal goal of GNU was 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 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 added various other useful software and documentation projects that, we thought, a truly complete system ought to have.

Today, hardly any Unix components are left in the GNU task list--those jobs have 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.

The GNU Library GPL

The GNU C library uses a special kind of copyleft called the GNU Library General Public License, 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 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.

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. They come from a vision and a plan, not from impulse.

For example, we developed the GNU C library because a Unix-like system needs a C library, the Bourne-Again Shell (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 non-free 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 (or ``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 multi-threaded 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 did not stay that way. Michael Bushnell (now Thomas), 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.

Ultimately, 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 the name to her. So the name did its job.

Linux and GNU/Linux

The GNU Hurd is not ready for production use. Fortunately, another kernel is available. In 1991, Linus Torvalds developed a Unix-compatible kernel and called it Linux. Around 1992, 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.

We call this system version GNU/Linux, to express its composition as a combination of the GNU system with Linux as the kernel.

Challenges in our future

We have proved our 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 manufactures 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 non-free 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.

Non-free libraries

A non-free 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 non-free 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++. But its main purpose was freedom: not to require the use of any non-free software.

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 non-free. (The new license is inconvenient and inequitable, so it remains desirable to avoid using Qt.)

How will we respond to the next tempting non-free 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 GIFs. 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. What will we do when this happens?

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 techically 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 "cathedral" model of development, and the reliability and power of some free software, we must not stop there. We must talk about freedom and principle.

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, on-line 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 obliged 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 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. These kinds of restrictions are not a problem because they don't stop the conscientious programmer from adapting the manual to fit the modified program. 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 described 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 principle. 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 philosophy ("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 threatened city, 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.


Vratite se na GNU home page.

Sva pitanja za FSF & GNU šaljite na gnu@gnu.org. Drugi način da kontaktirate FSF.

Sve komentare i pitanja šaljite na webmasters@www.gnu.org, a sva druga na gnu@gnu.org.

Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc., 51 Franklin St - Suite 330, Boston, MA 02110, USA

Kopiranje i distribucija čitavog članka je dozvoljena u svakom pogledu, sve dok je prisutna ova poruka.

Updated: Vedran Ljubović, 1.1.2001.

Updated: Alzan Soldić, 20.12.2000.