Цей переклад може не відображати змін, внесених із 2019-03-01 у англійський оригінал.

Ви можете поглянути на ці зміни. Будь-ласка перегляньте файл README стосовно перекладів для того, щоб отримати інформацію про координування перекладів цієї статті.

Linux і система GNU

Річард Столмен

Подробивці можна знайти на сторінках “ЧаП GNU/Linux” та “Чому GNU/Linux?”

Багато користувачів комп'ютерів кожен день запускають модифіковану версію системи GNU навіть не усвідомлюючи цього. В силу особливого повороту подій версія GNU, яку сьогодні широко використовують, часто називається “Linux”, і багатьом з її користувачів не відомо, що в основному це система GNU, розроблена проектом GNU.

Там дійсно є Linux, і ці люди використовують її, але це тільки частина системи, якою вони користуються. Linux — це ядро — системна програма, що виділяє ресурси іншим програмам, які ви запускаєте. Ядро   важлива частина операційної системи, але саме по собі воно даремне; воно може функціонувати тільки в складі повної операційної системи. Linux зазвичай застосовують у комбінації з операційною системою GNU: вся система являє собою в основному GNU з додаванням Linux, тобто GNU/Linux. Всі так звані дистрибутиви “Linux” насправді є дистрибутивами GNU/Linux.

Багато користувачів не розуміють, у чому різниця між ядром, тобто Linux, і цілою системою, яку вони також називають “Linux”. Неоднозначне вживання назви не сприяє розумінню цього. Ці користувачі часто думають, що Лінус Торвальдс розробив цілу операційну систему 1991   році, йому тільки трохи допомогли.

Програмісти, по суті, знають, що Linux — це ядро. Але оскільки вони нерідко чули, як всю систему теж називають “Linux”, вони часто уявляють собі історію, яка виправдала б найменування всієї системи по ядру. Наприклад, багато хто думають, що як тільки Лінус Торвальдс написав Linux (ядро), його користувачі озирнулися навколо пошуках інших вільних програм, щоб працювати з ним, і виявили, що (без якої б то не було особливої причини) майже все необхідне для побудови системи типу Unix вже під рукою.

Те, що вони виявили, не було випадковістю — це була не зовсім повна системою GNU. Доступні вільні програми склалися в повну систему, бо проект GNU працював над цим з 1984 року. У “Маніфесті GNU” ми поставили за мету розробити вільну систему типу Unix під назвою GNU. “Первісне оголошення” проекту GNU також окреслює деякі з початкових планів по системі GNU. До того часу, коли почалася розробка Linux, GNU була майже завершена.

Мета більшості проектів по створенню вільних програм - розробка певної програми для певної задачі. Наприклад, Лінус Торвальдс вирішив написати Linux, ядро типу Unix; Дональд Кнут вирішив написати TeX, програму верстки тексту; Боб Шейфлер вирішив розробити віконну систему (систему X Window). Природно вимірювати внесок такого роду проекту конкретними програмами, які прийшли з цього проекту.

Якщо б ми спробували виміряти таким чином внесок проекту GNU, до якого б висновку ми прийшли? Один з постачальників компакт-дисків встановив, що в їх “дистрибутиві Linux” програми GNU   найбільший єдиний масив   близько 28% всього вихідного коду; до їх складу входять деякі суттєві компоненти, без яких не могло б бути; власне Linux становить близько 3%. (У 2008 році пропорції схожі: розділ “main” gNewSense Linux становить   1,5%, а GNU — 15%.) Отже, якщо б ви збиралися вибрати назву системи на підставі того, хто написав програми в цій системі, найвідповіднішим вибором одного компонента було б “GNU”.

Але можна поглянути глибше. Проект GNU не був і не є проектом по розробці певних пакетів програм. Це не був проект по розробці компілятора C, хоча ми зробили це. Це не був проект по розробці текстового редактора, хоча ми розробили його. Проект GNU постановив розробити повну вільну операційну систему типу Unix: GNU.

Багато осіб зробили серйозний внесок у вільні програми цієї системи, і всі вони заслуговують вдячності за свої програми. Але причина, по якій це є цілісною системою   а не тільки набором корисних програм   те, що проект GNU постановив зробити це такою системою. Ми склали список програм, необхідних, щоб вільна система була повною, і систематично відшукували, писали або відшукували людей для написання всього, що стояло в списку. Ми написали істотні, але не вражаючі(1) компоненти, тому що без них не можна отримати систему. Деякі з компонентів нашої системи (засоби програмування) стали популярні самі по собі серед програмістів, але ми написали багато компонентів, які не є засобами розробки(2). Ми навіть розробили програму для ігри в шахи, GNU Chess, тому що в повній системі ігри теж повинні бути.

