Линукс и проекта GNU

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

За да научите повече по този въпрос, може да прочетете нашите ЧЗВ за GNU/Линукс и статията Потребители на GNU, които никога не са чували за GNU.

Много компютърни потребители използват променена версия на системата GNU всеки ден, без да го осъзнават. Поради странно стечение на обстоятелствата, версията на GNU, която широко се използва днес, е повече позната като „Линукс“, и много потребители не са наясно за дълбоката връзка с проекта GNU.

Наистина има Линукс и хората го използват, но това не е операционната система. Линукс е ядрото — онази програма в системата, която заделя ресурсите на машината за другите програми, които изпълнявате. Ядрото е съществена част от една операционна система, но е безполезно само по себе си. То може да функционира само в контекста на завършена операционна система. Линукс се използва обикновено в комбинация с операционната система GNU — цялата система всъщност е GNU, като Линукс функционира като нейно ядро.

Много потребители не са напълно наясно за разликата между ядрото, което е Линукс, и цялата система, която те също наричат „Линукс“. Двусмислената употреба на наименованието не спомага за изясняването на това недоразумение. Тези потребители често мислят, че Линус Торвалдс е разработил цялата система през 1991 г. с малко помощ.

Програмистите обикновено знаят, че Линукс е ядро. Но тъй като обикновено са чували цялата система да се нарича „Линукс“, те често си представят история, която да оправдава кръщаването на цялата система на името на ядрото. Например, мнозина вярват, че след като Линус Торвалдс е написал ядрото Линукс, неговите потребители са се огледали наоколо за друг свободен софтуер, който би могъл да бъде включен, и са открили (съвсем случайно), че почти всичко необходимо за изготвянето на система, подобна на „Юникс“, вече било налично.

Това, което открили, съвсем не било по случайност — това е било почти завършената система GNU. Наличният свободен софтуер се превръща в завършена система, защото проектът GNU е работил за изграждането ѝ от 1984 г. В Манифеста на GNU ние си поставихме за цел разработването на свободна операционна система, подобна на „Юникс“, наречена GNU. Първоначалното обявление на проекта GNU също очертава някои от оригиналните планове за системата GNU. По времето, когато Линукс бе написан, GNU беше почти завършена.

Повечето проекти за свободен софтуер имат за цел разработката на определена програма за извършването на определена задача. Например, Линус Торвалдс се е заел да напише ядро, подобно на Юникс (Линукс); Доналд Кнут се е заел да напише програма за форматиране на текст (TeX); Боб Шайфлер се е заел да разработи графична система с прозорци (X Window system). Естествено е да определяме приноса на този вид проект чрез специфичните програми, които са произлезли от него.

Ако се опитаме да определим приноса на проекта GNU по този начин, какво бихме заключили? Един производител на CD-ROM открил, че в тяхната „Линукс дистрибуция“ софтуерът на GNU бил най-големия контингент — около 28% от общия изходен код, и това включвало някои основни и необходими компоненти, без които изобщо не би могло да има система. Линукс бил само около 3%. Така че ако трябва да изберете име на системата по това кой е написал програмите, най-правилният и единствен избор би бил „GNU“.

Но ние не мислим, че това е правилният начин да се подходи към въпроса. Проектът GNU не е бил, и не е, проект за разработване на отделни софтуерни пакети. Не е бил проект за разработката на компилатор на Си, въпреки че ние сме го направили. Не е бил проект за разработването на текстов редактор, въпреки, че ние сме разработили такъв. Целта на проекта GNU беше да се разработи цялостна операционна система, подобна на „Юникс“ — GNU.

Много хора имат съществен принос към свободния софтуер в системата и всички те заслужават признание. Но причината това да е интегрирана система, а не само колекция от полезни програми, е защото проектът GNU се е бил заел да я изгради като такава. Ние направихме списък с програми, необходими за завършена свободна система и систематично написахме или намерихме хора, които да напишат, всичко от списъка. Написахме съществени, но не толкова вълнуващи (1) компоненти, понеже не може да има система без тях. Някои от нашите системни компоненти, инструментите за програмиране, станаха известни сред програмистите сами по себе си. Но ние написахме и много компоненти, които не са инструменти (2). Дори разработихме и игра на шах, GNU Chess, понеже една цялостна система има нужда и от добри игри.

