这是针对英文原版页面的中文翻译。

我未使用非自由软件但成功毕业


作为一个大学生,我和其他人一样在疫情中挣扎度过。许多人经历亲人死别,或者失去工作。而我在波兰克拉科夫市的 AGH 科技大学学习信息技术时,进行了别样的斗争。下面我讲一下我的斗争经历,为了鼓励和激励更多人。

不道德的平台

软件自由在这个时代是一个非常大的问题,但是它并不显而易见。数字通讯技术,比如视频会议,占据了我们生活的中心位置,许多用户视之为法宝。他们没有注意到隐藏在这些应用之下的危险:控制这些技术的人控制了我们的生活。最近我们已经看到超级技术公司在颠覆民主、操控言论、排除异己、侵占隐私。

软件自由就是为人们夺回控制权的斗争。它针对的是“非自由”软件,又称为 专有软件,这种软件强加给用户不公正并全面伤害用户。为了追求自由的使命,象我一样的软件自由倡导者坚持使用 自由 软件。

向新生代传播这些理念尤为重要。不幸的是,我们看到的趋势正相反。在我的祖国,课堂里大多数计算机的操作系统缺省都是专有的 Microsoft Windows,甚至某些大学还为学生提供许可证。我终于认识到这种活动实际上只为专有操作系统供应商输送了利益。同样令人不安的是课程的安排在很大程度上依赖于非自由的 Google 电子表格。

由于受到专有软件创建的网络压力,在疫情期间我们看到教育机构草率地接纳了诸如 Microsoft Teams、Zoom 和 WhatsApp 等专有软件。然后,中小学和大学又强加之于学生,结果就是学生们由于使用他们无法控制的软件而丧失自由,更不必说这些软件糟糕的安全性和对隐私的侵犯。

因为我拒绝使用不道德的软件,所以对专有平台的完全依赖就是一个道德冲突。我的目标一直是完成大学学位而不向强加给我的非自由服务投降,我的方法就是说服教授们[2] 让我使用自由软件替代那些专有应用。我未曾期望能够打赢这场力量悬殊的战斗,但是现在,通过立场坚定而有礼有节的行动,我觉得我全面占了上风。希望我的故事也能够帮你坚持不懈。

道德研究

历经时日,我越来越坚持避免非自由软件。其中的挑战包括使用带 Libreboot 的 ThinkPad 笔记本电脑、使用只有自由软件的 GNU/Linux 发行版。你也许会问:

那么学业怎么办?难道你不是要用 Windows?或者 MS Office?或者其他专有工具?

实际上,大多数的课堂作业都可以用自由软件完成。今天,我们已经有了卓越豪华的自由操作系统以及可以完成大多数任务的自由工具。大部分流行的编程语言都有自由的实现。对那些少数需要非自由工具的情况,我有时可以说服教授让我用替代品——比如,用 PostgreSQL 数据库代替 Oracle 数据库来完成练习——有时就用学校实验室的电脑来完成作业。我得承认,在别人的电脑上运行非自由软件也没有完全解决我们的道德问题。只是看起来过得去,但是我并不以此为自豪。

现在我对内置在浏览器里的 JavaScript(js)更加认真了。Web js 程序运行在被隔离的沙盒里,这让许多人觉得即使不是自由程序也可以接受。沙盒也许解决了安全问题,但是这些专有程序的真正问题在于它们剥夺了用户的控制权。目前,要在网络浏览器里保持用户的软件自由还不那么容易。禁用 js 之后,网站会不太好用。我就曾经请同事帮忙把研究数据输入到 Google Sheet 中,因为不打开 js 根本没法用。此外,js 代码也常用来实现跟踪用户的浏览器指纹收集器。

礼貌地劝说

没有太大的问题,我完成了学业的第五个学期。第六学期刚开始,疫情也开始了。学校关闭了物理设施,大多数学生回了家。教授开始安排远程课堂。毫不奇怪,他们都选择了专有平台。Cisco Webex、Microsoft Teams、ClickMeeting 以及 Skype 都是流行的选择。我无法找到这些平台的自由软件客户端。而且,教授们也没有意识到非自由 js 的问题,他们期望大家都能方便地通过网页接口参加视频课程。

