Це переклад оригінальної сторінки з англійської мови.

Що таке вільна програма?

Слова “вільна програма” означають програму, яка поважає свободу і спільноту користувачів. Іншими словами, це означає, що у користувачів є свобода виконувати, копіювати, розповсюджувати, змінювати і поліпшувати програму. Отже, поняття “вільна програма” відноситься до волі, а не до вартості. Щоб правильно сприймати його, ви повинні розуміти слово “вільний” у тому сенсі, який міститься у вислові “вільне мовлення”, а не “безкоштовне пиво”. Інколи ми називаємо його “libre software”, щоби підкреслити, що слово “libre software” не означає безкоштовність.

Можливо, ви заплатили гроші за отримання копії вільної програми, а може, вона вам дісталася безкоштовно. Але незалежно від того, як ви отримали свої копії, ви завжди вільні копіювати та змінювати програми і навіть продавати копії.

Ми виступаємо за ці свободи, тому що їх заслуговує кожен. Коли є ці свободи, користувачі контролюють (як індивідуально, так і колективно) програму і те, що вона для них робить. Коли користувачі не контролюють програму, ми називаємо її “невільною” або “власницькою” програмою. Невільна програма контролює користувачів, а розробник контролює програму; це робить програму знаряддям несправедливої влади.

“Відкритий джерельний код” становить собою дещо інше: у нього зовсім інша філософія, заснована на інших цінностях. Його практичне визначення також інше, але майже всі програми із відкритим джерельним кодом справді є вільними. Різницю ми пояснюємо у статті Чому “ відкритий джерельний код” не передає суть поняття “вільна програма”.

Означення вільної програми

Означення вільної програми містить критерії того, чи є конкретна комп'ютерна програма вільною. Час від часу ми переглядаємо це означення, щоб уточнити його або однозначно відповісти на тонкі питання. Розділ історії внизу перелічує зміни, що зачіпають означення вільної програми.

Чотири неодмінні свободи

Програма вільна, якщо у її користувачів є чотири свободи: [1]

  • Свобода виконувати програму як вам завгодно в будь-яких цілях (свобода 0).
  • Свобода вивчати роботу програми і модифікувати програму, щоб вона виконувала ваші обчислення, як ви побажаєте (свобода 1). Це передбачає доступ до початкового тексту.
  • Свобода передавати копії, щоб допомогти іншим (свобода 2).
  • Свобода передавати копії змінених версій іншим (свобода 3). Цим ви можете дати всьому співтовариству можливість отримувати вигоду від ваших змін. Це передбачає доступ до початкового тексту.

Програма вільна, якщо вона надає користувачам всі ці свободи в достатньому обсязі. В іншому випадку вона не вільна. Хоча ми розрізняємо різні схеми невільного поширення по тому, наскільки далеко вони стоять від того, щоб бути вільними, ми вважаємо всі їх рівним чином неетичними.

Ці свободи повинні застосовуватися при будь-якому заданому сценарії до будь-яких частин програм, які ми плануємо використовувати або давати використовувати іншим. Наприклад, розглянемо програму А, яка автоматично запускає програму Б для обробки будь-яких випадків. Якщо ми плануємо поширювати А в тому вигляді, в якому вона є, це означає, що користувачам знадобиться і Б, тому нам оцінити, чи вільною є як А, так і Б. Однак якщо ми плануємо змінити А так, щоб у ній не застосовувалася Б, то вільною потрібно бути лише програмі А; Б ми можемо не розглядати.

Програмне забезпечення може бути комерційним

“Вільне програмне забезпечення” не означає “некомерційне.” Навпаки, вільна програма мусить бути доступна для комерційного використання, комерційної розробки й комерційного розповсюдження. Ця політика фундаментально важлива: без неї вільне програмне забезпечення не могло б досягти своїх цілей.

Ми охоче вітаємо всіх, хто використовує систему GNU, зокрема підприємства та їхні трудові колективи. Для цього необхідно дозволяти комерційне використання. Ми сподіваємось, що вільні заміни програм замістять відповідні власницькі програми; але вони не матимуть змоги це зробити, якщо заборонити підприємствам їх використовувати. Ми хочемо, щоб комерційні вироби, що містять програмне забезпечення, містили й систему GNU; це передбачає й комерційне розповсюдження за гроші. Комерційна розробка вільного програмного забезпечення більше не є чимось дивним, і таке вільне комерційне програмне забезпечення дуже важливе. Оплачувана, професійна підтримка вільного програмного забезпечення задовольняє важливу потребу.

