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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

И наоборот, если оператор службы работает с GNU/Linux и другими свободными программами, для него это не заслуга по отношению к вам, а выгода. Мы не хвалим и не благодарим его за это; мы поздравляем его с мудрым решением.

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

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

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