我如何处理这些需求?我 非常 客气地给每位要使用问题平台的教授写邮件,向他们解释那个平台没有自由软件客户端。我通常会提供一个关于软件自由和大学问题的在线说明,还有自由软件基金会制作的 “蒙面英雄” 视频,以及指向自由在线视频会议如 Jami 和 Jitsi Meet 的链接。

我向他们解释,虽然这些中心化平台有许多已知的监控和安全问题,但是对我来说,软件自由是真正的问题。教授有的回信敦促我 “在虚拟机上运行这些软件”,有的说我 “使用服务无需源代码,”很显然这些教授没理解这个问题或者对此问题只有片面了解。如果我不是学的计算机科学,那么我怀疑其他学科的人对此的理解就更少了。

错失

这里有两类不同的事情需要担心。第一类是获取和参加教学活动;例如,在机器学习课上,我找人把教授的讲解转发给我。第二类是注册和评估。有些远程课不点名。我就逃课了。把家庭作业上传到 Moodle 也没什么问题。

第一次真正有问题的是人工智能(AI)课。它由几个教授轮流上课。第一位教授的作业需要使用专有软件 Framsticks,但是允许我用神经网络的练习做替代。另一个教授同意我用 Webots 代替 Choreographe 完成模拟练习。还有一个教授要求我们完成一个在线的 NVIDIA 课程,这个要求非自由的 js,而这个教授没有回复我的邮件。

一个分布式系统的作业要使用 Webex 提交,但是教授同意我用 Jami。

不确定性和怀疑

另一个问题是由于缺少明确的政策而带来的不确定性。不知道大学是否认同我的原则让我倍感压力。尽管我前面取得了一些小胜利,还是有其他的轮流授课教授需要一个一个同意我的作业是否通过,因此直到六月我都无法确定我是否能成功。三月,系统编程课开始了。这个教授不想花时间连接到自由平台批改我的作业,让我几乎绝望,因此我又一次在不确定之中度过复活节。

我坚信每个课程都应该 至少 提供一些使用自由工具来参与的方法,这样学生们至少可以在自由平台上阅读作业,并上传答案。除非大学提供这种可操作性,对专有软件的依赖就会导致学生和教授双方耗费时间和精力。我当时写信给两位教授关于使用非自由平台上课的问题。一个根本不回复,另一个回复得很粗暴。他们似乎是不理解,但是我怀疑他们根本是避免额外的工作。这腐蚀了我上课的热情,我不再关心上课。某个特定语言的包管理器让我感到有安全和自由的风险,避免使用该包管理器让我花费了大量时间,功课也落后了。时间对大家都很宝贵。

自由的阻力

虽然有压力,不过事情目前还是相当顺利。不过复活节之后,一门软件工程课出现了大问题。教授先是不理我的多封邮件,但是最后还是写了长长的回复,并威胁说如果我再有一次误课就判我不及格。这个邮件语气非常厌烦,或许是气愤。有人建议我通过同学的帮助参加线上课程。我和一个同学通过 Mumble 连接,教授也在其中——不完美,但是可以完成任务!

软件自由的问题,是一个道德问题,它必须和开源运动经常看重的其他问题分开。比如,开源的推动者不愿意把自由这样重要的问题拿出来讨论,他们只是说社区可以帮助源代码公开的软件提高质量。同时,我们的对手宣称专有软件可以带来更高的收益,并雇佣更多的开发者来改进质量。

编译器课程的考试要采用 Microsoft Teams 进行。我再一次坚持原则,并觉得自己要挂科。很搞笑,Teams 挂了。它无法处理多名学生同时连线,因此考试采用了电子邮件。另一方面,在七月份和论文导师的沟通中,Jami 也崩了。没有完美的软件。但是自由软件至少在崩溃的时候还能捡到碎片。

