This translation may not reflect the changes made since 2010-09-23 in the English original.

Please see the Translations README for information on maintaining translations of this article.

Линукс и система GNU

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

За повече информация вижте също ЧЗВ за GNU/Линукс и Защо 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%. (Съотношението през 2008 г. е подобно: в основното хранилище на gNewSense Линукс е около 1.5%, а пакетите на GNU са 15%.) Така че ако трябва да изберете име на системата по това кой е написал програмите, най-правилният и единствен избор би бил „GNU“.

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

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

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

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

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

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

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

Издаването на свободна дистрибуция на GNU/Линукс не е просто въпрос на елиминиране на разните несвободни програми. В днешни дни, стандартната версия на Линукс също съдържа несвободни програми. Те са предназначени да се зареждат във входно/изходни устройства при стартирането на системата и са включени, под формата на дълги последователности от числа, в „изходния код“ на Линукс. Така че поддържането на свободни дистрибуции на GNU/Линукс снес налага и поддържането на свободна версия на Линукс.

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

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

Послепис

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

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

Бележки:

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