от Ричард Столмън(10-10-2001)

рейтинг (65)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

GNU операционната система и движението за отворен код (Free Software Movement) [Част 1]
Превод: Андрю Иванов
Адрес на оригинала: http://www.oreilly.com/catalog/opensources/book/stallman.html

Ричард Столмън

Първата общност разменяща софтуер

Richard Stallman Когато започнах работа в лабораторията за изкуствен интелект (AI) в MIT (Масачузетския Технологичен Институт) през 1971, аз станах част от една общност, която си разменяше софтуер и съществуваше от години. Разменянето на софтуера не беше ограничено само до нашата конкретна общност; тази практика е стара, колкото и компютрите, както и разменянето на рецепти е старо, колкото и готвенето. Но при нас тази практика беше особено силно изразена.

AI лабораторията използваше операционна система с времеделение (time-sharing OS) наречена ITS (the Incompatible Timesharing System), която хакерите [1] от лабораторията ни бяха замислили и написали на асемблер за Digital PDP-10, един от големите компютри през тази ера. Като член на тази общност - хакер от екипа - моята работа се състоеше в подобряването на тази система.

Ние не наричахме софтуера "свободен", защото този термин все още не съществуваше, но той си беше точно такъв. Когато хора от друг университет или друга общност искаха да пренесат (портират) наша програма, ние с удоволствие им го позволявахме. Ако случайно някой видеше друг да използва непозната или интересна програма, винаги можеше да помоли да разгледа изходния код, така че да може да го използва, променя или да използва части от него за направата на нова програма.

Разпадането на Общността

Ситуацията се промени драстично през началото на 80-те, когато Digital спря PDP-10 серийте. Архитектурата на PDP-10, елегантна и мощна през 60-те, не можеше да се разшири до големите адресни пространства, които станаха възможни през 80-те. Това означаваше, че почти всички програми, съставящи ITS, излизат от употреба.

По това време общността на хакерите в AI лабораторията се беше разпаднала не много отдавна. През 1981, компанията Symbolics беше наела почти всички хакери от AI лабораторията, а обезлюдената общност беше неспособна да се грижи за себе си. (Книгата "Хакери", от Стиив Леви, описва тези събития, и дава ясна представа за тази общност в началото). Когато AI лабораторията се сдоби с нов PDP-10 през 1982, администраторите решиха да използват системата с времеделение на Digital, която не беше свободен софтуер, вместо ITS.

Модерните компютри през тази ера, като VAX или 68020, имаха свои операционни системи, но нито една не беше свободен софтуер: трябваше да се подписва договор дори само за изпълнимо копие.

Това означаваше, че първата стъпка към използването на компютър беше да обещаеш да не помагаш на съседа. Кооперативните общности бяха забранени. Правилото, създадено от собствениците на софтуера, беше: "Ако споделите нещо със съседа, това значи, че сте пират. Ако искате някакви промени, помолете ни да ги направим."

Идеята, че социалната система на собственическия софтуер - системата, която ви заявява, че не ви е разрешено да споделяте или променяте софтуера -- е антисоциална. Че е неетична, че просто е погрешна, може да е изненада за някои читатели. Но какво друго можем да кажем за система, основана на разделение и поддържане на потребителите в безпомощност? Читателите, които смятат тази идея за изненадваща, може би просто са възприели тази социална система като даденост или са я съдили въз основа на условията, предложени от собственическия софтуеререн бизнес. Издателите на софтуер работиха дълго и упорито, за да убедят хората, че има само един начин да се погледне на въпроса.

Когато издателите на софтуер говорят за "отстояване" на техните "права" или за "спиране на пиратството", това, което те казват, в действителност е второстепенно. Истинското послание на тези изказвания е в неизказаните допускания, които те приемат за даденост; а от обществеността се очаква да ги приеме без критика. И така нека ги разгледаме.

Едно допускане е, че софтуерните компании имат неоспоримо естествено право да притежават софтуер, и така да имат власт над всичките му потребители. (Ако това беше естествено право, то без значение колко вреда причинява на обществото, ние не бихме могли да протестираме.) Интересно е, че американската коституция и правни традиции отхвърлят подобно виждане; авторското право не е естествено право, а изкуствено създадено монополно право, наложено от държавата, което ограничава естественото право на потребителите да копират.

