Это перевод страницы, написанной на английском языке.

Что такое свободная программа?

Слова “свободная программа” означают программу, которая уважает свободу и сообщество пользователей. В двух словах это значит, что у пользователей есть свобода выполнять, копировать, распространять, изменять и улучшать программу. Таким образом, понятие “свободная программа” относится к свободе, а не к стоимости. Чтобы верно воспринимать эту концепцию, вы должны понимать слово “свободный” в том смысле, который заключается в выражении “вольная речь”, а не “бесплатное пиво”.

Может быть, вы заплатили деньги за то, чтобы получить свободную программу, а может быть, она вам досталась бесплатно. Но независимо от того, как вы получили свои копии, вы всегда вольны копировать и изменять программу и даже продавать копии.

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

“Открытый исходный текст” представляет собой нечто другое: у него совсем другая философия, основанная на других ценностях. Его практическое определение тоже другое, но почти все программы с открытым исходным текстом на деле свободны. Разницу мы объясняем в статье Почему “открытый исходный текст” не передает понятия “свободная программа”.

Определение свободной программы

Определение свободной программы содержит критерии того, является ли конкретная компьютерная программа свободной. Время от времени мы пересматриваем это определение, чтобы пояснить его или разрешить тонкие вопросы. Список изменений, затрагивающих определение свободной программы, см. в разделе истории в нижней части страницы.

Четыре важнейших свободы

Программа свободна, если у ее пользователей есть четыре важнейших свободы: [1]

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

Программа свободна, если она предоставляет пользователям все эти свободы в достаточном объеме. В противном случае она не свободна. Хотя мы различаем различные схемы несвободного распространения по тому, насколько далеко они отстоят от того, чтобы быть свободными, мы считаем все их равным образом неэтичными.

Эти свободы должны применяться при любом заданном сценарии к любым частям программ, которые мы планируем использовать или давать использовать другим. Например, рассмотрим программу А, которая автоматически запускает программу Б для обработки каких-то случаев. Если мы планируем распространять А в том виде, в каком она есть, это подразумевает, что пользователям понадобится и Б, так что нам нужно вынести суждение, свободна ли как А, так и Б. Однако если мы планируем изменить А так, чтобы в ней не применялась Б, то свободной нужно быть только программе А; Б на эти планы никак не влияет.

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

“Свободная программа” не значит “некоммерческая”. Напротив, свободная программа должна быть доступна для коммерческого применения, коммерческой разработки и коммерческого распространения. Это правило фундаментально важно — без этого свободные программы не могли бы достичь своих целей.

Мы приглашаем каждого пользоваться системой GNU, в том числе предприятия и их работников. Это требует, чтобы коммерческое пользование допускалось. Мы надеемся, что свободные программы-аналоги заменят сопоставимые несвободные программы, но это невозможно, если предприятиям запрещено их использовать. Мы хотим, чтобы коммерческие продукты содержали систему GNU, а это представляло бы коммерческое распространение за деньги. Коммерческая разработка свободных программ больше не является чем-то необычным; такие свободные программы очень важны. Оплачиваемая профессиональная поддержка свободных программ обслуживает важные нужды.

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

Свободная программа должна предлагать эти четыре свободы всякому потенциальному пользователю, который получает копию программы, который соблюдал условия свободной лицензии, распространяющейся на программу в любом из ее дистрибутивов. Когда некоторые из свобод делаются недосягаемыми для каких-то пользователей или от пользователей требуют, чтобы они платили, деньгами или натурой, для осуществления этих свобод, то это равнозначно непредоставлению соответствующих свобод и таким образом, это делает программу несвободной.

Разъяснение границ свободного и несвободного

В остальной части этой статьи мы поясняем более подробно, насколько далеко должны заходить различные свободы по различным вопросам, чтобы программа была свободна.

Свобода выполнять программу как вам угодно

Свобода выполнять программу означает свободу для любого рода лиц или организаций применять ее на любого рода вычислительной системе для любого рода работ и целей без требования связаться по этому поводу с разработчиком или любым другим лицом. В данном случае подразумеваются цели пользователя, а не разработчика; вы как пользователь вольны выполнять программу в своих целях, а если вы передаете ее другим то они вольны выполнять программу в своих целях, но вы не уполномочены навязывать им свои цели.

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