До початку дев'яностих ми склали всю систему, крім ядра. Ми приступили і до ядра, GNU Hurd, яке працює на Mach. Розробка цього ядра йшла набагато важче, ніж ми очікували; ядро GNU Hurd стало надійно працювати в 2001 році, але воно далеко не готове для загального користування.

На щастя, завдяки Linux нам не довелося чекати Hurd. Коли Торвальдс випустив Linux в 1992 році, це заповнило останній серйозний пробіл у системі GNU. Тоді люди змогли поєднувати Linux з системою GNU [1], щоб скласти повну вільну систему: версію GNU, яка містила також Linux; іншими словами, систему GNU/Linux.

Змусити їх працювати разом не було простою задачею. Деякі компоненти GNU(3) вимагали істотних змін, щоб вони працювати з Linux. Об'єднання в повну систему в єдиному дистрибутиві, який би працював “без підгонки”, було теж великою роботою. Це вимагало вирішення питань, пов'язаних із встановленням і завантаженням системи   проблема, за яку ми тоді ще не вхопилися, тому що у нас до цього поки не дійшли руки. Таким чином, люди, які розробили різні дистрибутиви системи, виконали велику і важливу роботу. Але це було роботою, яку, по самій природі речей,обов'язково хто-небудь виконав би.

Проект GNU, підтримує системи GNU/Linux так само добре, як самусистему GNU. ФВПЗ фінансував доопрацювання розширень бібліотеки GNU C, пов'язаних з Linux, тому тепер вони добре підігнані один до одного, і найновіші системи GNU/Linux використовують поточну версію бібліотеки без змін. ФВПЗ фінансував також на ранній стадії розробку Debian GNU/Linux.

Сьогодні є багато різних варіантів системи GNU/Linux (часто званих “дистрибутивами»). Більшість з них включає невільні програми   їхні розробники дотримуються філософії Linux, а не GNU. Але, звісно, є повністю вільні дистрибутиви GNU/Linux. ФВПЗ надає технічні ресурси для дистрибутиву gNewSense.

Щоб створити вільний дистрибутив GNU/Linux, недостатньо просто виключити різні невільні програми. В даний час звичайна версія Linux теж містить невільні програми. Ці програми призначені для запису в пристрої введення-виведення, коли система завантажується, і вони включені у вигляді довгих послідовностей чисел у “вихідний код” Linux. Таким чином, підтримка вільних дистрибутивів GNU/Linux зараз включає також і підтримку вільної версії Linux.

Чи використовуєте ви GNU/Linux чи ні, не вводьте громадськість в оману двозначним вживанням назви “Linux”. Linux — це ядро, одна з необхідних складових системи. Система в цілому — це в основному система GNU з додаванням Linux. Коли ви говорите про це сполучення, то, будь ласка, називайте його “GNU/Linux”.

Якщо ви хочете послатися для довідок на “GNU/Linux”, цясторінка і http://www.gnu.org/gnu/the-gnu-project.html - хороші приклади. Якщо ви згадуєте Linux(ядро) і хочете додати посилання для довідок, http://foldoc.org/foldoc/linux - хороша адреса дляцього.

Доповнення

Крім GNU, був ще один проект, який створив незалежно вільну операційну систему типу Unix. Ця система відома як BSD. Вона була розроблена в Каліфорнійському університеті в Берклі і спершу була невільною у вісімдесяті, але стала вільною на початку дев'яностих. Будь-яка з вільних операційних систем, існуючих сьогодні,(4) майже напевно є варіантом системи GNU, або різновидом системи BSD.

Іноді запитують, чи є BSD також версією GNU, подібно GNU/Linux. Розробники BSD зробили свої програми вільними, наслідуючи приклад проекту GNU, і відкриті заклики активістів GNU допомогли переконати їх, але у вихідних кодах програм мало спільних місць з кодами 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 та бібліотека C GNU не є засобами програмування. Також до них не відносяться GNUCash, GNOME і GNU Chess.
  3. Наприклад, бібліотека C GNU.
  4. З тих пір, як були написані ці рядки, була розроблена майже повністю вільна операційна система, подібна Windows, але з технічної точки зору вона зовсім не схожа з GNU або Unix, тому насправді це до справи не відноситься. Ядро Solaris здебільшого зробили вільним, але якщо б ви захотіли зробити з нього вільну систему, крім заміни відсутніх частин ядра, вам треба було б також покласти її в GNU або BSD.
  5. З іншого боку, за роки, що минули з часу написання цієї статті, бібліотека C GNU була перенесена на кілька версій ядра BSD, що дозволило напряму з'єднувати систему GNU з цим ядром. Як у випадку з GNU/Linux, це дійсно варіанти GNU і тому називаються GNU/kFreeBSD і GNU/kNetBSD залежно від ядра системи.Звичайні користувачі типових настільних комп'ютерів з труднощами можуть відрізнитиGNU/Linux від GNU/*BSD.