Друго неизказано допускане е, че единственото важно нещо относно софтуера е каква работа можете да свършите с него - че ние, компютърните потребители, не бива да се тревожим какво общество ни е разрешено да имаме.

Трето предположение, е че не бихме имали използваем софтуер (или никога не бихме имали програми за тази или онази конретна задача), ако не предложим на дадена компания власт над потребителите на програмата й. Това предположение може да е изглеждало правдоподобно преди движението за свободен софтуер да демонстрира, че можем да създадем изобилие от полезен софтуер без да го оковаваме във вериги.

Ако откажем да приемем тези предположения и съдим въз основа на здравия разум и морала, който поставя потребителите на първо място, достигаме до доста по-различни заключения. Потребителте на компютри трябва да са свободни да модифицират програмите, за да задоволят своите нужди, да са свободни да споделят софтуер, защото да помагаш на други хора е в основата на обществото.

Тук няма място за пълно описание на причините зад това заключение, затова ви насочвам към тази web страница: http://www.gnu.org/philosophy/why-free.html.

Напълно морален избор

След като общността се разпадна, да се продължава по старому беше невъзможно. Вместо това, аз се изправих пред морален избор.

По-лесният избор беше да се присъединя към собственическия софтуерен свят, подписвайки договори и обещавайки да не помагам на ближния-хакер. Най-вероятно и аз щях да разработвам софтуер, който да бъде разпространяван с подобни договори, оказвайки натиск по този начин над други хора да изоставят техните приятели.

Можех да направя пари по този начин и вероятно да се забавлявам пишейки код. Но знаех, че в края на кариерата си щях да погледна назад към изминалите години, през които съм изграждал стени, които да разделят хората, и да разбера, че съм прекарал живота си, за да направя света по-лошо място.

Вече бях изпитал какво е да си от страната на получаващия в едно ограничаващо споразумение, когато някой отказа на мен и на AI лабораторията в MIT сорс-кода на контролната програма за нашия принтер. (Липсата на определени възможности в тази програма превърна използването на принтера в нещо изключително разочароващо.) Така че не можах да си кажа, че ограничителните договори са нещо невинно. Бях много ядосан, когато този някой ни отказа; аз не можех да се обърна и да направя същото с всички останали.

Друг избор, честен, но неприятен, беше да напусна компютърното поприще. По този начин моите умения нямаше да бъдат използвани погрешно, но щяха да бъдат пропиляни. нямаше да съм виновен за разделянето и ограничаването на потребителите, но това щеше да се случи въпреки това.

И тъй, аз потърсих начин един програмист да направи нещо за добро. Запитах се дали има програма или програми, които бих могъл да напиша, така че да направя отново възможно съществуването на Общността.

Отговорът беше ясен: това, от което имаше най-напред нужда, беше операционна систма. Това е критичният софтуер за започване работа с компютър. С операционна система можете да направите много неща, без нея изобщо не можете да работите с компютъра. С една свободна операционна система бихме могли отново да имаме общност от подпомагащи се хакери и да поканим всеки да се присъедини. И всеки би могъл да използва компютър без да заговорничи и да изоставя своите приятели.

Като разработчик на операционни системи, аз имах подходящите умения за тази работа. И въпреки, че не можех да приема успеха за гарантиран, осъзнах, че съм избран за тази задача. Избрах да направя системата съвместима с Unix, така че да бъде преносима и Unix потребителите да могат лесно да преминат към нея. Името GNU беше избрано по силата на хакерска традиция, като рекурсивен акроним: "GNU's Not Unix."

Операционна система не означава само ядро, почти достатъчно за да изпълнява други програми. През 70-те, всяка операционна система, достойна за името си, включваше командни процесори, асемблери, компилатори, интерпретатори, дебъгери, текстови редактори, програми за електронна поща и още много други. ITS ги имаше, Multics също ги имаше, VMS също, както и Unix. GNU операционната система също щеше да ги включва. По-късно чух тези думи, приписвани на Хайлъл: [2]

Ако не съм себе си, кой ще бъда аз?

Ако съм сам за себе си, какво съм аз?

Ако не сега, кога?

Решението да започна проекта GNU беше базирано на същя дух.

"свободен" - като "свобода"