До средата на 90-те години вече бяхме изградили цялата система без ядрото (работихме също и по ядро, GNU Hurd, което се изпълнява върху микроядрото Mach). Разработката на това ядро се оказа доста по-трудна, отколкото очаквахме; GNU Hurd започна да работи стабилно през 2001 г.. Сега започваме подготовката за действително издание на системата GNU, с GNU Hurd.

За щастие, нямаше нужда да чакаме за Hurd, понеже Линукс беше на разположение. Когато Линус Торвалдс написа Линукс, той запълни последната голяма празнина. От този момент нататък хората вече можеха да комбинират Линукс със системата GNU, за да изградят цялостна свободна система, т.е. версия на системата GNU, базирана на Линукс, или съкратено — GNU/Линукс. Ранните бележки по изданието на Линукс припознаваха факта, че Линукс е ядро, използвано с части от GNU: „Повечето от инструментите, използвани с линукс, са софтуер на GNU и под copyleft на GNU. Тези инструменти не са в дистрибуцията — питайте мен (или GNU) за повече информация.“

Събирането им заедно звучи просто, но не беше незначителна работа. Бяха нужни съществени промени за някои от компонентите на GNU (3), за да работят с Линукс. Интегрирането на завършена система като дистрибуция, която да работи и да бъде лесна за инсталиране също беше огромна задача. Тя изискваше разрешаването на въпроса как да се инсталира и стартира системата — проблем, който ние не бяхме подхванали, защото още не бяхме стигнали до него. Хората, които разработиха различните дистрибуции на системата, допринесоха значително.

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

Ние използваме системи GNU, базирани на Линукс, за цялата си работа и се надяваме, че и вие ще ги използвате. Днес има много варианти на системата GNU/Линукс (често наричани „дистрибуции“). Повечето от тях включват несвободен софтуер — техните разработчици следват философията, свързана с Линукс, вместо тази на GNU. Но има и напълно свободни дистрибуции на GNU/Линукс.

Независимо дали използвате GNU/Линукс или не, молим ви да не обърквате хората, като използвате името „Линукс“ двусмислено. Линукс е ядрото, един от основните и съществени компоненти на системата. Системата като цяло е малко или много системата GNU, с добавен Линукс. Когато говорите за тази комбинация, моля наричайте я „GNU/Линукс“.

Ако искате да направите хипервръзка за повече информация за „GNU/Линукс“, тази страница и http://www.gnu.org/gnu/the-gnu-project.html са добър избор. Ако пък споменавате ядрото Линукс и искате да добавите връзка за повече информация, то сполучлив адрес, който можете да използвате, е http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?Linux.

Допълнение: Освен GNU, един друг проект независимо издаде свободна операционна система, подобна на Юникс. Тази система е позната като BSD и е била разработена в Калифорнийския университет в Бъркли. Тя беше несвободна през 80-те, но стана свободна в началото на 90-те години. Една свободна операционна система, съществуваща днес, е почти със сигурност или вариант на системата GNU, или разновидност на системата BSD.

Хората понякога питат дали BSD също е версия на GNU, както GNU/Линукс. Разработчиците на BSD бяха вдъхновени да направят кода си свободен софтуер по примера на проекта GNU и определени призиви на активисти на GNU помогнаха те да бъдат убедени, но кодът на BSD има малко припокриване с GNU. Днес системите BSD използват някои програми на GNU, както и системата GNU и вариантите ѝ използват някои програми на BSD. Но взети заедно, те са две различни системи, които са се развили отделно. Разработчиците на BSD не просто са написали ядро, което после са добавили към системата GNU, така че име като GNU/BSD би било неподходящо.(4)

Бележки:

  1. Тези не чак толкова вълнуващи, но съществени компоненти включват асемблера на GNU (GAS) и свързващата програма (GLD), които вече са част от пакета GNU Binutils, GNU tar, и още.
  2. Например, интерпретатора на обвивката Bourne Again SHell (BASH), интерпретатора на PostScript Ghostscript, и библиотеката на GNU за Си не са програмни инструменти. Нито пък GNUCash, GNOME и GNU Chess.
  3. Например, библиотеката на GNU за Си.
  4. От друга страна, в годините след написването на тази статия, библиотеката на GNU за Си беше адаптирана към ядрото FreeBSD, което направи възможно комбинирането на системата GNU с това ядро. Точно както и GNU/Линукс, това са всъщност варианти на GNU и следователно се наричат GNU/kFreeBSD и GNU/kNetBSD в зависимост от това с кое ядро работи системата. Обикновените потребители на типична работна среда трудно биха могли да различат GNU/Линукс и GNU/*BSD.

Други преводи на тази страница