Например, если программа произвольно отвергает определенные осмысленные данные на входе — даже если она во всех случаях выдает отказ — это может делать программу менее полезной, возможно, даже полностью бесполезной, но это не отказывает пользователям в свободе выполнять программу, так что это не противоречит свободе 0. Если программа свободна, пользователи могут преодолеть потерю полезности, потому что свободы 1 и 3 позволяют пользователям и сообществам подготавливать и распространять измененные версии без той части программы, которая создает неудобства.

“Как вам угоднo” включает в себя, на ваше усмотрение, “вообще никак”, если это вам и угодно. Так что в отдельной “свободе не выполнять программу” необходимости нет.

Свобода изучать исходный текст и вносить изменения

Чтобы свободы 1 и 3 (свобода вносить изменения и свобода публиковать измененные версии) имели смысл, вам нужен доступ к исходному тексту программы. Следовательно, доступность исходного текста является необходимым условием свободы программы. “Исходный текст”, искусственно преобразованный к виду, в котором затруднено его чтение и модификация человеком, не является настоящим исходным текстом и не может служить его заменой.

Исходный текст определяется как форма программы, предпочтительная для внесения изменений. Таким образом, любая форма, которую разработчик изменяет, чтобы разрабатывать программу, является исходным текстом версии программы этого разработчика.

Свобода 1 распространяется на свободу применения измененной вами версии программы. Если программа поставляется в составе продукта, разработанного так, что он выполняет версии с изменениями кого-то другого, но отказывается выполнять версии с вашими изменениями — практика, называемая “тивоизацией” или (в вывернутых наизнанку терминах тех, кто это практикует) “безопасной загрузкой”,— то свобода 1 становится пустым притворством, а не практической реальностью. Эти двоичные файлы не являются свободными программами, даже если исходные тексты, из которых они получены, свободны.

Один из важных способов изменения программы — присоединение доступных подпрограмм и модулей. Если в лицензии программы сказано, что присоединять модули с подходящей лицензией нельзя,— например, если для этого нужно быть правообладателем всех текстов, которые вы добавляете — то лицензия слишком ограничительна, чтобы считаться свободной.

Улучшает ли изменение программу — вопрос субъективный. Если ваше право изменять программу по существу ограничено лишь изменениями, которые кто-то другой считает улучшениями, то эта программа не свободна.

Особый случай свободы 1 состоит в удалении частей программы, чтобы они завершались безо всяких действий или чтобы выполнялась какая-то другая программа. Таким образом, свобода 1 включает в себя “свободу удалять программу”.

Свобода передавать копии, если вам угодно: основные требования

Свобода распространять (свободы 2 и 3) означает, что вы вольны передавать копии, с изменениями или без них, бесплатно или взимая плату за распространение, кому угодно и где угодно. Свобода этих действий означает (кроме прочего), что вы не обязаны спрашивать разрешения на эти действия или платить за него.

У вас также должна быть свобода вносить изменения и пользоваться ими частным порядком на работе или в игре, даже без упоминания о том, что они существуют. Если же вы публикуете свои изменения, от вас не должны требовать извещать об этом кого-то конкретно или каким-то конкретным способом.

Свобода 3 распространяется на свободу выпускать версии с вашими изменениями как свободные программы. Свободная лицензия может допускать также другие способы выпуска этих версий; другими словами, она не обязательно должна быть лицензией с авторским левом. Однако лицензия, которая требует, чтобы измененные версии были несвободны, не может считаться свободной.

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

Авторское лево

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

В проекте GNU мы пользуемся авторским левом, чтобы юридически защитить эти четыре свободы для каждого. Мы убеждены, что есть веские доводы в пользу того, что авторским левом лучше пользоваться. Однако свободные программы без авторского лева тоже этичны. Описание того, как соотносятся друг с другом “свободные программы”, “программы с авторским левом” и другие разновидности программ, см. в классификации свободных программ.

Регламентация оформления и распространения

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

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

Особая проблема возникает, когда лицензия требует изменения имени, под которым программа будет вызываться из других программ. Это по существу затрудняет вам выпуск своей измененной версии так, чтобы она могла заменить первоначальную при вызове теми другими программами. Этого рода требование допустимо, только если есть подходящее средство переназначения, позволяющее вам задать имя первоначальной программы как перенаправление на измененную версию.

Контроль экспорта

Иногда государственный контроль экспорта и торговые санкции могут ограничить вашу свободу передавать копии программ на международном уровне. Разработчики программ не в силах устранить или обойти эти ограничения, но отказаться от них как условий использования программы они могут. Таким образом эти ограничения не коснутся деятельности людей вне юрисдикции этих государств. Итак, лицензии свободных программ не должны требовать подчинения каким бы то ни было нетривиальным правилам экспорта как условия осуществления любой из существенных свобод.

Простое упоминание о существовании экспортных норм, без включения их в условия самой лицензии, приемлемо, поскольку это не ограничивает пользователей. Если экспортные нормы в действительности тривиальны для свободных программ, то требование их соблюдения в качестве условия в действительности не представляет проблемы; однако это потенциальная проблема, поскольку последующее изменение в законодательстве могло бы сделать это требование нетривиальным и тем самым обратить программу в несвободную.

Чтобы эти свободы были действительны, они должны быть непрерывны и неотзываемы до тех пор, пока вы не делаете ничего дурного; если за разработчиком программы остается право отозвать лицензию или добавлять ограничения в ее условия после факта распространения без какого бы то ни было повода с вашей стороны, то программа несвободна.

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

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

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

Большинство лицензий свободных программ основано на авторском праве. У требований, которые можно налагать с помощью авторского права, есть свои пределы. Если основанная на авторском праве лицензия уважает свободу в описанных выше аспектах, то едва ли с ней будут проблемы другого рода, которых мы не предвидели (хотя временами это и случается). Однако некоторые лицензии свободных программ основаны на контрактах, а контракты могут налагать ограничения в гораздо более широких пределах. Это значит, что есть много возможных причин, по которым лицензия может быть неприемлемо жесткой и несвободной.

Возможно, мы не в состоянии перечислить все возможные случаи. Если основанная на контракте лицензия ограничивает пользователя необычным образом, невозможным для лицензий, основанных на авторском праве, который не упомянут здесь как правомерный, нам придется подумать об этом, и мы, вероятно, придем к заключению, что она не свободна.

Определение свободной программы на практике

Как мы трактуем эти критерии

Обратите внимание, что критерии, подобные тем, что приняты в этом определении свободной программы, требуют аккуратного осмысления при трактовке. Чтобы решить, является ли лицензия конкретной программы лицензией свободных программ, мы оцениваем ее на основе этих критериев, определяя, удовлетворяет ли она как их духу, так и букве. Если лицензия содержит необоснованные ограничения, мы отвергаем ее, даже если мы не предвидим противоречия этим критериям. Иногда требования лицензии затрагивают проблему, которую необходимо тщательно обдумать и обсудить с юристом, прежде чем мы сможем решить, приемлемо ли это требование. Когда мы приходим к заключению по новому вопросу, мы часто обновляем эти критерии, чтобы было проще понять, почему определенные лицензии удовлетворяют или не удовлетворяют им.

Консультации по лицензиям свободных программ

Если вы интересуетесь, является ли конкретная лицензия лицензией свободных программ, обратитесь к нашему списку лицензий. Если лицензия, которая вас интересует, там не указана, вы можете спросить нас о ней, прислав запрос по адресу <licensing@gnu.org>.

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

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

Говоря о свободных программах, выбирайте слова

Когда речь идет о свободных программах, лучше всего избегать употребления таких терминов, как “раздавать” или “бесплатные”, потому что эти термины подразумевают, что дело в стоимости, а не в свободе. Некоторые общепринятые термины, например “пиратство”, несут в себе точку зрения, которую вы, как мы надеемся, не одобряете. Эти термины обсуждаются на странице Запутывающие слова и выражения, которых стоит избегать. У нас есть также список верных переводов выражения “свободные программы” на разные языки.

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

Кроме программ

Руководства по программам должны быть свободны по тем же причинам, по которым программы должны быть свободны, а также потому, что руководства фактически являются частью программ.

Те же самые аргументы имеют смысл для других разновидностей прикладных произведений — другими словами, произведений, которые содержат практические знания, такие, как учебники и справочники. Википедия — наиболее известный пример.

Любого рода произведение может быть свободно, и определение свободной программы было расширено до определения свободных произведений культуры, применимого к произведениям любого рода.

История

Время от времени мы пересматриваем это “Определение свободной программы”. Здесь размещен список существенных изменений со ссылками на страницы, где в точности показано, что изменилось.

  • Версия 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.