Сетевые службы не свободны и не несвободны; они поднимают другие вопросы

Ричард Столмен

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

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

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

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

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

Сетевая служба может представлять для пользователей службы проблемы, связанные со свободой программ, в связи с клиентскими программами, необходимыми для пользования ею. Если служба требует пользования несвободной клиентской программой, то пользование службой требует, чтобы вы уступили свою свободу этой программе. Во многих службах Интернета такими несвободными программами являются программы на языке JavaScript, молча устанавливаемые в браузере пользователя. Программа GNU LibreJS облегчает отказ от выполнения этих несвободных программ на JavaScript. Но проблема клиентских программ логически отделена от службы как таковой.

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

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

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

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

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

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

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

И наоборот, если оператор службы работает с GNU/Linux и другими свободными программами, для него это не заслуга по отношению к вам, а выгода. Мы не хвалим и не благодарим его за это; мы поздравляем его с мудрым решением. Если он обнародует какие-то из этих свободных программ, внося таким образом вклад в прогресс сообщества,— тут у нас появляется основание благодарить его. Мы рекомендуем выпускать эти программы под GNU GPL Афферо, поскольку они, очевидно, будут полезны на серверах.

Зачем нужна GPL Афферо?

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