Терминът "свободен софтуер" (free software) понякога не се разбира правилно - цената тук няма нищо общо. Става въпрос за свобода. Затова, ето дефиниция за свободен софтуер. За вас, конкретния потребител, една програма е свободен софтуер, ако:

  • Имате свободата да използвате програмата за всякакви цели.
  • Имате свободата да променяте програмата, за да отговори на вашите нужди. (За да може това да се прилага ефективно на практика, трябва да имате достъп до сорс кода, тъй като да се правят промени в програма без сорс код е невероятно трудно.)
  • Сте свободни да разпространявате копия, или безплатно, или срещу заплащане.
  • Сте свободни да разпространявате модифицирани версии на програмата, така че общността да има полза от вашите подобрения.

След като "свободен" се отнася до свобода, а не цена, няма противоречие между продажбата на софтуер и свободният такъв. Всъщност, свободата да продаваш копия на програмите е изключително важна: колекциите свободен софтуер, продавани на CD-та са важни за общността, а продажбата им е важен начин за набиране на средства за разработване на свободен софтуер. Следователно, програма, която не може да бъде включена в подобна колекция, не е свободен софтуер.

Поради двусмислието на думата "свободен", дълго бяха търсени алтернативи, но никой не намери подходяща алтернатива. Английският език има повече нюанси от всеки друг, но му липсва една проста, недвусмислена дума, която да значи "свободен", както в свобода. Алтернативи като "освободен", "свобода" и "отворен" имат или погрешно значение, или друго неудобство.

GNU софтуер и GNU ОС

Разработването на цяла ОС е доста сложен проект. За да го упростя, реших да адаптирам и използвам съществуващи свободни програми, където е възможно. Например: още в самото начало реших да използвам TeX като основна програма за форматиране на текст; няколко години по-късно, реших да използвам системата X Window, вместо да пиша нова прозоречна система за GNU.

Поради това решение, GNU ОС не е просто колекция от GNU софтуер. GNU ОС включва програми, които не са GNU, програми, които са били разработени от други хора и техни собствени проекти за лични цели, но които можем да използваме, защото са свободен софтуер.

Начало на Проекта

През януари 1984 напуснах MIT и започнах да пиша GNU софтуер. Напускането на MIT беше наложително, за да не може MIT да попречи на разпространението на GNU като свободен софтуер. Ако бях останал в екипа, MIT можеше да предяви претенции за собственост на разработката и да наложи свои условия за разпространение или дори да я превърне в собственически софтуерен пакет. Нямах намерение да направя толкова много, само за да видя, как става безполезна за постигането на първоначалната цел: създаването на нова общност, споделяща софтуера си.

Въпреки това, проф. Уинстън, по това време ръководител на AI лабораторията, любезно ми предложи да използвам техниката на лабораторията.

Първите стъпки

Малко преди да започна проекта GNU, чух за Free University Compiler Kit (компилаторен пакет на свободния университет), познат като VUCK. (Холандската дума за "свободен" се пише с V.) Това беше компилатор с многоезикова поддръжка, в това число C и Pascal, а също така и поддържащ множество различни машини. Писах до автора му и попитах дали GNU може да го използва.

Той ми отговори присмехулно, заявявайки, че университетът бил свободен, но компилатора - не. Затова реших, че първата програма от проекта GNU ще бъде многоезиков, многоплатформен компилатор.

Надявайки се да избегна необходимостта да напиша сам целия компилатор, аз се сдобих със сорса на компилатора Pastel, който беше мултиплатформен и беше разработен във Lawrence Livermore Lab. Той поддържаше, и самият беше написан, на разширена версия на Pascal, направена да бъде език за системно програмиране. Добавих фронтенд на C и започнах да го портирам за компютър Motorola 68000. Но бях принуден да се откажа, когато открих, че компилаторът се нуждаеше от доста мегабайти стекове, а наличната 68000 Unix система допускаше само 64K.

Тогава открих, че компилаторът Pastel бе така устроен, че превръщаше целият файл подаван на входа му в синтактично дърво (syntax tree), превръщаше цялото синтактично дърво в поредица от "инструкции" и след това генерираше целият изходен файл, без никакви оптимизации. На този етап заключих, че ще трябва да напиша нов компилатор от нищото. Този компилатор сега е известен като GCC; нищо от компилатора Pastel не беше използвано в него; успях да адаптирам фронтенда на C, който бях написал. Но това стана няколко години по-късно; първо, се трудих върху GNU Emacs.