Отож, виключення комерційного використання, комерційної розробки чи комерційного розповсюдження сковувало б спільноту вільного програмного забезпечення й перешкоджало б її успіху. Мусимо дійти того висновку, що програма, ліцензована з такими обмеженнями, не є вільним програмним забезпеченням.

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

Уточнення межі між вільним і невільним

Далі в цій статті ми пояснимо докладніше, наскільки певні свободи мають поширюватись (у різних питаннях), щоб програма була вільною.

Свобода виконувати програму як вам заманеться

Свобода виконувати програму означає свободу будь-якого роду осіб або організацій застосовувати її на будь-якого роду обчислювальній системі для будь-якого роду робіт і цілей без вимоги зв'язатися з цього приводу з розробником або будь-якою іншою особою. В даному випадку маються на увазі цілі користувача, а не розробника; ви як користувач вільні виконувати програму в своїх цілях, а якщо ви передаєте її комусь іншому, то цей чоловік може виконувати програму в своїх цілях, але ви не уповноважені нав'язувати йому свої цілі.

Свобода виконувати програму як вам завгодно означає, що вам не заборонено і не заважають робити це. Це ніяк не пов'язано ні з тим, якою функціональністю програма володіє, ні з тим, чи у неї наявні технічні можливості для роботи в будь-якому конкретному середовищі, ні з тим, чи корисна вона для якої-небудь обчислювальної діяльності.

Наприклад, якщо код невиправдано відхиляє певні чинні вхідні дані — чи й просто не працює — це може робити програму менш корисною, можливо навіть зовсім позбавляючи її сенсу, але це не відбирає користувацької можливості запускати програму, тож не суперечить свободі 0. Якщо програма вільна, користувачки й користувачі можуть подолати втрату користі, бо свободи 1 і 3 дають і особам, і спільнотам змогу створювати й розповсюджувати змінені версії без невиправданого шкідливого коду.

“Як ви побажаєте” передбачає можливість “не виконувати зовсім” тих чи інших обчислень, якщо ви бажаєте, щоб програма їх не виконувала. Тож нема потреби в окремій “свободі не запускати програму.”

Свобода вивчати сирці програми і вносити зміни

Щоб волі 1 і 3 (свобода вносити зміни і свобода публікувати змінені версії) мали сенс, у вас повинен бути доступ до початкового тексту програми. Отже, доступність вихідного тексту є необхідним умовою свободи програми. “Вихідний текст”, штучно перетворена до вигляду, в якому утруднено його читання і модифікація людиною, не є справжнім вихідним текстом і не може служити його заміною.

Свобода 1 поширюється на свободу застосування зміненої версії програми. Якщо програма постачається у складі продукту, розробленого так, що він виконує версії із змінами когось іншого, але відмовляється виконувати версії з вашими змінами — практика, звана “тівоїзацією” або (у вивернутих термінах тих, хто це практикує) “безпечним завантаженням”,— свобода 1 стає теоретичної фікцією, а не практичною свободою. Цього не досить. Іншими словами, ці двійкові файли не є вільними програмами, навіть якщо вихідні тексти, з яких вони отримані, вільні.

Один з важливих способів зміни програми — приєднання доступних вільних підпрограм і модулів. Якщо у ліцензії програми сказано, що приєднувати модулі з відповідною ліцензією не можна,— наприклад, якщо для цього потрібно бути правовласником всіх текстів, які ви додаєте — то ліцензія занадто обмежувальна, щоб вважатися вільною.

Покращує зміна програму — питання суб'єктивне. Якщо ваше право змінювати програму по суті обмежена лише змінами, які хтось інший вважає поліпшеннями, то ця програма не вільна.

Один частковий випадок свободи 1 — видалити код програми, замінивши його поверненням без жодних дій, або змусивши його викликати певну іншу програму. Тож свобода 1 передбачає “свободу видаляти програму.”

Свобода передавати копії, якщо бажаєте: основні вимоги

Свобода поширювати (свободи 2 і 3) означає, що ви вільні передавати копії зі змінами або без них, безкоштовно або стягуючи плату за поширення, кому завгодно і де завгодно. Свобода цих дій означає (крім іншого), що ви не зобов'язані питати дозволу на ці дії або платити за нього.

У вас також повинна бути свобода вносити зміни і користуватися ними приватним порядком на роботі або в грі, навіть без згадки про те, що вони існують. Якщо ж ви публікуєте свої зміни, від вас не повинні вимагати сповіщати про це когось конкретно або якимось конкретним способом.

Свобода 3 поширюється на волю випускати версії з вашими змінами як вільні програми. Вільна ліцензія може допускати також інші способи випуску цих версій; іншими словами, вона не обов'язково повинна бути ліцензією копілефту. Однак ліцензія, яка вимагає, щоб модифіковані версії були невільні, не може вважатися вільною.

Свобода передавати копії повинна поширюватися як на двійкові або виконувані форми програми, так і на вихідний текст, зі змінами або без них (розповсюдження програм у бінарному вигляді необхідно для зручності в встановлення вільних операційних систем). Для деякої програми може не існувати способу перетворення у двійковий або виконуваний вигляд (оскільки деякі мови не підтримують такої можливості), але ви повинні бути вільні поширювати програму в такому вигляді, якщо ви знайдете або розробите спосіб такого перетворення.

Копілефт

Однак певні правила про форми поширення вільних програм допустимі, коли вони не суперечать центральним свободам. Наприклад, копілефт (дуже спрощено) — це правило, за яким при передачі програми ви не можете додавати обмеження, які позбавляють інших людей центральних свобод. Це правило не суперечить центральним свободам, а захищає їх.

У проекті GNU ми користуємося копілефтом, щоб юридично захистити чотири свободи для кожного. Ми переконані, що копілефтом найкраще користуватися. Але вільні програми без копілефту є етичними також. Погляньте Категорії вільного програмного забезпечення для опису того, як співвідносяться між собою “вільні програми”, “програми з копілефтом” та інші різновиди програмного забезпечення.

Правила про оформлення та розповсюдження

Однак правила про оформлення модифікованих версій прийнятні, якщо вони, по суті, не обмежують вашу свободу випускати модифіковані версії, а також вашу свободу робити і застосовувати модифіковані версії особисто. Отже, дозволяється, щоби ліцензія вимагала зміни назви модифікованої версії, видалення емблеми або ідентифікації ваших правок як належних вам. До тих пір, поки ці вимоги не настільки обтяжливі, щоб фактично утримувати вас від випуску своїх змін, вони допустимі; ви вже вносите зміни в програму, тому вас не обтяжить внести ще трохи.

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

Особлива проблема виникає, коли ліцензія вимагає зміни імені, під яким програма буде викликатися з інших програм. Це по суті ускладнює вам випуск своєї зміненої версії так, щоб вона могла замінити первісну при виклику тими іншими програмами. Цього роду вимога припустимо, лише якщо є відповідний засіб перепризначення, що дозволяє вам задати ім'я первісної програми як перенаправлення на змінену версію.

Експортні обмеження

Іноді державні експортні обмеження й торгові санкції можуть обмежувати вашу свободу передавати копії програм на міжнародному рівні. Розробники програм не в силах усунути або обійти ці обмеження, але відмовитися від них як умов використання програми вони можуть. Таким чином ці обмеження не торкнуться осіб діяльності людей поза юрисдикцією цих держав. Отже, ліцензії вільних програм не повинні вимагати підпорядкування яким би то не було нетривіальним правилам експорту як умові здійснення будь-якої з неодмінних свобод.

Проста згадка про існування експортних норм, без включення їх до умови самої ліцензії, прийнятна, оскільки це не обмежує користувачів. Якщо експортні норми в дійсності тривіальні для вільних програм, вимоги їх дотримання в якості умови насправді не представляють проблеми; однак це потенційна проблема, оскільки подальша зміна в законодавстві могло б зробити цю вимогу нетривіальною і тим самим перетворити програму на невільну.

Щоб ці свободи були дійсні, вони повинні бути неперервні і невідкличні до тих пір, поки ви не робите нічого поганого; якщо за розробником програми залишається право відкликати ліцензію або додавати обмеження в її умови після факту розповсюдження без якого б то ні було приводу з вашої сторони, то програма невільна.

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

Для ліцензії вільних програм допустимо зазначати, закон якої юрисдикції застосовний, де повинні проходити судові слухання або те і інше.

Ліцензії на основі контрактів

Більшість ліцензій вільних програм базується на авторському праві. У вимог, які можна накладати за допомогою авторського права, є свої межі. Якщо заснована на авторському праві ліцензія поважає свободу в описаних вище аспектах, то навряд чи у неї будуть проблеми іншого роду, яких ми не передбачали (хоча часом це і трапляється). Однак деякі ліцензії вільних програм базуються на контрактах, а контракти можуть накладати обмеження у значно ширших межах. Це означає, що є багато можливих причин, через які ліцензія може бути неприйнятно обмежувальною і невільною.

Можливо, ми не в змозі перерахувати всі можливі випадки. Якщо заснована на контракті ліцензія обмежує користувача незвичайним чином, неможливим для ліцензій, заснованих на авторському праві, який не згаданий тут як правомірний, нам доведеться подумати про це, і ми, ймовірно, прийдемо до висновку, що вона не вільна.

Означення вільної програми на практиці

Як ми трактуємо ці критерії

Зауважте, що критерії, подібні до прийнятих у цьому означенні вільної програми, вимагають обережного осмислення при трактуванні. Щоб вирішити, чи є ліцензія конкретної програми ліцензією вільних програм, ми оцінюємо її на основі цих критеріїв, визначаючи, чи відповідає вона як їх духу, так і букві. Якщо ліцензія містить необґрунтовані обмеження, ми відкидаємо її, навіть якщо ми не передбачаємо суперечності цим критеріям. Іноді вимоги ліцензії зачіпають проблему, яку необхідно ретельно обдумати і обговорити з юристом, перш ніж ми зможемо вирішити, чи прийнятна ця вимога. Коли ми доходимо висновку з нового питання, ми часто оновлюємо ці критерії, щоб було простіше зрозуміти, чому певні ліцензії відповідають або не відповідають їм.

Отримати допомогу із вільних ліцензій

Якщо ви цікавитеся, чи є конкретна ліцензія ліцензією вільних програм, зверніться до нашого списку ліцензій. Якщо ліцензія, яка вас цікавить, там не вказана, ви можете запитати нас, надіславши запит за адресою <licensing@gnu.org>.

Якщо ви збираєтесь написати нову ліцензію, будь ласка, зв'яжіться спочатку з Фондом вільного програмного забезпечення за вказаною адресою. Збільшення кількості різних ліцензій вільних програм означає, що користувачам буде потрібно більше зусиль, щоб розібратися в них; ми, можливо, зуміємо допомогти вам підібрати існуючу ліцензію вільних програм, що вам підійде.

Якщо це неможливо, якщо вам дійсно потрібна нова ліцензія, то з нашою допомогою ви зможете гарантувати, що ліцензія дійсно є ліцензією вільних програм і не несе в собі різних практичних проблем.

Згадуючи вільні програми, вибирайте правильні слова

Коли мова йде про вільні програми, краще всього уникати вживання таких термінів, як “роздавати” “безкоштовно ”,тому що ці терміни мають на увазі, що справа у вартості, а не у свободі. Деякі загальноприйняті терміни, наприклад, “піратство”, несуть в собі точку зору, яку ви, як ми сподіваємося, не схвалюєте. Ці терміни обговорюються на сторінці “Заплутують слова та вирази, яких варто уникати”. У нас є також список вірних перекладів словосполучення “вільні програми” на різні мови.

Інша група вживає термін “відкритий вихідний код” для позначення близького (але не тотожного) “вільним програмам” поняття. Ми надаємо перевагу терміну “вільна програма” (free software), бо щойно ви дізнаєтеся, що free тут означає свободу, а не вартість, наступні згадки цього словосполучення починають нагадувати вам про свободу. Слово “відкритий” не має ніякого відношення до свободи.

За межами програм

Посібники з програм повинні бути вільні з тих же причин, за якими програми повинні бути вільні, а також тому, що посібники фактично є частиною програм.

Ті ж самі аргументи мають сенс для інших різновидів прикладних творів - іншими словами, творів, які містять практичні знання, такі, як підручники і довідники. Вікіпедія - найвідоміший приклад.

Будь-якого роду витвір може бути вільним, і визначення вільної програми було розширено до визначення вільних творів культури, застосовного до творів будь-якого роду.

Історія

