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

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

Маєте питання про ліцензування вільних програм, на яке не знайшли тут відповіді? Перегляньте наші матеріали про ліцензування або зв'яжіться із лабораторією ФВПЗ за адресою licensing@fsf.org.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Копілефт

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

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

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

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

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

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

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

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

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

Юридичні міркування

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Відкритий вихідний код?

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

Історія

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

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

Виноска

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