Проє́кт GNU ([ɡnuː])[3] — це безкоштовне програмне забезпечення, проєкт масової співпраці, про який Річард Столмен оголосив 27 вересня 1983 року. Його мета — надати користувачам комп'ютерів свободу та контроль у використанні своїх комп'ютерів і комп'ютерних пристроїв шляхом спільної розробки та публікації програмного забезпечення, яке дає кожному право вільно запускати програмне забезпечення, копіювати та поширювати його, вивчати та змінювати. Програмне забезпечення GNU надає ці права у своїй ліцензії.
Щоб гарантувати, що все програмне забезпечення комп'ютера надає його користувачам усі права на свободу (використання, спільний доступ, вивчення, змінення), навіть найбільш фундаментальна та важлива частина, операційна система (включаючи всі її численні допоміжні програми) повинне бути вільним програмним забезпеченням. Згідно з його маніфестом, основною метою проєкту було створити безкоштовну операційну систему, і включити, якщо можливо, «все корисне, що зазвичай постачається з системою Unix, щоб можна було обійтися без будь-якого програмного забезпечення, яке не є безкоштовним». Столмен вирішив назвати цю операційну систему GNU (рекурсивна абревіатура, що означає "GNU не Unix! "), заснувавши її дизайн на основі UNIX, власної операційної системи.[4] Розробка була розпочата в січні 1984 року. У 1991 році з'явилося ядро Linux, розроблене за межами проєкту GNU Лінусом Торвальдсом[5] а в грудні 1992 року воно стало доступним за версією 2 GNU General Public License.[6] У поєднанні з утилітами операційної системи, які вже були розроблені в рамках проєкту GNU, це дозволило створити першу операційну систему, яка була вільним програмним забезпеченням, широко відома як Linux.[7][8]
Поточна робота проєкту включає розробку програмного забезпечення, підвищення обізнаності, політичну кампанію та обмін новими матеріалами.
Річард Столмен оголосив про свій намір розпочати кодування проєкту GNU у повідомленні Usenet у вересні 1983 року[9]
Коли проєкт GNU тільки розпочався, у них був текстовий редактор Emacs з Lisp для написання команд редактора, налагоджувач рівня джерела, генератор синтаксичних аналізаторів, сумісний з yacc, і компонувальник[10]. Система GNU вимагала власного компілятора C та інструментів, щоб бути вільним програмним забезпеченням, тому їх також потрібно було розробити. До червня 1987 року проєкт накопичив і розробив безкоштовне програмне забезпечення для асемблера, майже закінчений портативний оптимізаційний компілятор C (GCC), редактор (GNU Emacs) і різні утиліти Unix (такі як ls, grep, awk, make і ld)[11]. У них було початкове ядро, яке потребувало додаткових оновлень.
Після того, як ядро та компілятор були завершені, GNU можна було використовувати для розробки програм. Головною метою було створити багато інших програм, які будуть схожі на систему Unix. GNU міг запускати програми Unix, але не був ідентичним йому. GNU включив довші імена файлів, номери версій файлів і файлову систему, захищену від збоїв. Маніфест GNU був написаний, щоб отримати підтримку та участь інших для проєкту. Програмістів заохочували брати участь у будь-якому аспекті проєкту, який їх цікавив. Люди могли пожертвувати кошти, комп'ютерні частини або навіть власний час, щоб написати код і програми для проєкту[4].
Походження та розвиток більшості аспектів проєкту GNU (і вільного програмного забезпечення загалом) описано в детальному описі довідкової системи Emacs. (C-h g запускає команду редактора Emacs describe-gnu-project .) Це така ж детальна історія, що й на їхньому вебсайті.
Маніфест GNU
Маніфест GNU був написаний Річардом Столменом, щоб отримати підтримку та участь у Проєкті GNU. У Маніфесті GNU Столмен перерахував чотири свободи, необхідні для користувачів програмного забезпечення: свобода запускати програму для будь-яких цілей, свобода вивчення механіки програми та її модифікації, свобода розповсюдження копій і свобода вдосконалювати та змінювати модифіковані версії для загальнодоступних. використання[12][13]. Для реалізації цих свобод користувачам потрібен був повний доступ до коду. Щоб код залишався безкоштовним і надавав його громадськості, Столмен створив Загальну публічну ліцензію GNU (GPL), яка дозволяла програмному забезпеченню та майбутнім поколінням коду, отриманого з нього, залишатися безкоштовними для загального користування.
Філософія та активізм
Хоча більшість результатів проєкту GNU має технічний характер, він був започаткований як соціальна, етична та політична ініціатива. Окрім виробництва програмного забезпечення та ліцензій, Проєкт GNU опублікував низку робіт, більшість з яких були авторства Річарда Столмена.
Безкоштовне(вільне) програмне забезпечення
Проєкт GNU використовує програмне забезпечення, яке користувачі можуть безкоштовно копіювати, редагувати та розповсюджувати. Воно вільне в тому сенсі, що користувачі можуть змінювати програмне забезпечення відповідно до індивідуальних потреб. Спосіб отримання програмістами вільного програмного забезпечення залежить від того, де вони його отримують. Програмне забезпечення може бути надано програмісту від друзів або через Інтернет, або компанія, в якій працює програміст, може придбати програмне забезпечення.
Фінансування
Доходи від асоційованих членів, покупки та пожертвування підтримують проєкт GNU[14].
Копілефт
Копілефт — це те, що допомагає підтримувати вільне використання цього програмного забезпечення серед інших програмістів. Копілефт дає юридичне право кожному використовувати, редагувати та розповсюджувати програми або код програм, якщо умови розповсюдження не змінюються. Як результат, будь-який користувач, який отримує програмне забезпечення на законних підставах, має ті самі свободи, що й інші його користувачі.
Проєкт GNU та Фонд вільного програмного забезпечення іноді розрізняють «сильний» і «слабкий» копілефт. «Слабкі» програми копілефт зазвичай дозволяють розповсюджувачам пов'язувати їх разом із невільними програмами, тоді як «сильне» копілефт суворо забороняє цю практику. Більшість результатів роботи проєкту GNU випущено під сильним копілефтом, хоча деякі випущені під слабким копілефтом або за слабкою ліцензією на вільне програмне забезпечення[15][16].
Розробка операційної системи
Першою метою проєкту GNU було створення цілої операційної системи вільного програмного забезпечення. Оскільки UNIX вже був широко поширений і працював на більш потужних машинах, у порівнянні з тогочасними машинами CP/M або MS-DOS ,[17] було вирішено, що це буде Unix-подібна операційна система. Пізніше Річард Столмен прокоментував, що вважає MS-DOS «іграшкою»[18].
До 1992 року проєкт GNU завершив роботу над усіма основними утилітами операційної системи, але не завершив запропоноване ними ядро операційної системиGNU Hurd. З виходом ядра Linux, розпочатого незалежно Лінусом Торвальдсом у 1991 році і випущеного під ліцензією GPL з версією 0.12 у 1992 році, вперше стало можливим запустити операційну систему, що повністю складається з вільного програмного забезпечення. Хоча ядро Linux не є частиною проєкту GNU, воно було розроблено з використанням GCC та інших інструментів програмування GNU і було випущено як безкоштовне програмне забезпечення під загальною суспільною ліцензією GNU[19]. На даний момент проєкт GNU не випустив версії GNU/Hurd, яка була би придатна для виробничого середовища з моменту початку проєкту GNU/Hurd понад 33 роки тому[20].
GNU/Linux
Стабільну версію (або варіант) GNU можна запустити шляхом поєднання пакетів GNU з ядром Linux, створюючи функціональну систему, подібну до Unix. Проєкт GNU називає це GNU/Linux, а визначальними функціями є комбінація:
Пакети GNU[21][22] (крім GNU Hurd) Пакети GNU складаються з численних інструментів і утиліт операційної системи (оболонка, coreutils, компілятори, бібліотеки тощо)[21][22] включаючи реалізацію бібліотеки всіх функцій, зазначених у програмному інтерфейсі програм системи POSIX (POSIX.1)[23][24] Компілятор GCC може генерувати машинний код для великої кількості комп'ютерних архітектур[25].
Програми, що не належать до GNU — різноманітні пакети вільного програмного забезпечення, які не є частиною проєкту GNU, але випущені під загальною суспільною ліцензією GNU або іншою ліцензією вільного програмного забезпечення, схваленою FSF.
На вебсайті GNU викладено список проєктів, і кожен проєкт має деталі щодо того, який тип розробника може виконати завдання, необхідне для певної частини проєкту GNU. Рівень навичок коливається від проєкту до проєкту, але всім, хто має базові знання з програмування, заохочуються до підтримки проєкту.
Пакетування інструментів GNU разом з ядром Linux та іншими програмами зазвичай називається дистрибутивом (дистрибутивом) Linux. Проєкт GNU називає комбінацію GNU та ядра Linux «GNU/Linux» і просить інших зробити те ж саме[32], це призвело до суперечок щодо імен GNU/Linux.
Більшість дистрибутивів Linux поєднують пакунки GNU з ядром Linux, яке містить власні двійкові блоби і ряд власних програм.
Інструкції з розповсюдження вільної системи GNU
GNU Free System Distribution Guidelines (Правила вільного поширення систем GNU або GNU FSDG) — це зобов'язання щодо розповсюдження системи, яке використовується для пояснення того, що означає для інсталяційного системного дистрибутива (наприклад, дистрибутив GNU/Linux) кваліфікуватися як безкоштовний (libre), а також допомагає розробникам дистрибутивів кваліфіковувати свої дистрибутиви.
Здебільшого це включає дистрибутиви, які є комбінацією пакетів GNU з ядром Linux-libre (модифіковане ядро Linux, в якому видалені двійкові блоби, заплутаний код і частини коду за власними ліцензіями) і складаються лише з вільного програмного забезпечення (повністю відмовляючись від пропрієтарного програмного забезпечення) .[33][34][35] Дистрибутиви, які прийняли GNU FSDG, включають Dragora GNU/Linux-Libre, gNewSense, GNU Guix System, Hyperbola GNU/Linux-libre, Parabola GNU/Linux-libre, Trisquel GNU/Linux, Ututo та деякі інші[36].
В якості основи для FSDG були використані вказівки щодо ліцензій на розповсюдження проєкту Fedora[37].
Стратегічні проєкти
З середини 1990-х років, коли багато компаній інвестували в розробку вільного програмного забезпечення, Фонд вільного програмного забезпечення перенаправляла свої кошти на юридичну та політичну підтримку розробки вільного програмного забезпечення. З цього моменту розробка програмного забезпечення була зосереджена на підтримці наявних проєктів і запуску нових проєктів лише тоді, коли існувала гостра загроза для спільноти вільного програмного забезпечення. Одним із найвідоміших проєктів проєкту GNU є колекція компіляторів GNU, компоненти якої були прийняті як стандартна система компілятора в багатьох Unix-подібних системах.
Авторські права на більшість робіт проєкту GNU належать Фонду вільного програмного забезпечення.
GNOME
Робоче середовище GNOME, було створене Проєктом GNU, оскільки інша настільна система, KDE, стала популярною, але вимагала від користувачів встановити Qt, який тоді був пропрієтарним програмним забезпеченням . Щоб запобігти спокусі встановити KDE і Qt, проєкт GNU одночасно запустив два проєкти. Одним із них був набір інструментів Harmony . Це була спроба зробити безкоштовну заміну програмного забезпечення Qt. Якби цей проєкт був успішним, умовну проблему з KDE було б вирішено. Другим проєктом був GNOME, який розглядав ту саму проблему з іншого боку. Він мав на меті зробити заміну KDE, яка не мала залежностей від пропрієтарного програмного забезпечення. Проєкт Harmony не досяг особливого прогресу, але GNOME розвивався дуже добре. Згодом фірмовий компонент, від якого залежав KDE (Qt), був випущений як безкоштовне програмне забезпечення[38].
GNU Enterprise
GNU Enterprise (GNUe) — це метапроєкт, започаткований у 1996 році[39] і його можна розглядати як підпроєкт проєкту GNU. Метою GNUe є створення безкоштовних «додатків корпоративного класу, усвідомлені даними» (планувальники корпоративних ресурсів тощо.). GNUe розроблено для збору корпоративного програмного забезпечення для системи GNU в одному місці (так само, як проєкт GNOME збирає програмне забезпечення для робочого столу).
Визнання
У 2001 році проєкт GNU отримав нагороду USENIX Lifetime Achievement Award за «повсюдність, широту та якість його вільно доступного програмного забезпечення, яке можна розповсюджувати та модифікувати, що дозволило генерувати дослідження та комерційні розробки»[40].
↑A Bold GNU Head. Процитовано 30 листопада 2014. We thank Aurelio A. Heckert… for donating this graphic to us.
↑A GNU Head. Процитовано 30 листопада 2014. This graphic was drawn by Etienne Suvasa
↑What is GNU?. The GNU Operating System. Free Software Foundation. 4 вересня 2009. Процитовано 9 жовтня 2009. The name "GNU" is a recursive acronym for "GNU's Not Unix!"; it is pronounced g-noo, as one syllable with no vowel sound between the g and the n.
↑Andrew D. Balsa; Coauthors. The linux-kernel mailing list FAQ. The Linux Kernel Archives. Kernel.org. Архів оригіналу за 1 жовтня 2012. Процитовано 13 червня 2013. …we have tried to use the word "Linux" or the expression "Linux kernel" to designate the kernel, and GNU/Linux to designate the entire body of GNU/GPL'ed OS software,… …many people forget that the linux kernel mailing list is a forum for discussion of kernel-related matters, not GNU/Linux in general…
↑Mark Shuttleworth (14 лютого 2014). Losing graciously. Архів оригіналу за 22 March 2014. Процитовано 27 квітня 2014. today our focus is on the cloud and on mobile, and we are quite clearly leading GNU/Linux on both fronts
↑Ncurses. wiki.freedesktop.org. Процитовано 18 березня 2019. It is one of the few GNU files not distributed under the GNU General Public License or GNU Lesser General Public License; it is distributed under a license like the X11 License
↑GNU Hurd/ hurd/ status. GNU Operating System. Free Software Foundation. Процитовано 15 квітня 2018. It may not be ready for production use, as there are still some bugs and missing features.
↑Free System Distribution Guidelines (GNU FSDG) – GNU Project. gnu.org. Процитовано 7 червня 2014. We would like to thank the Fedora Project for their help in focusing these policies, and allowing us to use their own distribution license guidelines as a basis for this document.