Час від часу ми переглядаємо це означення вільної програми. Тут розміщений список істотних змін з посиланнями на сторінки, де в точності показано, що змінилося.

  • Версія 1.169: Чіткіше пояснюється, чому чотири свободи мусять поширюватись на комерційну діяльність. Пояснюється, чому чотири свободи передбачають свободу не запускати програму й свободу її видаляти, тобто чому нема потреби зазначати їх як окремі вимоги.
  • Версія 1.165: Уточнюється, що невиправдані обмеження в коді не спростовують свободи 0, і що свободи 1 і 3 забезпечують користувацьку змогу їх вилучити.
  • Версія 1.153: Пояснюється, що свобода виконувати програму означає, що вам ніщо не заважає її запустити.
  • Версія 1.141: Пояснюється, які програми повинні бути вільні.
  • Версія 1.135:Щоразу йде мова, що свобода 0 — це свобода виконувати програму як вам завгодно.
  • Версія 1.134: Свобода 0 не пов'язана з функціональністю програми.
  • Версія 1.131: Ліцензія вільної програми не може вимагати дотримання ліцензії іншої, невільної програми.
  • Версія 1.129: явно зазначено, що вибір форуму та юрисдикції допустимі (це завжди було нашою політикою).
  • Версія 1.122: Вимоги щодо контролю експорту становлять реальну проблему, якщо вимога нетривіальна; в іншому випадку це лише потенційна проблема.
  • Версія 1.118: Пояснення: справа у обмеженні вашого права змінювати, а не в тому, які ви робите зміни. І модифікації не обмежені “поліпшеннями”.
  • Версія 1.111: Пояснення 1.77 висловлюванням, що тільки обмеження після факту розповсюдження неприпустимі. Правовласники можуть надати додатковий дозвіл на користування твором, випустивши твір паралельно іншим чином.
  • Версія 1.105: Відображено в короткому формулюванні волі 1 (як уже зазначено у версії 1.80), що ця свобода включає у себе фактичне користування зміненої вами версії для своїх обчислень.
  • Версія 1.92: Пояснення, що заплутаний текст не вважається вихідним текстом.
  • Версія 1.90: Пояснення, що свобода 3 означає право поширювати копії версій з вашими власними змінами і поліпшеннями, а не право брати участь в чужому проект по розробці.
  • Версія 1.89: Свобода 3 включає право випускати змінені версії як вільні програми.
  • Версія 1.80: Свобода 1 повинна бути практичною, а не тільки теоретичною; т.  тобто ніякої тівоїзації.
  • Версія 1.77: Пояснення, що ніякі зміни не можуть мати зворотної сили, навіть якщо це не оформлено як повна зміна ліцензії.
  • Версія 1.74: Чотири пояснення положень, які були недостатньо явні або висловлювалися в деяких місцях, але не були відображені скрізь:
    • "Покращення" не означають, що ліцензія може істотно обмежувати те, якого роду модифікації ви можете випускати. Свобода 3 включає поширення змінених версій, а не просто змін.
    • Право об'єднання з існуючими модулями відноситься до модулів з відповідною ліцензією.
    • Явно висловлено висновок стосовно питання експортного контролю.
    • Внесення змін в ліцензію означає відкликання попередньої ліцензії.
  • Версія 1.57: Додано розділ "Крім програм".
  • Версія 1.46: з'ясовувати, чия мета полягає в значній свобода запускати програми для будь-яких цілей.
  • Версія 1.41: Зрозуміліше формулювання тверджень про ліцензії, заснованих на контрактах.
  • Версія 1.40: Пояснення, що вільна ліцензія повинна дозволяти вам користуватися іншими доступними вільними програмами для створення своїх модифікацій.
  • Версія 1.39: Зауваження, що ліцензія може вимагати від вас надання вихідного тексту версій програм, які ви передаєте в громадське користування.
  • Версія 1.31: Зауваження про те, що допустимо, щоб ліцензія вимагала вказівки вас як автора змін. Інші незначні пояснення по всьому тексту.
  • Версія 1.23: Вказівка на потенційні проблеми, пов'язані з ліцензіями, заснованими на контрактах.
  • Версія 1.16: Пояснення, чому поширення в двійковому вигляді важливе.
  • Версія 1.11: Зауваження, що вільна ліцензія може вимагати від вас пересилання копії версій, які ви поширюєте, попереднім розробникам за запитом.

У номерах версій, показаних вище, є проміжки, тому що на цій сторінці були інші зміни, які не впливають на визначення або його інтерпретації. Наприклад, в список не входять зміни у відступах, форматуванні, орфографії, пунктуації, а також в інших частинах сторінки. Ви можете проаналізувати повний список змін цієї сторінки за допомогою системи cvsweb.

Виноска

  1. Вони пронумеровані 0, 1, 2 і 3 через історичні причини. Близько 1990 року було три свободи під номерами 1, 2 і 3. Потім ми зрозуміли, що свободавиконувати програму потрібно згадати явно. Вона була явно простішою, ніжтри інших, тому правильно було розташувати її перед ними. Замість того,щоб перенумерувати їх, ми зробили її свободою 0.