Advertisement
Guest User

Untitled

a guest
Sep 12th, 2013
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 46.92 KB | None | 0 0
  1. The GNU Project
  2.  
  3. by Richard Stallman
  4.  
  5. originally published in the book "Open Sources"
  6.  
  7. The first software-sharing community
  8.  
  9. When I started working at the MIT Artificial Intelligence Lab in 1971,
  10. I became part of a software-sharing community that had existed for many
  11. years. Sharing of software was not limited to our particular community;
  12. it is as old as computers, just as sharing of recipes is as old as
  13. cooking. But we did it more than most.
  14.  
  15. The AI Lab used a timesharing operating system called ITS (the
  16. Incompatible Timesharing System) that the lab's staff hackers (1) had
  17. designed and written in assembler language for the Digital PDP-10, one
  18. of the large computers of the era. As a member of this community, an AI
  19. lab staff system hacker, my job was to improve this system.
  20.  
  21. We did not call our software "free software", because that term did not
  22. yet exist; but that is what it was. Whenever people from another
  23. university or a company wanted to port and use a program, we gladly let
  24. them. If you saw someone using an unfamiliar and interesting program,
  25. you could always ask to see the source code, so that you could read it,
  26. change it, or cannibalize parts of it to make a new program.
  27.  
  28. (1) The use of "hacker" to mean "security breaker" is a confusion on
  29. the part of the mass media. We hackers refuse to recognize that
  30. meaning, and continue using the word to mean, "Someone who loves to
  31. program and enjoys being clever about it."
  32.  
  33. The collapse of the community
  34.  
  35. The situation changed drastically in the early 1980s when Digital
  36. discontinued the PDP-10 series. Its architecture, elegant and powerful
  37. in the 60s, could not extend naturally to the larger address spaces
  38. that were becoming feasible in the 80s. This meant that nearly all of
  39. the programs composing ITS were obsolete.
  40.  
  41. The AI lab hacker community had already collapsed, not long before. In
  42. 1981, the spin-off company Symbolics had hired away nearly all of the
  43. hackers from the AI lab, and the depopulated community was unable to
  44. maintain itself. (The book Hackers, by Steve Levy, describes these
  45. events, as well as giving a clear picture of this community in its
  46. prime.) When the AI lab bought a new PDP-10 in 1982, its administrators
  47. decided to use Digital's non-free timesharing system instead of ITS.
  48.  
  49. The modern computers of the era, such as the VAX or the 68020, had
  50. their own operating systems, but none of them were free software: you
  51. had to sign a nondisclosure agreement even to get an executable copy.
  52.  
  53. This meant that the first step in using a computer was to promise not
  54. to help your neighbor. A cooperating community was forbidden. The rule
  55. made by the owners of proprietary software was, "If you share with your
  56. neighbor, you are a pirate. If you want any changes, beg us to make
  57. them."
  58.  
  59. The idea that the proprietary-software social system--the system that
  60. says you are not allowed to share or change software--is antisocial,
  61. that it is unethical, that it is simply wrong, may come as a surprise
  62. to some readers. But what else could we say about a system based on
  63. dividing the public and keeping users helpless? Readers who find the
  64. idea surprising may have taken proprietary-software social system as
  65. given, or judged it on the terms suggested by proprietary software
  66. businesses. Software publishers have worked long and hard to convince
  67. people that there is only one way to look at the issue.
  68.  
  69. When software publishers talk about "enforcing" their "rights" or
  70. "stopping piracy", what they actually *say* is secondary. The real
  71. message of these statements is in the unstated assumptions they take
  72. for granted; the public is supposed to accept them uncritically. So
  73. let's examine them.
  74.  
  75. One assumption is that software companies have an unquestionable
  76. natural right to own software and thus have power over all its users.
  77. (If this were a natural right, then no matter how much harm it does to
  78. the public, we could not object.) Interestingly, the US Constitution
  79. and legal tradition reject this view; copyright is not a natural right,
  80. but an artificial government-imposed monopoly that limits the users'
  81. natural right to copy.
  82.  
  83. Another unstated assumption is that the only important thing about
  84. software is what jobs it allows you to do--that we computer users
  85. should not care what kind of society we are allowed to have.
  86.  
  87. A third assumption is that we would have no usable software (or would
  88. never have a program to do this or that particular job) if we did not
  89. offer a company power over the users of the program. This assumption
  90. may have seemed plausible, before the free software movement
  91. demonstrated that we can make plenty of useful software without putting
  92. chains on it.
  93.  
  94. If we decline to accept these assumptions, and judge these issues based
  95. on ordinary common-sense morality while placing the users first, we
  96. arrive at very different conclusions. Computer users should be free to
  97. modify programs to fit their needs, and free to share software, because
  98. helping other people is the basis of society.
  99.  
  100. There is no room here for an extensive statement of the reasoning
  101. behind this conclusion, so I refer the reader to the web page,
  102. http://www.gnu.org/philosophy/why-free.html.
  103.  
  104. A stark moral choice.
  105.  
  106. With my community gone, to continue as before was impossible. Instead,
  107. I faced a stark moral choice.
  108.  
  109. The easy choice was to join the proprietary software world, signing
  110. nondisclosure agreements and promising not to help my fellow hacker.
  111. Most likely I would also be developing software that was released under
  112. nondisclosure agreements, thus adding to the pressure on other people
  113. to betray their fellows too.
  114.  
  115. I could have made money this way, and perhaps amused myself writing
  116. code. But I knew that at the end of my career, I would look back on
  117. years of building walls to divide people, and feel I had spent my life
  118. making the world a worse place.
  119.  
  120. I had already experienced being on the receiving end of a nondisclosure
  121. agreement, when someone refused to give me and the MIT AI lab the
  122. source code for the control program for our printer. (The lack of
  123. certain features in this program made use of the printer extremely
  124. frustrating.) So I could not tell myself that nondisclosure agreements
  125. were innocent. I was very angry when he refused to share with us; I
  126. could not turn around and do the same thing to everyone else.
  127.  
  128. Another choice, straightforward but unpleasant, was to leave the
  129. computer field. That way my skills would not be misused, but they would
  130. still be wasted. I would not be culpable for dividing and restricting
  131. computer users, but it would happen nonetheless.
  132.  
  133. So I looked for a way that a programmer could do something for the
  134. good. I asked myself, was there a program or programs that I could
  135. write, so as to make a community possible once again?
  136.  
  137. The answer was clear: what was needed first was an operating system.
  138. That is the crucial software for starting to use a computer. With an
  139. operating system, you can do many things; without one, you cannot run
  140. the computer at all. With a free operating system, we could again have
  141. a community of cooperating hackers--and invite anyone to join. And
  142. anyone would be able to use a computer without starting out by
  143. conspiring to deprive his or her friends.
  144.  
  145. As an operating system developer, I had the right skills for this job.
  146. So even though I could not take success for granted, I realized that I
  147. was elected to do the job. I chose to make the system compatible with
  148. Unix so that it would be portable, and so that Unix users could easily
  149. switch to it. The name GNU was chosen following a hacker tradition, as
  150. a recursive acronym for "GNU's Not Unix."
  151.  
  152. An operating system does not mean just a kernel, barely enough to run
  153. other programs. In the 1970s, every operating system worthy of the name
  154. included command processors, assemblers, compilers, interpreters,
  155. debuggers, text editors, mailers, and much more. ITS had them, Multics
  156. had them, VMS had them, and Unix had them. The GNU operating system
  157. would include them too.
  158.  
  159. Later I heard these words, attributed to Hillel (1):
  160.  
  161. If I am not for myself, who will be for me?
  162. If I am only for myself, what am I?
  163. If not now, when?
  164.  
  165. The decision to start the GNU project was based on a similar spirit.
  166.  
  167. (1) As an Atheist, I don't follow any religious leaders, but I
  168. sometimes find I admire something one of them has said.
  169.  
  170. Free as in freedom
  171.  
  172. The term "free software" is sometimes misunderstood--it has nothing to
  173. do with price. It is about freedom. Here, therefore, is the definition
  174. of free software: a program is free software, for you, a particular
  175. user, if:
  176. * You have the freedom to run the program, for any purpose.
  177. * You have the freedom to modify the program to suit your needs. (To
  178. make this freedom effective in practice, you must have access to
  179. the source code, since making changes in a program without having
  180. the source code is exceedingly difficult.)
  181. * You have the freedom to redistribute copies, either gratis or for a
  182. fee.
  183. * You have the freedom to distribute modified versions of the
  184. program, so that the community can benefit from your improvements.
  185.  
  186. Since "free" refers to freedom, not to price, there is no contradiction
  187. between selling copies and free software. In fact, the freedom to sell
  188. copies is crucial: collections of free software sold on CD-ROMs are
  189. important for the community, and selling them is an important way to
  190. raise funds for free software development. Therefore, a program which
  191. people are not free to include on these collections is not free
  192. software.
  193.  
  194. Because of the ambiguity of "free", people have long looked for
  195. alternatives, but no one has found a suitable alternative. The English
  196. Language has more words and nuances than any other, but it lacks a
  197. simple, unambiguous, word that means "free", as in
  198. freedom--"unfettered" being the word that comes closest in meaning.
  199. Such alternatives as "liberated", "freedom", and "open" have either the
  200. wrong meaning or some other disadvantage.
  201.  
  202. GNU software and the GNU system
  203.  
  204. Developing a whole system is a very large project. To bring it into
  205. reach, I decided to adapt and use existing pieces of free software
  206. wherever that was possible. For example, I decided at the very
  207. beginning to use TeX as the principal text formatter; a few years
  208. later, I decided to use the X Window System rather than writing another
  209. window system for GNU.
  210.  
  211. Because of this decision, the GNU system is not the same as the
  212. collection of all GNU software. The GNU system includes programs that
  213. are not GNU software, programs that were developed by other people and
  214. projects for their own purposes, but which we can use because they are
  215. free software.
  216.  
  217. Commencing the project
  218.  
  219. In January 1984 I quit my job at MIT and began writing GNU software.
  220. Leaving MIT was necessary so that MIT would not be able to interfere
  221. with distributing GNU as free software. If I had remained on the staff,
  222. MIT could have claimed to own the work, and could have imposed their
  223. own distribution terms, or even turned the work into a proprietary
  224. software package. I had no intention of doing a large amount of work
  225. only to see it become useless for its intended purpose: creating a new
  226. software-sharing community.
  227.  
  228. However, Professor Winston, then the head of the MIT AI Lab, kindly
  229. invited me to keep using the lab's facilities.
  230.  
  231. The first steps
  232.  
  233. Shortly before beginning the GNU project, I heard about the Free
  234. University Compiler Kit, also known as VUCK. (The Dutch word for "free"
  235. is written with a V.) This was a compiler designed to handle multiple
  236. languages, including C and Pascal, and to support multiple target
  237. machines. I wrote to its author asking if GNU could use it.
  238.  
  239. He responded derisively, stating that the university was free but the
  240. compiler was not. I therefore decided that my first program for the GNU
  241. project would be a multi-language, multi-platform compiler.
  242.  
  243. Hoping to avoid the need to write the whole compiler myself, I obtained
  244. the source code for the Pastel compiler, which was a multi-platform
  245. compiler developed at Lawrence Livermore Lab. It supported, and was
  246. written in, an extended version of Pascal, designed to be a
  247. system-programming language. I added a C front end, and began porting
  248. it to the Motorola 68000 computer. But I had to give that up when I
  249. discovered that the compiler needed many megabytes of stack space, and
  250. the available 68000 Unix system would only allow 64k.
  251.  
  252. I then realized that the Pastel compiler functioned by parsing the
  253. entire input file into a syntax tree, converting the whole syntax tree
  254. into a chain of "instructions", and then generating the whole output
  255. file, without ever freeing any storage. At this point, I concluded I
  256. would have to write a new compiler from scratch. That new compiler is
  257. now known as GCC; none of the Pastel compiler is used in it, but I
  258. managed to adapt and use the C front end that I had written. But that
  259. was some years later; first, I worked on GNU Emacs.
  260.  
  261. GNU Emacs
  262.  
  263. I began work on GNU Emacs in September 1984, and in early 1985 it was
  264. beginning to be usable. This enabled me to begin using Unix systems to
  265. do editing; having no interest in learning to use vi or ed, I had done
  266. my editing on other kinds of machines until then.
  267.  
  268. At this point, people began wanting to use GNU Emacs, which raised the
  269. question of how to distribute it. Of course, I put it on the anonymous
  270. ftp server on the MIT computer that I used. (This computer,
  271. prep.ai.mit.edu, thus became the principal GNU ftp distribution site;
  272. when it was decommissioned a few years later, we transferred the name
  273. to our new ftp server.) But at that time, many of the interested people
  274. were not on the Internet and could not get a copy by ftp. So the
  275. question was, what would I say to them?
  276.  
  277. I could have said, "Find a friend who is on the net and who will make a
  278. copy for you." Or I could have done what I did with the original PDP-10
  279. Emacs: tell them, "Mail me a tape and a SASE, and I will mail it back
  280. with Emacs on it." But I had no job, and I was looking for ways to make
  281. money from free software. So I announced that I would mail a tape to
  282. whoever wanted one, for a fee of $150. In this way, I started a free
  283. software distribution business, the precursor of the companies that
  284. today distribute entire Linux-based GNU systems.
  285.  
  286. Is a program free for every user?
  287.  
  288. If a program is free software when it leaves the hands of its author,
  289. this does not necessarily mean it will be free software for everyone
  290. who has a copy of it. For example, public domain software (software
  291. that is not copyrighted) is free software; but anyone can make a
  292. proprietary modified version of it. Likewise, many free programs are
  293. copyrighted but distributed under simple permissive licenses which
  294. allow proprietary modified versions.
  295.  
  296. The paradigmatic example of this problem is the X Window System.
  297. Developed at MIT, and released as free software with a permissive
  298. license, it was soon adopted by various computer companies. They added
  299. X to their proprietary Unix systems, in binary form only, and covered
  300. by the same nondisclosure agreement. These copies of X were no more
  301. free software than Unix was.
  302.  
  303. The developers of the X Window System did not consider this a
  304. problem--they expected and intended this to happen. Their goal was not
  305. freedom, just "success", defined as "having many users." They did not
  306. care whether these users had freedom, only that they should be
  307. numerous.
  308.  
  309. This led to a paradoxical situation where two different ways of
  310. counting the amount of freedom gave different answers to the question,
  311. "Is this program free?" If you judged based on the freedom provided by
  312. the distribution terms of the MIT release, you would say that X was
  313. free software. But if you measured the freedom of the average user of
  314. X, you would have to say it was proprietary software. Most X users were
  315. running the proprietary versions that came with Unix systems, not the
  316. free version.
  317.  
  318. Copyleft and the GNU GPL
  319.  
  320. The goal of GNU was to give users freedom, not just to be popular. So
  321. we needed to use distribution terms that would prevent GNU software
  322. from being turned into proprietary software. The method we use is
  323. called "copyleft".(1)
  324.  
  325. Copyleft uses copyright law, but flips it over to serve the opposite of
  326. its usual purpose: instead of a means of privatizing software, it
  327. becomes a means of keeping software free.
  328.  
  329. The central idea of copyleft is that we give everyone permission to run
  330. the program, copy the program, modify the program, and distribute
  331. modified versions--but not permission to add restrictions of their own.
  332. Thus, the crucial freedoms that define "free software" are guaranteed
  333. to everyone who has a copy; they become inalienable rights.
  334.  
  335. For an effective copyleft, modified versions must also be free. This
  336. ensures that work based on ours becomes available to our community if
  337. it is published. When programmers who have jobs as programmers
  338. volunteer to improve GNU software, it is copyleft that prevents their
  339. employers from saying, "You can't share those changes, because we are
  340. going to use them to make our proprietary version of the program."
  341.  
  342. The requirement that changes must be free is essential if we want to
  343. ensure freedom for every user of the program. The companies that
  344. privatized the X Window System usually made some changes to port it to
  345. their systems and hardware. These changes were small compared with the
  346. great extent of X, but they were not trivial. If making changes were an
  347. excuse to deny the users freedom, it would be easy for anyone to take
  348. advantage of the excuse.
  349.  
  350. A related issue concerns combining a free program with non-free code.
  351. Such a combination would inevitably be non-free; whichever freedoms are
  352. lacking for the non-free part would be lacking for the whole as well.
  353. To permit such combinations would open a hole big enough to sink a
  354. ship. Therefore, a crucial requirement for copyleft is to plug this
  355. hole: anything added to or combined with a copylefted program must be
  356. such that the larger combined version is also free and copylefted.
  357.  
  358. The specific implementation of copyleft that we use for most GNU
  359. software is the GNU General Public License, or GNU GPL for short. We
  360. have other kinds of copyleft that are used in specific circumstances.
  361. GNU manuals are copylefted also, but use a much simpler kind of
  362. copyleft, because the complexity of the GNU GPL is not necessary for
  363. manuals.(2)
  364.  
  365. (1) In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me
  366. a letter. On the envelope he had written several amusing sayings,
  367. including this one: "Copyleft--all rights reversed." I used the word
  368. "copyleft" to name the distribution concept I was developing at the
  369. time.
  370.  
  371. (2) We now use the GNU Free Documentation License for documentation.
  372.  
  373. The Free Software Foundation
  374.  
  375. As interest in using Emacs was growing, other people became involved in
  376. the GNU project, and we decided that it was time to seek funding once
  377. again. So in 1985 we created the Free Software Foundation, a tax-exempt
  378. charity for free software development. The FSF also took over the Emacs
  379. tape distribution business; later it extended this by adding other free
  380. software (both GNU and non-GNU) to the tape, and by selling free
  381. manuals as well.
  382.  
  383. The FSF accepts donations, but most of its income has always come from
  384. sales--of copies of free software, and of other related services. Today
  385. it sells CD-ROMs of source code, CD-ROMs with binaries, nicely printed
  386. manuals (all with freedom to redistribute and modify), and Deluxe
  387. Distributions (where we build the whole collection of software for your
  388. choice of platform).
  389.  
  390. Free Software Foundation employees have written and maintained a number
  391. of GNU software packages. Two notable ones are the C library and the
  392. shell. The GNU C library is what every program running on a GNU/Linux
  393. system uses to communicate with Linux. It was developed by a member of
  394. the Free Software Foundation staff, Roland McGrath. The shell used on
  395. most GNU/Linux systems is BASH, the Bourne Again Shell(1), which was
  396. developed by FSF employee Brian Fox.
  397.  
  398. We funded development of these programs because the GNU project was not
  399. just about tools or a development environment. Our goal was a complete
  400. operating system, and these programs were needed for that goal.
  401.  
  402. (1) "Bourne again Shell" is a joke on the name ``Bourne Shell'', which
  403. was the usual shell on Unix.
  404.  
  405. Free software support
  406.  
  407. The free software philosophy rejects a specific widespread business
  408. practice, but it is not against business. When businesses respect the
  409. users' freedom, we wish them success.
  410.  
  411. Selling copies of Emacs demonstrates one kind of free software
  412. business. When the FSF took over that business, I needed another way to
  413. make a living. I found it in selling services relating to the free
  414. software I had developed. This included teaching, for subjects such as
  415. how to program GNU Emacs and how to customize GCC, and software
  416. development, mostly porting GCC to new platforms.
  417.  
  418. Today each of these kinds of free software business is practiced by a
  419. number of corporations. Some distribute free software collections on
  420. CD-ROM; others sell support at levels ranging from answering user
  421. questions, to fixing bugs, to adding major new features. We are even
  422. beginning to see free software companies based on launching new free
  423. software products.
  424.  
  425. Watch out, though--a number of companies that associate themselves with
  426. the term "open source" actually base their business on non-free
  427. software that works with free software. These are not free software
  428. companies, they are proprietary software companies whose products tempt
  429. users away from freedom. They call these "value added", which reflects
  430. the values they would like us to adopt: convenience above freedom. If
  431. we value freedom more, we should call them "freedom subtracted"
  432. products.
  433.  
  434. Technical goals
  435.  
  436. The principal goal of GNU was to be free software. Even if GNU had no
  437. technical advantage over Unix, it would have a social advantage,
  438. allowing users to cooperate, and an ethical advantage, respecting the
  439. user's freedom.
  440.  
  441. But it was natural to apply the known standards of good practice to the
  442. work--for example, dynamically allocating data structures to avoid
  443. arbitrary fixed size limits, and handling all the possible 8-bit codes
  444. wherever that made sense.
  445.  
  446. In addition, we rejected the Unix focus on small memory size, by
  447. deciding not to support 16-bit machines (it was clear that 32-bit
  448. machines would be the norm by the time the GNU system was finished),
  449. and to make no effort to reduce memory usage unless it exceeded a
  450. megabyte. In programs for which handling very large files was not
  451. crucial, we encouraged programmers to read an entire input file into
  452. core, then scan its contents without having to worry about I/O.
  453.  
  454. These decisions enabled many GNU programs to surpass their Unix
  455. counterparts in reliability and speed.
  456.  
  457. Donated computers
  458.  
  459. As the GNU project's reputation grew, people began offering to donate
  460. machines running UNIX to the project. These were very useful, because
  461. the easiest way to develop components of GNU was to do it on a UNIX
  462. system, and replace the components of that system one by one. But they
  463. raised an ethical issue: whether it was right for us to have a copy of
  464. UNIX at all.
  465.  
  466. UNIX was (and is) proprietary software, and the GNU project's
  467. philosophy said that we should not use proprietary software. But,
  468. applying the same reasoning that leads to the conclusion that violence
  469. in self defense is justified, I concluded that it was legitimate to use
  470. a proprietary package when that was crucial for developing a free
  471. replacement that would help others stop using the proprietary package.
  472.  
  473. But, even if this was a justifiable evil, it was still an evil. Today
  474. we no longer have any copies of Unix, because we have replaced them
  475. with free operating systems. If we could not replace a machine's
  476. operating system with a free one, we replaced the machine instead.
  477.  
  478. The GNU Task List
  479.  
  480. As the GNU project proceeded, and increasing numbers of system
  481. components were found or developed, eventually it became useful to make
  482. a list of the remaining gaps. We used it to recruit developers to write
  483. the missing pieces. This list became known as the GNU task list. In
  484. addition to missing Unix components, we listed added various other
  485. useful software and documentation projects that, we thought, a truly
  486. complete system ought to have.
  487.  
  488. Today, hardly any Unix components are left in the GNU task list--those
  489. jobs have been done, aside from a few inessential ones. But the list is
  490. full of projects that some might call "applications". Any program that
  491. appeals to more than a narrow class of users would be a useful thing to
  492. add to an operating system.
  493.  
  494. Even games are included in the task list--and have been since the
  495. beginning. Unix included games, so naturally GNU should too. But
  496. compatibility was not an issue for games, so we did not follow the list
  497. of games that Unix had. Instead, we listed a spectrum of different
  498. kinds of games that users might like.
  499.  
  500. The GNU Library GPL
  501.  
  502. The GNU C library uses a special kind of copyleft called the GNU
  503. Library General Public License(1), which gives permission to link
  504. proprietary software with the library. Why make this exception?
  505.  
  506. It is not a matter of principle; there is no principle that says
  507. proprietary software products are entitled to include our code. (Why
  508. contribute to a project predicated on refusing to share with us?) Using
  509. the LGPL for the C library, or for any library, is a matter of
  510. strategy.
  511.  
  512. The C library does a generic job; every proprietary system or compiler
  513. comes with a C library. Therefore, to make our C library available only
  514. to free software would not have given free software any advantage--it
  515. would only have discouraged use of our library.
  516.  
  517. One system is an exception to this: on the GNU system (and this
  518. includes GNU/Linux), the GNU C library is the only C library. So the
  519. distribution terms of the GNU C library determine whether it is
  520. possible to compile a proprietary program for the GNU system. There is
  521. no ethical reason to allow proprietary applications on the GNU system,
  522. but strategically it seems that disallowing them would do more to
  523. discourage use of the GNU system than to encourage development of free
  524. applications.
  525.  
  526. That is why using the Library GPL is a good strategy for the C library.
  527. For other libraries, the strategic decision needs to be considered on a
  528. case-by-case basis. When a library does a special job that can help
  529. write certain kinds of programs, then releasing it under the GPL,
  530. limiting it to free programs only, is a way of helping other free
  531. software developers, giving them an advantage against proprietary
  532. software.
  533.  
  534. Consider GNU Readline, a library that was developed to provide
  535. command-line editing for BASH. Readline is released under the ordinary
  536. GNU GPL, not the Library GPL. This probably does reduce the amount
  537. Readline is used, but that is no loss for us. Meanwhile, at least one
  538. useful application has been made free software specifically so it could
  539. use Readline, and that is a real gain for the community.
  540.  
  541. Proprietary software developers have the advantages money provides;
  542. free software developers need to make advantages for each other. I hope
  543. some day we will have a large collection of GPL-covered libraries that
  544. have no parallel available to proprietary software, providing useful
  545. modules to serve as building blocks in new free software, and adding up
  546. to a major advantage for further free software development.
  547.  
  548. (1) This license is now called the GNU Lesser General Public License,
  549. to avoid giving the idea that all libraries ought to use it.
  550. See http://www.gnu.org/philosophy/why-not-lgpl.html.
  551.  
  552. Scratching an itch?
  553.  
  554. Eric Raymond says that "Every good work of software starts by
  555. scratching a developer's personal itch." Maybe that happens sometimes,
  556. but many essential pieces of GNU software were developed in order to
  557. have a complete free operating system. They come from a vision and a
  558. plan, not from impulse.
  559.  
  560. For example, we developed the GNU C library because a Unix-like system
  561. needs a C library, the Bourne-Again Shell (bash) because a Unix-like
  562. system needs a shell, and GNU tar because a Unix-like system needs a
  563. tar program. The same is true for my own programs--the GNU C compiler,
  564. GNU Emacs, GDB and GNU Make.
  565.  
  566. Some GNU programs were developed to cope with specific threats to our
  567. freedom. Thus, we developed gzip to replace the Compress program, which
  568. had been lost to the community because of the LZW patents. We found
  569. people to develop LessTif, and more recently started GNOME and Harmony,
  570. to address the problems caused by certain proprietary libraries (see
  571. below). We are developing the GNU Privacy Guard to replace popular
  572. non-free encryption software, because users should not have to choose
  573. between privacy and freedom.
  574.  
  575. Of course, the people writing these programs became interested in the
  576. work, and many features were added to them by various people for the
  577. sake of their own needs and interests. But that is not why the programs
  578. exist.
  579.  
  580. Unexpected developments
  581.  
  582. At the beginning of the GNU project, I imagined that we would develop
  583. the whole GNU system, then release it as a whole. That is not how it
  584. happened.
  585.  
  586. Since each component of the GNU system was implemented on a Unix
  587. system, each component could run on Unix systems, long before a
  588. complete GNU system existed. Some of these programs became popular, and
  589. users began extending them and porting them---to the various
  590. incompatible versions of Unix, and sometimes to other systems as well.
  591.  
  592. The process made these programs much more powerful, and attracted both
  593. funds and contributors to the GNU project. But it probably also delayed
  594. completion of a minimal working system by several years, as GNU
  595. developers' time was put into maintaining these ports and adding
  596. features to the existing components, rather than moving on to write one
  597. missing component after another.
  598.  
  599. The GNU Hurd
  600.  
  601. By 1990, the GNU system was almost complete; the only major missing
  602. component was the kernel. We had decided to implement our kernel as a
  603. collection of server processes running on top of Mach. Mach is a
  604. microkernel developed at Carnegie Mellon University and then at the
  605. University of Utah; the GNU HURD is a collection of servers (or ``herd
  606. of gnus'') that run on top of Mach, and do the various jobs of the Unix
  607. kernel. The start of development was delayed as we waited for Mach to
  608. be released as free software, as had been promised.
  609.  
  610. One reason for choosing this design was to avoid what seemed to be the
  611. hardest part of the job: debugging a kernel program without a
  612. source-level debugger to do it with. This part of the job had been done
  613. already, in Mach, and we expected to debug the HURD servers as user
  614. programs, with GDB. But it took a long time to make that possible, and
  615. the multi-threaded servers that send messages to each other have turned
  616. out to be very hard to debug. Making the HURD work solidly has
  617. stretched on for many years.
  618.  
  619. Alix
  620.  
  621. The GNU kernel was not originally supposed to be called the HURD. Its
  622. original name was Alix--named after the woman who was my sweetheart at
  623. the time. She, a Unix system administrator, had pointed out how her
  624. name would fit a common naming pattern for Unix system versions; as a
  625. joke, she told her friends, "Someone should name a kernel after me." I
  626. said nothing, but decided to surprise her with a kernel named Alix.
  627.  
  628. It did not stay that way. Michael Bushnell (now Thomas), the main
  629. developer of the kernel, preferred the name HURD, and redefined Alix to
  630. refer to a certain part of the kernel--the part that would trap system
  631. calls and handle them by sending messages to HURD servers.
  632.  
  633. Ultimately, Alix and I broke up, and she changed her name;
  634. independently, the HURD design was changed so that the C library would
  635. send messages directly to servers, and this made the Alix component
  636. disappear from the design.
  637.  
  638. But before these things happened, a friend of hers came across the name
  639. Alix in the HURD source code, and mentioned the name to her. So the
  640. name did its job.
  641.  
  642. Linux and GNU/Linux
  643.  
  644. The GNU Hurd is not ready for production use. Fortunately, another
  645. kernel is available. In 1991, Linus Torvalds developed a
  646. Unix-compatible kernel and called it Linux. Around 1992, combining
  647. Linux with the not-quite-complete GNU system resulted in a complete
  648. free operating system. (Combining them was a substantial job in itself,
  649. of course.) It is due to Linux that we can actually run a version of
  650. the GNU system today.
  651.  
  652. We call this system version GNU/Linux, to express its composition as a
  653. combination of the GNU system with Linux as the kernel.
  654.  
  655. Challenges in our future
  656.  
  657. We have proved our ability to develop a broad spectrum of free
  658. software. This does not mean we are invincible and unstoppable. Several
  659. challenges make the future of free software uncertain; meeting them
  660. will require steadfast effort and endurance, sometimes lasting for
  661. years. It will require the kind of determination that people display
  662. when they value their freedom and will not let anyone take it away.
  663.  
  664. The following four sections discuss these challenges.
  665.  
  666. Secret hardware
  667.  
  668. Hardware manufacturers increasingly tend to keep hardware
  669. specifications secret. This makes it difficult to write free drivers so
  670. that Linux and XFree86 can support new hardware. We have complete free
  671. systems today, but we will not have them tomorrow if we cannot support
  672. tomorrow's computers.
  673.  
  674. There are two ways to cope with this problem. Programmers can do
  675. reverse engineering to figure out how to support the hardware. The rest
  676. of us can choose the hardware that is supported by free software; as
  677. our numbers increase, secrecy of specifications will become a
  678. self-defeating policy.
  679.  
  680. Reverse engineering is a big job; will we have programmers with
  681. sufficient determination to undertake it? Yes--if we have built up a
  682. strong feeling that free software is a matter of principle, and
  683. non-free drivers are intolerable. And will large numbers of us spend
  684. extra money, or even a little extra time, so we can use free drivers?
  685. Yes, if the determination to have freedom is widespread.
  686.  
  687. Non-free libraries
  688.  
  689. A non-free library that runs on free operating systems acts as a trap
  690. for free software developers. The library's attractive features are the
  691. bait; if you use the library, you fall into the trap, because your
  692. program cannot usefully be part of a free operating system. (Strictly
  693. speaking, we could include your program, but it won't run with the
  694. library missing.) Even worse, if a program that uses the proprietary
  695. library becomes popular, it can lure other unsuspecting programmers
  696. into the trap.
  697.  
  698. The first instance of this problem was the Motif toolkit, back in the
  699. 80s. Although there were as yet no free operating systems, it was clear
  700. what problem Motif would cause for them later on. The GNU Project
  701. responded in two ways: by asking individual free software projects to
  702. support the free X toolkit widgets as well as Motif, and by asking for
  703. someone to write a free replacement for Motif. The job took many years;
  704. LessTif, developed by the Hungry Programmers, became powerful enough to
  705. support most Motif applications only in 1997.
  706.  
  707. Between 1996 and 1998, another non-free GUI toolkit library, called Qt,
  708. was used in a substantial collection of free software, the desktop KDE.
  709.  
  710. Free GNU/Linux systems were unable to use KDE, because we could not use
  711. the library. However, some commercial distributors of GNU/Linux systems
  712. who were not strict about sticking with free software added KDE to
  713. their systems--producing a system with more capabilities, but less
  714. freedom. The KDE group was actively encouraging more programmers to use
  715. Qt, and millions of new "Linux users" had never been exposed to the
  716. idea that there was a problem in this. The situation appeared grim.
  717.  
  718. The free software community responded to the problem in two ways: GNOME
  719. and Harmony.
  720.  
  721. GNOME, the GNU Network Object Model Environment, is GNU's desktop
  722. project. Started in 1997 by Miguel de Icaza, and developed with the
  723. support of Red Hat Software, GNOME set out to provide similar desktop
  724. facilities, but using free software exclusively. It has technical
  725. advantages as well, such as supporting a variety of languages, not just
  726. C++. But its main purpose was freedom: not to require the use of any
  727. non-free software.
  728.  
  729. Harmony is a compatible replacement library, designed to make it
  730. possible to run KDE software without using Qt.
  731.  
  732. In November 1998, the developers of Qt announced a change of license
  733. which, when carried out, should make Qt free software. There is no way
  734. to be sure, but I think that this was partly due to the community's
  735. firm response to the problem that Qt posed when it was non-free. (The
  736. new license is inconvenient and inequitable, so it remains desirable to
  737. avoid using Qt.)
  738.  
  739. [Subsequent note: in September 2000, Qt was rereleased under the GNU
  740. GPL, which essentially solved this problem.]
  741.  
  742. How will we respond to the next tempting non-free library? Will the
  743. whole community understand the need to stay out of the trap? Or will
  744. many of us give up freedom for convenience, and produce a major
  745. problem? Our future depends on our philosophy.
  746.  
  747. Software patents
  748.  
  749. The worst threat we face comes from software patents, which can put
  750. algorithms and features off limits to free software for up to twenty
  751. years. The LZW compression algorithm patents were applied for in 1983,
  752. and we still cannot release free software to produce proper compressed
  753. GIFs. In 1998, a free program to produce MP3 compressed audio was
  754. removed from distribution under threat of a patent suit.
  755.  
  756. There are ways to cope with patents: we can search for evidence that a
  757. patent is invalid, and we can look for alternative ways to do a job.
  758. But each of these methods works only sometimes; when both fail, a
  759. patent may force all free software to lack some feature that users
  760. want. What will we do when this happens?
  761.  
  762. Those of us who value free software for freedom's sake will stay with
  763. free software anyway. We will manage to get work done without the
  764. patented features. But those who value free software because they
  765. expect it to be techically superior are likely to call it a failure
  766. when a patent holds it back. Thus, while it is useful to talk about the
  767. practical effectiveness of the "cathedral" model of development (1),
  768. and the reliability and power of some free software, we must not stop
  769. there. We must talk about freedom and principle.
  770.  
  771. (1) It would have been clearer to write `of the "bazaar" model', since
  772. that was the alternative that was new and initially controversial.
  773.  
  774. Free documentation
  775.  
  776. The biggest deficiency in our free operating systems is not in the
  777. software--it is the lack of good free manuals that we can include in
  778. our systems. Documentation is an essential part of any software
  779. package; when an important free software package does not come with a
  780. good free manual, that is a major gap. We have many such gaps today.
  781.  
  782. Free documentation, like free software, is a matter of freedom, not
  783. price. The criterion for a free manual is pretty much the same as for
  784. free software: it is a matter of giving all users certain freedoms.
  785. Redistribution (including commercial sale) must be permitted, on-line
  786. and on paper, so that the manual can accompany every copy of the
  787. program.
  788.  
  789. Permission for modification is crucial too. As a general rule, I don't
  790. believe that it is essential for people to have permission to modify
  791. all sorts of articles and books. For example, I don't think you or I
  792. are obliged to give permission to modify articles like this one, which
  793. describe our actions and our views.
  794.  
  795. But there is a particular reason why the freedom to modify is crucial
  796. for documentation for free software. When people exercise their right
  797. to modify the software, and add or change its features, if they are
  798. conscientious they will change the manual too--so they can provide
  799. accurate and usable documentation with the modified program. A manual
  800. which does not allow programmers to be conscientious and finish the
  801. job, does not fill our community's needs.
  802.  
  803. Some kinds of limits on how modifications are done pose no problem. For
  804. example, requirements to preserve the original author's copyright
  805. notice, the distribution terms, or the list of authors, are ok. It is
  806. also no problem to require modified versions to include notice that
  807. they were modified, even to have entire sections that may not be
  808. deleted or changed, as long as these sections deal with nontechnical
  809. topics. These kinds of restrictions are not a problem because they
  810. don't stop the conscientious programmer from adapting the manual to fit
  811. the modified program. In other words, they don't block the free
  812. software community from making full use of the manual.
  813.  
  814. However, it must be possible to modify all the *technical* content of
  815. the manual, and then distribute the result in all the usual media,
  816. through all the usual channels; otherwise, the restrictions do obstruct
  817. the community, the manual is not free, and we need another manual.
  818.  
  819. Will free software developers have the awareness and determination to
  820. produce a full spectrum of free manuals? Once again, our future depends
  821. on philosophy.
  822.  
  823. We must talk about freedom
  824.  
  825. Estimates today are that there are ten million users of GNU/Linux
  826. systems such as Debian GNU/Linux and Red Hat Linux. Free software has
  827. developed such practical advantages that users are flocking to it for
  828. purely practical reasons.
  829.  
  830. The good consequences of this are evident: more interest in developing
  831. free software, more customers for free software businesses, and more
  832. ability to encourage companies to develop commercial free software
  833. instead of proprietary software products.
  834.  
  835. But interest in the software is growing faster than awareness of the
  836. philosophy it is based on, and this leads to trouble. Our ability to
  837. meet the challenges and threats described above depends on the will to
  838. stand firm for freedom. To make sure our community has this will, we
  839. need to spread the idea to the new users as they come into the
  840. community.
  841.  
  842. But we are failing to do so: the efforts to attract new users into our
  843. community are far outstripping the efforts to teach them the civics of
  844. our community. We need to do both, and we need to keep the two efforts
  845. in balance.
  846.  
  847. "Open Source"
  848.  
  849. Teaching new users about freedom became more difficult in 1998, when a
  850. part of the community decided to stop using the term "free software"
  851. and say "open source software" instead.
  852.  
  853. Some who favored this term aimed to avoid the confusion of "free" with
  854. "gratis"--a valid goal. Others, however, aimed to set aside the spirit
  855. of principle that had motivated the free software movement and the GNU
  856. project, and to appeal instead to executives and business users, many
  857. of whom hold an ideology that places profit above freedom, above
  858. community, above principle. Thus, the rhetoric of "open source" focuses
  859. on the potential to make high quality, powerful software, but shuns the
  860. ideas of freedom, community, and principle.
  861.  
  862. The "Linux" magazines are a clear example of this--they are filled with
  863. advertisements for proprietary software that works with GNU/Linux. When
  864. the next Motif or Qt appears, will these magazines warn programmers to
  865. stay away from it, or will they run ads for it?
  866.  
  867. The support of business can contribute to the community in many ways;
  868. all else being equal, it is useful. But winning their support by
  869. speaking even less about freedom and principle can be disastrous; it
  870. makes the previous imbalance between outreach and civics education even
  871. worse.
  872.  
  873. "Free software" and "open source" describe the same category of
  874. software, more or less, but say different things about the software,
  875. and about values. The GNU Project continues to use the term "free
  876. software", to express the idea that freedom, not just technology, is
  877. important.
  878.  
  879. Try!
  880.  
  881. Yoda's philosophy ("There is no `try'") sounds neat, but it doesn't
  882. work for me. I have done most of my work while anxious about whether I
  883. could do the job, and unsure that it would be enough to achieve the
  884. goal if I did. But I tried anyway, because there was no one but me
  885. between the enemy and my city. Surprising myself, I have sometimes
  886. succeeded.
  887.  
  888. Sometimes I failed; some of my cities have fallen. Then I found another
  889. threatened city, and got ready for another battle. Over time, I've
  890. learned to look for threats and put myself between them and my city,
  891. calling on other hackers to come and join me.
  892.  
  893. Nowadays, often I'm not the only one. It is a relief and a joy when I
  894. see a regiment of hackers digging in to hold the line, and I realize,
  895. this city may survive--for now. But the dangers are greater each year,
  896. and now Microsoft has explicitly targeted our community. We can't take
  897. the future of freedom for granted. Don't take it for granted! If you
  898. want to keep your freedom, you must be prepared to defend it.
  899.  
  900. Copyright (C) 1998 Richard Stallman
  901.  
  902. Verbatim copying and distribution of this entire article is permitted
  903. in any medium, provided this notice is preserved.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement