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

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

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

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

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

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

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

Пакеты программ

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

Пакет программ, как правило, применяется вместе со многими другими пакетами. взаимодействуя с некоторыми из них. Какого рода взаимодействие с несвободными программами этически приемлемо?

Мы разрабатывали GNU, чтобы была свободная операционная система, потому что в 1983 году ни одной такой системы не существовало. При разработке первых компонентов GNU в восьмидесятых годах XX века каждый компонент неизбежно должен был зависеть от несвободных программ. Например, никакая программа на Си не могла работать без несвободного компилятора, пока не заработал GCC, и никакая программа на Си не могла работать без библиотеки libc Unix, пока не заработала glibc. Каждый компонент мог работать только в несвободных системах, потому что все системы были несвободными.

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

Когда в 1992 году было освобождено ядро, Linux, оно заполнило последний пробел в системе GNU. (Первоначально, в 1991 году, Linux распространяли под несвободной лицензией.) Сочетание GNU и Linux дало полную операционную систему — GNU/Linux.

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

Однако несвободная программа, которая работает поверх свободной,— это совсем другое дело, потому что она подталкивает пользователей сделать шаг от свободы. В некоторых случаях мы не допускаем этого: например, в GCC запрещены несвободные внешние модули. Когда программа допускает несвободные дополнения, она по крайней мере не должна направлять к ним людей. Например, мы отдаем предпочтение LibreOffice перед OpenOffice, потому что OpenOffice предлагает несвободные дополнения, в то время как LibreOffice обходит их стороной. Мы разработали IceCat первоначально для того, чтобы не предлагать несвободные дополнения, которые предлагаются в Firefox.

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

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

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

Дистрибутивы GNU/Linux

После освобождения Linux в 1992 году люди стали разрабатывать дистрибутивы GNU/Linux. Только немногие из них представляют полностью свободные программы.

Правила для пакета программ применимы и для дистрибутива: этичный дистрибутив должен содержать только свободные программы и направлять пользователей только к свободным программам. Но что значит, что дистрибутив “содержит” конкретный пакет программ?

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

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

Разработчики становятся ответственными за установку несвободной программы, когда они направляют к ней пользователей — например добавляя ее в список пакетов дистрибутива, распространяя ее со своего сервера или представляя ее как решение, а не как проблему. В этом-то большинство дистрибутивов GNU/Linux этически небезупречно.

Те, кто сами устанавливают пакеты программ, обладают определенным уровнем умственной культуры: если мы им говорим, что Иго-го содержит несвободные программы, а И-иго-го свободно, можно ожидать, что они запомнят, что есть что. Но дистрибутивы рекомендуются обычным пользователям, а они такие подробности в голове не держат. Они подумают: “Как они сказали? Что мне нужно? Кажется, Иго-го”.

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

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

Напротив, дистрибутив GNU/Linux, как правило, содержит тысячи пакетов, и разработчики дистрибутива могут добавлять сотни пакетов в год. Если не прилагать серьезных усилий, чтобы избегать пакетов, содержащих какие-то несвободные программы, некоторые такие пакеты в дистрибутив наверняка закрадутся. Поскольку число свободных дистрибутивов невелико, мы просим разработчиков каждого свободного дистрибутива объявить о намерении сохранять дистрибутив свободным, удаляя любые несвободные или вредоносные программы, в качестве условия перечисления в списке свободных дистрибутивов. См. рекомендации GNU для свободных дистрибутивов систем

Мы не просим, чтобы такие обещания делали разработчики пакетов свободных программ: это нереально и, к счастью, не нужно. Получение обещаний сохранять программу свободной от разработчиков 30 тысяч свободных программ позволило бы избежать некоторых проблем за счет больших затрат труда со стороны сотрудников ФСПО; кроме того, большинство этих разработчиков никак не связаны с проектом GNU, так что у них может и не быть никакого резона давать нам какие бы то ни было обещания. Так что мы обрабатываем те редкие случаи, когда свободная программа становится несвободной, по мере того как узнаем об этом.

Периферийные устройства

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

Проверить это легко: подключите устройство к компьютеру под управлением полностью свободного дистрибутива GNU/Linux и посмотрите, работает ли оно. Но большинство пользователей хотело бы знать это до того, как они купят устройство, так что мы перечисляем данные многих устройств на h-node.org, в базе данных аппаратуры для полностью свободных операционных систем.

Компьютеры

Компьютер содержит программы разных уровней. По какому критерию мы должны сертифицировать компьютер, который “Уважает вашу свободу”?

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

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

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

Поскольку сертификация продукта представляет активное содействие ему, мы настаиваем, чтобы продавец в свою очередь поддерживал нас, говоря о свободных программах, а не об открытом исходном тексте и называя сочетание GNU и Linux GNU/Linux. Мы не обязаны активно содействовать проектам, которые не станут признавать нашей работы и поддерживать наше движение.

См. наши условия сертификации.

Страницы сайтов

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

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

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

Однако если страница не может выполнять свои функции без работы несвободных программ на JavaScript, то ссылка на нее бесспорно означает просьбу выполнить эти несвободные программы. Мы принципиально не ссылаемся на такие страницы.

Заключение

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