网络服务不是自由或非自由的问题;它们带来其他问题
Richard Stallman 著程序与服务是两种不同的实体类型。程序是指可执行的工作代码;而服务则指可供交互的活动。
对于程序,我们区分自由软件和非自由(专有)软件。更准确地说,这种区分适用于您拥有的程序副本:要么您 拥有该副本的四种自由,要么您没有。如果没有,该程序就对您造成了一种特定的不公,仅仅因为它是非自由的。
非自由软件的版权持有者可以用一种简单明了的方式纠正这种不公:以自由软件许可证发布相同的源代码。说服他们这样做可能很困难,但这个行为本身是直截了当的。
一项活动(如服务)并不以副本形式存在,因此用户不可能拥有其副本,更不用说制作更多副本了。由于缺乏可修改的副本,用户也无法对其进行修改。因此,定义自由软件的四大自由对服务而言毫无意义。说某项服务是"非自由"或"自由"的都没有意义。这种区分对服务根本不适用。
这并不意味着服务就能公正对待用户。恰恰相反——许多服务会以各种方式伤害用户权益,我们称之为"敌服务"。但与处理非自由程序(通过将其发布为自由软件,让用户能运行并控制自己的副本和版本)不同,对于这类服务问题并不存在简单通用的解决方案。
用烹饪来类比:我的烹饪方式不可能是你烹饪方式的复制品——即便我是通过观察你学会烹饪的。我或许能复制并使用你烹饪时采用的食谱(因为食谱和程序一样,是可复制的作品),但你的食谱并不等同于你的烹饪方式。(这两者也不同于你烹饪产出的食物。)
在当今技术条件下,服务通常通过计算机运行程序来实现,但这并非唯一实现方式。(事实上,某些网络服务是通过人工输入问题的回复来实现的。)无论如何,服务的实现方式对用户不可见,因此不会对其产生直接影响。
网络服务可能通过其所需的客户端软件,引发用户面临自由与非自由软件的问题。若某项服务要求使用非自由客户端程序,则使用该服务即意味着您需向该程序让渡自由权利。许多网络服务中,这些非自由软件正是 JavaScript 代码——它们会悄无声息地安装于用户浏览器中。GNU LibreJS 程序能帮助您拒绝运行此类非自由 JavaScript 代码。但需注意:客户端软件问题与网络服务本身在逻辑上是相互独立的。
存在一种服务与程序可直接类比的情况:当使用某项服务等同于拥有并运行某个假设程序的副本时。我们将此类服务称为"服务替代软件"(Service as a Software Substitute,简称 SaaSS,这个术语比笼统的"软件即服务"更精确),这类服务本质上都是有害的。因其处理的事务本属于用户自主计算范畴,理应由用户完全掌控。用户实现自主计算的正确方式,应是运行自己拥有的自由软件副本。若将计算任务交由他人服务器执行,则意味着放弃控制权。
SaaSS 本质上等同于使用带有监控功能和通用后门的非自由软件,因此 您应当拒绝此类服务,改用具备同等功能的自由软件 来完成相应任务。
然而,大多数服务的核心功能是信息通信或发布——这与自行运行程序截然不同,因此它们不属于 SaaSS 范畴。这类服务也无法通过您本地的程序副本来替代:一个仅在您个人计算机上运行、仅供您单独使用且与他人隔离的程序,本质上无法实现任何通信功能。
非 SaaSS 类服务仍可能通过特定方式不公正地对待用户。例如:滥用用户提交的数据,或过度收集信息(监控行为);采用误导欺骗用户的设计(如"暗黑模式");强加反社会或不合理的使用条款。《富兰克林街声明》 曾尝试探讨这些问题,但我们的认知仍不完善。可以明确的是,服务相关议题与程序问题存在本质差异。因此,为避免概念混淆,最好不要对服务使用"自由"与"非自由"的划分标准。
假设某项服务通过软件实现:服务器运营者持有多个程序副本,并通过运行这些副本来提供服务。这些副本可能是自由软件,也可能不是。若运营者自主开发且仅自用(不对外分发副本),从技术层面讲这些软件可视为自由的——因为每个使用者(即运营者自身)已拥有四项自由。
若其中部分程序属于非自由软件,通常不会直接影响服务使用者——毕竟用户并未直接运行这些程序,而是由服务运营商在运行。但在特定情境下,这些程序可能间接影响用户:当服务存储隐私信息时,用户可能担忧服务器上的非自由程序存在后门,导致第三方窃取其数据。本质上,服务器运行非自由程序意味着用户不仅需信任服务运营商,还不得不信任这些程序开发者。其实际风险程度取决于具体细节,包括相关非自由程序的具体功能。
然而,必然受到这些非自由程序侵害的,正是服务器运营者自身。我们不会因运营者受制于非自由软件而谴责她,更不会因此抵制其服务。相反,我们如同关切所有非自由软件使用者那样关注她的自由。若有机会,我们会向其解释这些程序如何剥夺她的自由,期待她能转向自由软件。
反过来,若服务运营商使用 GNU/Linux 或其他自由软件,这并非能惠及您的美德,而是她自身的获益。我们不会为此赞扬或感谢她,而是祝贺她做出了明智选择。
若她为服务开发了软件,并以自由软件形式发布,这才值得我们致谢。我们建议采用 GNU Affero GPL 协议发布这些程序,毕竟它们显然适用于服务器环境。
因此,我们并不规定自由系统不能使用(或依赖)基于非自由软件实现的服务(或网站)。但必须拒绝依赖、推荐或鼓励使用 SaaSS 的服务——这类服务必须被自由软件替代。在同等条件下,我们鼓励:优先选择那些通过发布实用自由软件回馈社区的服务提供商;对于本无需中心枢纽的活动,优先采用点对点通信而非基于服务器的集中式通信。