Чому відкритий вихідний код не передає поняття вільна програма
Річард СтолменТермінами «вільна програма» й «відкритий код» називають переважно одні й ті ж програми, наголошуючи на різних властивостях цих програм і спираючись на різні цінності. Рух вільного програмного забезпечення просуває свободу користувачок і користувачів комп'ютерної техніки; це рух за волю й справедливість. Тоді як ідея відкритого коду наголошує на вищості прикладних здобутків, не висвітлюючи принципів. Саме тому ми не погоджуємося з «відкритим кодом» і не використовуємо цього терміну.
Коли ми називаємо програму “вільною”, ми маємо на увазі, що вона поважає основні свободи користувачів: свободу виконувати її, вивчати і змінювати її, а також поширювати із змінами або без них. Це питання свободи, а не ціни, тому уявляйте собі “вільну мову”, а не “безкоштовне пиво”.
Ці свободи життєво важливі. Вони мають значення не тільки для окремих користувачів, але і для всього суспільства в цілому, тому що вони сприяють розвитку суспільної солідарності — тобто обміну співробітництва. Вони стають ще важливіші тому, що цифрова техніка все більше входить в нашу культуру і життєдіяльність. У світі цифрових звуків, зображень і слів вільні програми стають все більш важливими для свободи взагалі.
Десятки мільйонів людей по всьому світу використовують сьогодні вільні програми: громадські школи деяких регіонів Індії та Іспанії тепер викладають всім учням роботу у вільній операційній системі GNU/Linux. Однак більшість цих користувачів ніколи не чули про етичні причини, за якими ми розробили цю систему і побудували громаду вільного програмного забезпечення, тому що сьогодні про цю систему і спільноту говорять як про “відкритий вихідний код”, вважаючи їх плодом іншої філософії, в якій ці свободи ледь згадуються.
Рух за вільне програмне забезпечення боровся за свободу користувачів з 1983 року. У 1984 році ми дали старт розробці вільної операційної системи GNU, щоб ми могли обходитися без вільних операційних систем, які відмовляють своїм користувачам у свободі. За вісімдесяті роки XX століття ми розробили більшість основних компонентів такої системи і склали Загальну громадську ліцензію GNU (GNU GPL), щоб випускати їх під цією ліцензією,— ліцензію, створену спеціально для того, щоб захистити свободу всіх користувачів програми.
Не всі користувачі і розробники вільних програм співчували цілям руху за вільне програмне забезпечення. В 1998 році частина спільноти вільного програмного забезпечення відкололася і почала кампанію під іменем “відкритого вихідного коду”. Цей термін спочатку було запропоновано, щоб уникнути можливого неправильного тлумачення терміна “вільна програма”, але дуже скоро він почав асоціюватися з філософськими поглядами, абсолютно відмінними від поглядів руху за вільне програмне забезпечення.
Одні прихильники відкритого вихідного тексту розглядали цей термін як “рекламну кампанію за вільне програмне забезпечення”, яка привернула б увагу підприємців, підкреслюючи практичні вигоди, пов'язані з цими програмами, не зачіпаючи в той же час питань добра і зла, про які вони, можливо, не хотіли слухати. Інші прихильники просто відкидали етичні і соціальні цінності руху за вільне програмне забезпечення. Якими б не були їхні погляди, коли вони ратували за відкритий вихідний код, вони не згадували і не захищали ці цінності. Термін “відкритий вихідний код” швидко став асоціюватися з ідеями і аргументами, що приділяють увагу лише прикладним здобуткам, таким як створення і володіння ефективними надійними програмами. Згодом до цього прийшло більшість прихильників відкритого вихідного коду, і вони асоціюються з тим же. Більшість обговорень “відкритого коду” звертають увагу не на етику, а на популярність і успіх; ось типовий приклад. Дехто з шанувальниць і шанувальників відкритого коду сьогодні все ж згадує, що проблематика свободи важлива, але їх не надто видно на тлі більшості, що воліє на неї не зважати.
Ці два терміни описують майже одну і ту ж категорію програм, але вони відповідають поглядам, заснованим на принципово різних цінностях. Для руху за вільне програмне забезпечення, вільні програми — це етичний імператив — повага свободи користувачів. Натомість філософія відкритого вихідного коду розглядає проблеми з точки зору того, як зробити програми “кращими” — тільки в практичному сенсі. Згідно з цією філософією, невільна програма — це незадовільне рішення поставленої практичної задачі.
Проте для руху за вільне програмне забезпечення, невільні програми — це соціальна проблема, для розв'язання якої слід повністю припинити користуватися ними й перейти на вільні програми.
“Вільна програма”. “Відкритий вихідний код”. Якщо це одні і ті ж програми (або майже одні і ті ж), хіба має значення, яким з двох назв ви користуєтеся? Має, бо різні слова передають різні поняття. Хоча вільна програма під будь-якою іншою назвою дасть вам ту ж свободу сьогодні, встановлення свободи на постійній основі залежить насамперед від того, чи будуть привчати людей цінувати свободу. Якщо ви хочете допомогти цьому, важливо говорити про “вільні програми”.
Ми, учасники руху за вільне програмне забезпечення, не думаємо про табір відкритого вихідного коду як про ворога: противник - невільні програми. Але ми хочемо, щоб люди знали, що ми стоїмо за свободу, тому ми не допускаємо невірного віднесення нас до прихильників відкритого вихідного коду. Те, що ми пропагуємо, це не “відкритий код”; те, проти чого ми виступаємо, це не “закритий код”. Задля ясності, ми уникаємо використання цих термінів.
Практичні відмінності між вільними програмами і відкритим вихідним кодом
На практиці відкритий вихідний текст означає трохи слабші критерії, чим критерії вільних програм. Наскільки ми знаємо, всі існуючі вільні програми можна було б розцінювати як програми з відкритим вихідним кодом. Майже всі програми з відкритим вихідним кодом вільні, але є винятки.
По-перше, деякі ліцензії відкритого вихідного коду занадто жорсткі, тому вони не можуть вважатися ліцензіями вільних програм. Наприклад, “Open Watcom” є невільною, бо її ліцензія не дозволяє зробити модифіковані версії і використовувати їх у приватному порядку. На щастя, мало програм застосовують ці ліцензії.
По-друге, критерії відкритого коду визначаються винятково ліцензуванням вихідного коду. Термін “відкритий код” часто застосовують до виконуваного файлу, вихідний код якого загальнодоступний. Це створює плутанину в парадоксальних випадках, коли вихідний код відкритий (і вільний), але власне виконуваний файл невільний.
Найпростіший випадок цього парадоксу: вихідний код програми доступний під слабкою вільною ліцензією без копілефту, але на виконувані файли цієї програми накладено додаткові невільні умови. Якщо виконувані файли в точності збіжні з оприлюдненим вихідним кодом (вони можуть бути збіжні, а можуть і відрізнятись), то ви можете зібрати цей вихідний код, щоб створити й розповсюдити вільні виконувані файли. Тому цей випадок простий; він не становить критичної проблеми.
Буває й складніший, суттєво шкідливіший випадок. Чимало виробів, що містять комп'ютери, перевіряють підписи на файлах виконуваних ними програм і не дають користувачам встановлювати інші виконувані файли; тільки одна привілейована компанія може робити виконувані файли, які можуть працювати в пристрої або отримувати доступ до всіх його можливостей. Ми називаємо ці пристрої “тиранами”, а практика називається “тівоїзацією” з назви продукту (TiVo), в якому ми вперше це побачили. Навіть якщо виконуваний файл зроблений з вільного вихідного тексту й формально доступний під вільною ліцензією, користувачі не можуть працювати з його зміненими версіями, тож виконуваний файл на ділі невільний.
Чимало Android-виробів містять невільні тівоїзовані виконувані файли Linux, попри те що його вихідний код ліцензовано під GNU GPL версії 2. (Ми розробили GNU GPL версії 3, щоб заборонити таку практику; на жаль, Linux так і не було на неї переведено.) Про ці виконувані файли, зібрані з відкритого й вільного вихідного коду, переважно говорять як про “відкритий код,” але вони не є вільним програмним забезпеченням.
Поширені помилки щодо “вільних програм” та “відкритого вихідного коду”
Термін “вільна програма” схильний до невірного тлумачення: ненавмисне значення “програма, яку ви можете отримати за нульовою ціною” підходить під цей термін разом із тлумаченням, що це “ програма, яка дає користувачеві певні свободи”. Ми вирішуємо цю проблему, публікуючи визначення вільних програм і кажучи: “Думайте про ‘вільну промову’, а не про ‘безкоштовне пиво’”. Це не ідеальне рішення; воно не може повністю усунути проблему. Однозначний і коректний термін був би кращим, якби він не містив у собі інших проблем.
На жаль, у всіх альтернатив в англійській мові є свої проблеми. Ми розглянули багато чого з того, що нам пропонували, але ніщо не було так явно “правильно”, щоб перехід на це слово було б гарною ідеєю. (Наприклад, у деяких контекстах французьке та іспанське слово “ libre” добре підходить, але в Індії люди з ним зовсім не знайомі). У кожній запропонованій заміні терміну “вільна програма” є та чи інша семантична проблема у тому числі і у “ відкритого вихідного коду”.
Офіційне визначення “ програми з відкритим вихідним кодом” (яке опубліковано Ініціативною групою відкритого вихідного тексту і занадто довге, щоб наводити його тут) було виведене (опосередковано) із наших критеріїв вільних програм. Це не одне і теж, воно трохи ширше в деяких аспектах. Тим не менше їхнє визначення узгоджується з нашим у більшості випадків.
Проте очевидне значення виразу “програма з відкритим вихідним кодом” — “ви можете переглядати джерельний код”,— і більшість людей, вірогідно, думають, що воно й справді це означає. Цей критерій набагато слабший за визначення вільної програми, а також набагато слабший за офіційне визначення відкритого вихідного коду. Йому відповідає багато програм, які не є ні вільними програмами, ані програмами з відкритим вихідним кодом.
Чому в людей виникає таке нерозуміння? Бо це природне значення слів «відкритий код». Але концепт, для якого шанувальниці й шанувальники відкритого коду вигадали іншу назву, був варіантом концепту вільного програмного забезпечення.
Оскільки наївне тлумачення “відкритого вихідного коду” не означає того, що передбачають його захисники, це призводить до того, що більшість людей неправильно розуміють термін. За письменником Нілом Стефенсоном “Linux — це програма з ‘відкритим вихідним текстом’, тобто кожен може отримати копії файлів вихідного коду”. Я не думаю, що він навмисно прагнув спростувати чи заперечити офіційне визначення. Я вважаю, що він просто застосував правила англійської мови, щоб отримати суть терміну. Штат Канзас опублікував подібне визначення: “Застосування програм з відкритим вихідним кодом (open-source software або OSS). OSS — це програма, вихідний код якої вільно і публічно доступний, хоча різні ліцензійні угоди по-різному визначають, що дозволено робити з цим вихідним кодом”.
Нью-Йорк Таймс надрукувала статтю, яка поширює значення цього поняття на попереднє тестування користувачами — передачу невеликому числу користувачів на пробу ранньої версії програми і отримання конфіденційних відгуків що практикувалося розробниками невільних програм десятиліттями.
Термін був розтягнутий так, що включив в себе проекти устаткування, які публікуються без патенту. Вільні від патентів проекти можуть бути похвальним внеском у суспільство, але термін “вихідний код” не має до цього прямого відношення.
Прихильники відкритого вихідного коду намагаються боротися з цим, вказуючи на своє офіційне визначення, але для них цей коригуючий підхід менш ефективний, ніж для нас. У терміні “вільна програма” є два природних значення, одне з яких ми маємо на увазі, тому людина, який вхопила ідею “вільна мова, а не безкоштовне пиво”, ніколи більше не зрозуміє його неправильно. Термін “відкритий вихідний код” має тільки одне природне значення, і воно відмінне від значення, яке мають на увазі його прихильники. Тому немає чіткого способу пояснити і виправдати його офіційне визначення. Це призводить до ще більшої плутанини.
Ще одна омана щодо “відкритого вихідного коду ” думка, що воно “не використовує GNU GPL”. Ця думка має тенденцію поєднуватися з іншою помилкою, що “ вільна програма” “програма під GPL”. Ні те, ні інше не вірно, бо GNU GPL задовольняє критеріям відкритого вихідного коду, і більшість ліцензій програм з відкритим вихідним кодом можна визнати ліцензіями вільних програм. Ось тут багато ліцензій вільних програм відмінних від GNU GPL.
Поняття “відкритий вихідний код” згодом було перенесене на іншу діяльність, наприклад, державну, освітню, наукову, де такого поняття, як “вихідний код”, не існує, і де критерії ліцензування програм просто безглузді. Єдине, що об'єднує ці види діяльності — це те, що вони тим чи іншим чином запрошують людей до участі. Вони розтягнули це поняття до того, що воно означає тільки участь з боку, прозорість або навіть менше. У найгірших випадках воно стає порожнім модним слівцем.
Різні цінності можуть вести до подібних висновків… але не завжди
Радикальні групи шістдесятих років XX століття були відомі своєю схильністю до розколів: організації розбивалися через незгоди в деталях стратегії, і дві дочірні групи вважали один одного ворогами, незважаючи на те, що основні цілі та цінності у них були схожі. Праве крило всіляко роздувало це і користувалося цим для критики лівих взагалі.
Деякі намагаються применшити рух за вільне програмне забезпечення, порівнюючи наші розбіжності з “відкритим вихідним кодом” з розбіжностями між тими радикальними групами. Вони перевертають все з ніг на голову. Ми не згодні з табором відкритого вихідного тексту в основних цілях та цінностях, але їхні та наші погляди призводять у багатьох випадках до одної і тої ж практичної поведінки такої, як розробка вільних програм.
В результаті люди з руху за вільне програмне забезпечення та з табору відкритого вихідного коду часто працюють разом над практичними проектами такими, як розробка програм. Чудово, що такі різні філософські погляди можуть так часто мотивувати різних людей на участь в одних і тих же проектах. Проте є ситуації, в яких ці принципово різні погляди ведуть до абсолютно різних дій.
Ідея відкритого вихідного коду полягає в тому, що дозвіл користувачам змінювати і поширювати програми зробить їх ефективнішими і надійнішими. Але це не гарантовано. Розробники невільних програм не обов'язково некомпетентні. Іноді вони випускають програму, яка ефективна і надійна, хоча вона і не поважає свободу користувачів. Активісти вільного програмного забезпечення та ентузіасти відкритого вихідного коду реагують на це дуже по-різному.
Чистий ентузіаст відкритого вихідного коду той, хто зовсім не схильний до впливу ідеалів вільного програмного забезпечення, скаже: “Я не думав, що ви зумієте змусити програму працювати так добре без застосування нашої моделі розробки, але ви це зробили. Як мені отримати копію?” Таке ставлення буде заохочувати схеми, які забирають у нас свободу, і призведе до її втрати.
Активіст вільного програмного забезпечення скаже: “Ваша програма дуже приваблива, але не варта моєї волі. Отож, я обійдуся без неї. Замість цього я підтримаю проект, який розвиває вільну альтернативу вашій програмі”. Оскільки ми цінуємо свою свободу, ми повинні діяти, щоб підтримати і захистити її.
Ефективна надійна програма може бути поганою
Думка, ніби ми хочемо, щоб програми були ефективні і надійні, випливає з припущення, що вони створюються, щоб служити своїм користувачам. Якщо програма ефективна і надійна, це означає, що вона служить їм краще.
Але говорити, що програма служить своїм користувачам, можна тільки тоді, коли вона поважає свободу. Що, якщо програма розробляється для того, щоб закувати користувачів в кайдани? Тоді ефективність означає, що ланцюги тиснуть сильніше, а надійність що їх важче скинути. Шкідливі функції на кшталт стеження за користувачами, обмеження користувачів, лазівки і примусові оновлення звичайні для невільних програм, і деякі прихильники відкритого вихідного коду намагаються реалізувати їх у програмах з відкритим вихідним кодом.
Під тиском компаній відео - і звукозапису програми для особистого користування розробляються все більшою мірою спеціально для того, щоб обмежити користувачів. Ця зловмисна риса відома як DRM, або “цифрове керування обмеженнями” (див. DefectiveByDesign.org). Ці дії суперечать духу свободи, яку вільні програми прагнуть надати. І не тільки духові: адже мета DRM полягає в тому, щоб розтоптати вашу свободу, розробники DRM намагаються ускладнити, зробити неможливим або навіть протизаконним для вас внесення змін в програму, яка реалізує DRM.
І все ж деякі прихильники відкритого вихідного коду запропонували програми з “DRM з відкритим вихідним кодом”. Їхня ідея у тому, що, публікуючи вихідний код програм, розроблених для обмеження доступу до шифрованих носіїв, і дозволяючи іншим правити його, вони зроблять ефективніші та надійніші програми для обмеження користувачів на кшталт вас. А потім така програма була б доставлена вам в пристроях, які не дозволяють вам змінювати її.
Ця програма могла б бути програмою з відкритим вихідним кодом і застосовувати цю модель розробки, але вона не буде вільною, бо вона не буде поважати свободу користувачів, які насправді працюють з нею. Якщо ця модель розробки дозволить програмі ефективніше і надійніше обмежувати вас, то це зробить її ще гіршою.
Страх свободи
Головна первісна мотивація тих, хто відокремився в табір відкритого вихідного коду, полягає в тому, що етичні ідеї “вільних програм” відлякують деяких людей. Це правда: піднімати такі етичні питання, як свобода, говорити про відповідальність, а не тільки про зручність, значить просити людей думати про речі, які вони, можливо, воліли б ігнорувати, наприклад, чи етичний їх спосіб життя. Це може викликати дискомфорт, і деякі можуть просто відвернутися від цього. Але з цього не випливає, що ми повинні перестати говорити про ці проблеми.
Саме це вирішили зробити лідери відкритого вихідного коду. Вони зрозуміли, що замовчуючи про етику та свободи і говорячи тільки про негайні практичні вигоди визначених вільних програм, вони могли б ефективніше “пропонувати” ці програми певним користувачам, особливо підприємцям.
Коли прихильники відкритого вихідного тексту говорять про що-небудь глибше, зазвичай це думка про те, що вихідний код приноситься “у дар” людству. Якщо представляти це як особливо добре діяння, яке випереджає моральні вимоги, то відповідно поширення власницьких програм без вихідного коду легітимне з точки зору моральності.
Цей підхід виявився ефективним з його власної точки зору. Гасла відкритого вихідного коду переконали багато підприємств і приватних осіб використовувати і навіть розвивати вільні програми, що розсунуло рамки нашої спільноти, але тільки на поверхневому, практичному рівні. Філософія відкритого вихідного коду з її чисто практичними цінностями перешкоджає розумінню глибоких ідей вільного програмного забезпечення; вона приводить багатьох людей в нашу громаду, але не вчить їх захищати його. Це само по собі добре, але цього не достатньо, щоб забезпечити свободу. Залучення користувачів до вільних програм відкриває їм лише частину шляху, на якому вони стають захисниками своєї власної свободи.
Рано чи пізно цих користувачів запросять повернутися назад до невільних програм заради якої-небудь практичної вигоди. Незліченні компанії прагнуть запропонувати таку спокуса, деякі навіть пропонують безкоштовні копії. В якому випадку користувачі будуть відмовлятися? Тільки якщо вони навчилися цінувати свободу, яку їм дають вільні програми,— цінувати свободу як таку, а не технічні і практичні зручності конкретної вільної програми. Щоб донести цю думку, нам необхідно говорити про свободу. Підхід “замовчування” по відношенню до підприємців певною мірою може бути корисний для спільноти, але це небезпечно, якщо стає настільки звичним, що любов до свободи починають вважати ексцентричністю.
Ця небезпечна ситуація є те, що ми маємо. Більшість людей, що займаються вільними програмами, особливо постачальники, мало говорять про свободу зазвичай через прагнення бути “ прийнятнішими для ділових кіл”. Майже всі дистрибутиви операційної системи GNU/Linux додають невільні пакети програм до основної вільної системи, і вони запрошують користувачів розглядати це як перевагу, а не недолік.
Невільні додаткові програми і частково невільні дистрибутиви операційної системи GNU/Linux знаходять благодатний ґрунт тому, що більшість учасників у нашій громаді не наполягають на свободі своїх програм. Це не випадково. Більшість користувачів GNU/Linux познайомилося з системою через обговорення “відкритого вихідного коду”, в ході якого не говориться, що свобода — це мета. Підходи, які не відстоюють свободу, і слова, які не говорять про свободу, йдуть пліч-о-пліч, підтримуючи один одного. Щоб подолати цю тенденцію, нам потрібно більше, а не менше, говорити про свободу.
“FLOSS” та “FOSS”
Вирази “FLOSS” і “FOSS” використовуються, щоб зберігати нейтралітет між вільними програми і відкритим вихідним кодом. Якщо ваша мета - нейтралітет, то “FLOSS” досягає цього краще, ніж “FOSS”, бо він справді нейтральний. Але якщо ви хочете відстоювати свободу, то ці нейтральні вирази вам не підійдуть. У цьому випадку вам потрібно показувати людям, що ви виступаєте за підтримку свободи.
Суперництво у мізках
“Вільний” і “відкритий” борються за популярність. “Вільні програми” і “відкритий вихідний код” різні ідеї, але більшість людей підходять до програм так, що ці ідеї змагаються за одну і ту ж нішу понять. Коли люди звикають говорити і думати “відкритий вихідний код”, це заважає їм заглиблюватися у філософію руху за вільні програми і думати про неї. Якщо вони вже стали асоціювати нас і наші програми зі словом “відкритий”, нам потрібно струснути їх в інтелектуальному відношенні, перш ніж вони визнають, що ми відстоюємо щось інше. Будь-яка діяльність, яка висуває слово “відкритий”, як правило, розширює завісу, що приховує ідеї руху за вільні програми.
Таким чином, активісти вільних програм розсудливо зменшують свою участь у діяльності, яка називає себе “відкритою”. Навіть якщо діяльність сама в собі і по собі хороша, кожен внесок, який ви вносите, завдає невеликої шкоди з цієї сторони. Наявне велике розмаїття іншої діяльності, яка називає себе “вільною” або “свобідною.” Кожен внесок в ці проекти приносить невелику додаткову користь з цієї сторони. Коли можна вибирати з такої кількості проектів, чому не вибрати той, який приносить додаткову користь?
Висновок
Коли прихильники відкритого вихідного коду втягують нових користувачів у нашу громаду, ми, активісти вільного програмного забезпечення, повинні взяти на свої плечі завдання залучення їх уваги до питання свободи. Частіше і голосніше, ніж коли-небудь, ми повинні говорити: “Це вільна програма, вона дає вам свободу!” Щоразу, коли ви говорите “вільна програма”, а не “відкритий вихідний код”, ви допомагаєте нашій кампанії.
Примітки
Робота Лакхані і Вольфа про мотивації розробників вільного програмного забезпечення говорить, що для значної їх частини мотивом були погляди, згідно яких програми повинні бути вільними. І це незважаючи на те, що вони опитували розробників на SourceForge сайті, який не поділяє думки про те, що це питання етики.