软件并不一定只是由于功能而和自由产生摩擦。暑假里我需要做实习。当知道雇主将让我的代码变得非自由时,我退出了这个付钱的工作。最后,我做的是不付费的实习。

经过这一系列斗争,我最终度过了夏季学期,拿到了不错的成绩。这个好多次看来几乎不可能的事成了现实。

各个层面的专有软件

冬季学期之前,教授们收到一个遵循数据保护法律的可用视频会议平台列表。它们包括 Microsoft Teams、Cisco Webex、ClickMeeting 和 Google Meet。你肯定看得出其中的讽刺意味!

有个教授同意在其课程上使用 Jitsi Meet,并建议我请学生委员会把这个平台推荐给校长,但是委员会一直没有回复我的邮件。提供更佳数据保护的高质量软件被成心搁置在外为商业化非自由平台提供便利,这看起来就像一个教育机构被行业腐败征服的案例。自由软件没有被批准,这个教授还是用 Webex 和其他同学沟通。

误区

如前所述,尽管他们是很有知识的计算机科学家,在信息科学领域也很有经验,许多学者对软件政治和软件道德的理解通常却较差。

授课的教授称因为自由平台也运行在别人的服务器上,“所以它不会更安全。”我回复说 Jitsi Meet 允许创建独立的应用,这就根除了依赖于某个公司的问题。我还指出其他服务的主要问题是缺少自由的客户端。这些有地位的教授完全掌握了中间加密和点对点加密的不同,虽然他们在课堂上如此讲述,但是在日常工作中却从不如此实践,这真是一个悲哀。

有些时候,我会反对使用 Windows 虚拟机来做渗透测试练习。教授说只用自由服务器的测试者不会成为一个好的渗透测试者。我放弃了对他的反驳,但是我认为专有平台默认就是不安全的,因为它们本身就可能有后门。

解决

有一次,我和导师起了争执,他向我发出了必须使用 Microsoft Teams 的最后指令。我没有同意,他向校长提出不再指导我。也许校长没有读那封邮件?我只是瞎猜。不管怎样,几周之后,我还从他哪里借了一些电子设备——看来好象没发生过争执一样。

后来,还有一个教授因为我不使用 Teams 而不同意让我通过课程,他想让我因为 “缺课” 而不及格,尽管我整个学期都上传了作业。经过长时间的争论,我获得一次在 1 月 8 日线上开会的机会......使用 Teams!我还是礼貌地拒绝了,并重申了我的观点。教授最后把邮件抄送给副校长。与此同时,我错过了在 1 月份答辩而上传论文的最后期限。在多次提醒之后,终于有了回复,通过校长的调停,我获得了学分,通过了第七学期并在 3 月份成功通过答辩。

结论

回顾这一切,我为自己的所作所为而自豪。我冒着学业失败的风险,我的分数也比使用非道德不安全的软件提交作业获得的分数更低。但是我很满足。我觉得向非自由平台投降并不能带来长期的利益——只有更多的妥协。

我们可以看到有些人不能容忍软件自由的原则,但是这些人终究是少数,AGH 的大多数教研人员实际上对我很友善。谢谢他们,现在我证明了不依赖非自由软件而学习、毕业…乃至 生活完全可行的。经历了这些困难的考验之后,我觉得比以往更加独立,而且我甚至收到了来自著名的 RMS [3] 的感谢。希望我的故事能够帮助更多学生这样做。

为了只运行自由软件的努力过去促使我、而且会继续促使我获得新的技能。现在,我对网络技术足够了解,能够让一些网站没有 JavaScript 也能正常运行。但是其中最棒的体验是我能分享我的解决方案给其他人,并最终让万维网的一部分成为自由。


[1]感谢 Andy Farnell、Andy Oram 和 Richard Stallman 的帮助。

[2]本文所有的大学教师都以我的教授相称,虽然其中只有部分教师有正式的教授头衔。

[3]Richard M. Stallman 博士,自由软件基金会创始人,GNU 工程的首席搞怪官。