GNU Emacs

Започнах работа върху GNU Emacs през септември 1984, а в началото на 1985 той вече беше почти използваем. Това ми даде възможност да използвам Unix системи за редактиране; тъй като нямах желание да изучавам vi или ed, до този момент, аз използвах за редактиране други машини (не-Unix).

На този етап, хората започнаха да искат да използват GNU Emacs, което повдигна въпросът как да се разпространява. Разбира се, публикувах го в анонимния ftp сървър на компютъра в MIT, който използвах. (Така този компютър, prep.ai.mit.edu, стана най-важният ftp сайт, разпространяващ GNU; когато след няколко години той излезе от употреба, ние прехвърлихме името му на новия ни ftp сървър.) Но, по това време, много от заинтересованите не бяха включени в Internet и не можеха да получат копие по ftp. И така, въпросът беше - какво ще им кажа аз?

Можех да кажа: "Намерете някой приятел, който да има връзка с мрежата, който да ви направи копие." Или можех да направя това, което направих и с оригиналния PDP-10 Emacs - да кажа: "Изпратете ми лента и SASE, а аз ще ви ги върна със записан Emacs." Но аз нямах работа и търсех начини да изкарам пари от свободния софтуер. Затова обявих, че ще изпратя програмата на всеки, който я поиска, срещу $150. По този начин започнах дистрибуторски бизнес със свободен софтуер, предтеча на днешните компании, които разпространяват цели Linux базирани GNU системи.

Програмата свободна ли е за всеки потребител?

Ако една програма е свободен софтуер, когато тръгва от ръцете на автора си, това не значи непременно, че ще бъде свободен софтуер за всеки, до когото достига. Например, софтуерът от тип "публичен домейн" (public domain software - софтуер незащитен с авторски права) е свободен софтуер; но всеки може да направи модифицирана собственическа версия от него. Подобно, много безплатни програми са защитени с авторски права, но се разпространяват под елементарни лицензи, които позволяват създаването на собственически версии.

Натрапчив пример за този проблем е X Window System. Разработена в MIT, и пусната като свободен софтуер с непретенциозен permissive лиценз, системата скоро беше "осиновена" от различни компютърни компании. Те добавиха X към техните собственически Unix системи, само под формата на двоичен код, и под същите ограничителни споразумения. Тези копия на X не бяха свободен софтуер повече от конкретния Unix.

Разработчиците на X Window системата не взеха под внимание този проблем - те очакваха и предвиждаха това да се случи. Тяхната цел не беше свободата, а само "успехът", разбиран в смисъл "да имаш много потребители". Тях не ги беше грижа дали тези потребители ще имат свобода, важното беше да са многобройни.

Това доведе до парадоксална ситуация, в която два различни метода за измерване на свободата даваха два различни отговора на въпроса "Тази програма свободнен софтуер ли е?" Ако съдите на база на свободата на условията за разпространение, давана от MIT, бихте казали, че X е свободен софтуер. Но ако измерехте свободата на обикновения потребител на X, щяхте да признаете, че не става въпрос за свободен софтуер. Повечето потребители на X използваха версиите, идващи с не-свободните Unix системи, а не свободната версия.

Copyleft и GNU GPL

Целта на GNU беше да даде на потребителите свобода, а не само да бъде популярен. Затова имаше нужда от условия за разпространение, които да предотвратяват превръщането на GNU софтуера в собственически. Метода, който използваме, се нарича "copyleft." [3]

Copyleft метода използва закона за авторското право, но леко го извърта, така че да служи за точно противоположни цели на тези, за които обичайно се използва: вместо средство за "приватизиране" на софтуера, той става средство, обезпечаващо свободата на софтуера.

Генералната идея на copyleft метода е, че даваме право на всеки да използва наша програма, да я копира, променя и разпространява модифицирани версии, но не и право да добавя свои ограничителни условия. По този начин най-важните и основни свободи, които дефинират софтуера като свободен, са гарантирани на всеки, който притежава копие на програмата; тези права стават неотчуждаеми.

За ефективност на copyleft-а, модифицираните версии на нашата програма трябва също да са свободни. Това гарантира, че разработката, базирана на нашата, ще бъде на разположение на общността ако бъде публикувана. Когато програмисти, работещи като програмисти, решат доброволно да подобрят GNU софтуер, copyleft-а възпира техните работодатели да заявят: "Не можете да публикувате тези промени, защото ще ги използваме за създаването на наша собственическа версия на тази програма."

Изискването промените да бъдат достъпни за общността е много важно, ако искаме да осигурим свобода за всеки потребител на програмата. Компаниите, които узурпираха X Window системата, обикновено правеха някои промени, за да могат да я пренесат на своите системи и хардуер. Тези промени бяха малки, сравнени с големината на X, но не бяха незначителни. Ако променянето беше извинение за ограничаване на свободата на потребителите, би било лесно за всеки да извлече полза от това извинение.

Сходен е въпросът за смесването на свободни програми с не-свободен код. Подобна комбинация неизбежно би била не-свободна; които и свободи да липсват за ограничената, не-свободна част, биха липсвали и на целият пакет. Да бъдат допуснати подобни комбинации би отворило дупка, достатъчно голяма, за да може и кораб да потъне в нея. Ето защо изключително важно изискване за copyleft метода е тази пролука да бъде запушена -- всяка програма добавена към или комбинирана с copyleft програма, трябва да е такава, че получената версия да е свободна и съвместима с copyleft.

Специфичната реализация на идеята copyleft, която използваме за повечето GNU софтуер, се нарича GNU General Public License (Общ Обществен Лиценз GNU), или накратко GNU GPL. Разполагаме и с други разновидности на copyleft, които се използват при специфични обстоятелства. Ръководствата на GNU също са защитени с copyleft, но използват много по-малка разновидност на copyleft, понеже не се нуждаят от цялата сложност на GNU GPL.

Free Software Foundation

Тъй като интереса към Emacs нарастваше, а и други хора се включиха в проекта GNU, решихме, че е време отново да потърсим капитал. Така през 1985 създадохме Free Software Foundation (Фондация "Свободен Софтуер"), освободена от данъци благотворителна организация, занимаваща се с разработването на свободен софтуер. FSF пое и разпространяването на Emacs на магнитни ленти; по-късно тя разшири тази си дейност, добавяйки и друг свободен софтуер (GNU и не-GNU) и продавайки ръководства.

FSF приема и дарения, но повечето от приходите винаги са идвали от продажби - копия на свободен софтуер и други подобни услуги. Днес тя продава CD-та със сорс код, CD-та с изпълними файлове, печатни ръководства (всички с право за редистрибутиране и модифициране) и Deluxe дистрибуции (в които се изгражда цяла софтуерна колекция за избрана платформа).

Наетите във Free Software Foundation са написали и поддържат голям брой GNU софтуерни пакети. Два значими пакета са C библиотеката и shell-ът. Библиотеката GNU C се използва от всяка програма, работеща на GNU/Linux система, за комуникация с Linux. Тя беше разработена от член на екипа на Free Software Foundation - Roland McGrath. Shell-ът използван на повечето GNU/Linux системи е BASH - the Bourne Again Shell, [4], който беше разработен от работещият в FSF Брайън Фокс.

Разработката на тези програми беше извършена от фондацията, защото целта на проекта GNU не беше просто създаването на инструменти или среда за разработки. Целта беше цяла операционна система, а тези програми бяха необходими за постигането на целта ни.

Край на част 1


1. Използването на думата "хакер" като "човек, който разбива сигурността на машините и върши злини" е объркване насадено от средствата за масова информация. Ние хакерите, отказваме да приемем това значение на думата и продължаваме да я използваме за да обозначим "някой, който обича да програмира и се радва когато разбира много добре програмирането".

2. Като атеист, аз не следвам религиозни водачи, но понякога откривам че се възхищавам на някои от нещата който са изрекли.

3. През 1984 или 1985, Дон Хопкинс (личност с голямо въображение) ми изпрати писмо. На плика той беше написал няколко изумителни изречения, включително и това : "Copyleft--all rights reversed." Аз използвах думата "copyleft" за да наименовам концепцията за разпространение, която разбработвах по това време.

4. "Bourne Again Shell" е майтап от името "Bourne Shell," който беше стандартния шел за Unix.



<< Историята на BSD(част 1) | Историята на UNIX >>