比尔盖子 博客

Sticky post
不成熟的优化是万恶之源。

by Donald E. Knuth

自由软件基金会的历史包袱 —— GFDL

当我们需要发布文档的时,可以选择有许多不同的许可证。事实上,老牌的 MIT、BSD 或 GPL 均可以用于任何作品,包括文档在内;但你可能会说,这些都并非专门为文档制定,因此需要一些更合适的,没问题,你可以立刻加入 CC 协议豪华午餐;但你可能又会说,你已经采用 GPL 许可证作为了项目的主许可,采用另一个组织发布的许可证,不太整齐划一,因此希望使用 GFDL 许可证。

这并非没有道理,《GNU 自由文档许可证》是 FSF 专门为文档量身定制的。如果你是 FSF 的支持者,FSF、GNU 和自由看上去都会是首选,更何况这也是一个老牌的许可证,比 AGPL 等许可证的岁数都大得多,看上去也挺靠谱的。然而,在 21 世纪 10 年代的今天,GFDL 已经不再是好选择,我将通过这篇文章证明这点。

不可变章节,中出叛徒

何为自由?不同的哲学家自然有不同的观点。但盖子讨论的显然不是这个了 —— 自由软件界的四大自由分别是:

自由之零:任意使用此作品,其目的不受任何限制;
自由之一:研究作品本身,并按照自己的意愿随意修改;
自由之二:分发作品的拷贝; 自由之三:分发自己修改过的拷贝。

但是反过来看看 GFDL,里面却说作者可以将自己作品中的某些章节,宣布为不可变章节。在其他人根据 GFDL 分发作品时,这些所谓的“不可变”章节就都是严禁修改的了。当年 Debian 的开发者看到了,就立即表示不服。GFDL 中居然允许公然违反自由之一和自由之三?这不是我们中出了个叛徒吗?

“什么?你说并非所有内容都是不可变的,这不就完全是一副‘自由作品里的不可变章节,能叫封闭吗?’的不讲理态度么?”,Debian 开发者纷纷这样表示。按照这个思路,盖子甚至还可以将文章所有的部分都“不可变”,然后以 GFDL 发布冒充自由文档,就等着有人上钩吧 lol. 而且这也导致了一些实用主义上的问题,假如我要翻译一本书中的不可变章节,那么我只能以中英对照这样的方式进行翻译。

但反过来想,不可变章节的规定并非是凭空出现的。很多作者都认为,自己的精神和思想体现在作品中,他人对其的任何改动都是糟蹋了作品,也就是糟蹋了作品的思想。更进一步,他们认为作者有必要在一定程度上对作品进行适当的控制,来避免这样的事情发生。事实上,黑客史的早期,许多黑客都以此为理由拒绝自由软件许可证。而如今的同人创作界不采纳自由许可证,这也是重要理由之一。就算你并不持有这样激进的看法,我相信当编辑将你文章里的内容,修改得与本意完全相反的时候,你自然也会十分不满,而不可变章节的相关规定,就是一种保护手段,避免原作者的文章写作意图被抹除掉,甚至是被修改成完全相反的意思进一步误导他人。

考虑到这份许可证本身就是为文档而量身定制的,这个规定并非无法理解。而且更进一步,如果你告诉我:因为 GFDL 允许不可变章节,就直接认为 GFDL 就会破坏自由。这时候正方就会让你就要想想了:不可变章节是谁规定的?到底是 GFDL 在破坏自由,还是你在破坏自由?如果你希望作品自由,你可以完全没有不可变章节。

附带协议,有害地球

GFDL 规定了,任何使用 GFDL 的作品都要在发布的时候完整的附带 GFDL 的许可证全文。要知道,每生产一吨纸就会消耗 24 棵树,而一棵树每年能吸收 20 千克的二氧化碳。每篇文档都要附带这么长的许可证,你当全球变暖是闹着玩的吗?不不不,这么说我就上当了,因为全球变暖是以微软为首的财团制约自由软件发展的骗局(大雾!

虽然 GFDL 的制定者表示,如果我们的读者并不知道 GFDL 许可里都说了些什么,那么自由许可也就失去意义了,因此我们要必要明确传达许可证的内容。这对一本书来说也许不成问题,但并非只有书籍才使用 GFDL,如果我用 GFDL 发布一份 100 个字的菜谱,我居然要附带上足足 10 页满满 A4 纸的许可证!事实上,当年一家旅游网站就遇到过这个问题,一张导游路线必须附带 GFDL,这还让不让人旅游了。维基百科在 2008 年左右也因为这个问题全面切换到了 CC 协议,这也是为什么 GFDL 和 CC 是维基百科双许可的原因。

但是,这依然不足以说服所有开发者,因为它们主要写的是技术书。

不兼容 GPL,匪夷所思

由于 GFDL 中允许作者主动加入不可变章节的限制,而 GPL 是个非常积极抵制限制的许可证,把这两个抖 S 放在一起,必然会导致有点匪夷所思的结果:GFDL 与 GPL 双向不兼容!这也就意味着,假如你用 GPL 发布了一个程序,我用 GFDL 写了一篇技术分析,并且引用了你的源代码,那么我就立刻变成了侵权者。你没有看错!反过来,你引用了我的 GFDL 技术书中的代码,写了一个 GPL 的程序,那么你也会成为侵权者。

这真是一个是一大败笔,但修复它就很纠结了,十分的困难。就连 FSF 的首席法律顾问伊本·莫格林,都在 2006 年召开的 GPLv3 制定大会上吐槽,说经过这么多年的努力,我们终于把 LGPL 以 GPL 附加条款的形式表述了出来,弱力、强力和电磁力就都被大统一了。然而 GFDL 这个烦人的引力我们就是纳入不了统一场论 —— 这实在是太难了。当时在大会上 FSF 确实说要改革 GFDL,但因太难,以至于到现在这万有理论依然是没动经。

Debian 与 FSF,官方逼死同人

由于以上的种种争议,Debian 开发者在大约 10 年前,终于通过了多论激烈的讨论,宣布 GFDL 不符合 Debian 的自由指导方针(DFSG),不承认 GFDL 是自由许可证。Debian 的自由指导方针在立场上和 GPL 很相似,于是一群人站在 GPL 的立场上,对本是同根生的 GFDL 判了死刑。所以所有用 GFDL 授权的文档在 Debian 里大都位于 non-free 软件源里。

此外,Debian 开发者还开发了一个工具,叫做 vrms,也就是史托曼模拟器(Virtual RMS),可以把电脑里安装的所有不自由软件全部列出来,以方便你进行卸载。然而问题是这个软件是既然是 Debian 开发的,自然是按照 Debian 的自由指导方针来写了……于是这位虚拟史托曼就会告诉你,这些使用 GFDL 的文档都是专有的,建议卸载。后来这事被 GNU 的一些开发者之后了,于是它们又以诬陷 GFDL 为理由,将 vrms 工具列入了 FSF 官方的“不自由列表”,说 vrms 这程序有害你的自由,请立刻卸载!

这是在十分可笑,但遗憾的是所有修改 GFDL 的尝试,都遇到了法律层次技术的问题而不太成功,相关讨论一直被无限搁置。

历史问题,后人解决

GFDL 的历史相当悠久,和 GPLv1 是在同一个时间出现的,是自由许可证的先驱。然而历史包袱也是本意为好的 GFDL 遇到了种种未曾预料到的问题。在 21 世纪 10 年代的今天,知识共享的 CC 许可证在制定时既然已经避免了 GFDL 遇到的这些陷阱,而且也得到了 FSF 以及整个社区的公认,没有理由不将 CC 协议看作 GFDL 的升级版,那么为何不去使用呢?

可见,GFDL 并不适合作为像 GPL 一样的默认选择,只有遇到特殊的需求才有必要使用它,其他通行的情况下,默认使用 CC 协议有助于整个开源和自由软件社区的所有人前进。

Chromium 还是 FireFox?

比尔盖子从去年开始进行全系统加固,无论是个人电脑还是服务器都部署了 Gentoo Hardened,并采取了不同程度的安全措施。Chromium、FireFox,以及基于 Webkit 的外壳浏览器是自由软件界的御三家,从特性上来说各有独自的优势 —— 如果要从这一点上进行谈论恐怕会触发圣战,这也并不是比尔盖子撰写本文的目的。本文企图从系统安全的角度来说明浏览器的选择。

Continue reading

服务器维护初步结束

2013 年,爱德华·斯诺登披露了棱镜计划,于是人们,包括盖子自己终于学会了如何正确配置 TLS;2014 年,各研究者纷纷加入到 Linux 安全的研究行列中,随着一篇“炮打shell司令部root,我的一个 exploit”的 Bug 报告,以前那种“随便配置个 Linux 服务器让它跑”的欢乐时光已经彻底结束,真是让各运维苦不堪言,都快患上 Shell Shock 了,人们不得不以正确的态度开始对待安全;2015 年,越来越多的安全审计也被提上日常。

在这样的背景环境下,学习并应用的安全技术是多多益善的。因此,我在今年初部署了一台实验性的服务器,用于测试 PaX 技术。如今,虽然 grsecurity 以盖子的能力完全掌握还需要时间,但 PaX 已经完成测试可以部署了,而盖子的服务器运行了两年时间,也暴露出来一些问题。

因此盖子进行了一次大型服务器维护。而凑巧,在服务器进行维护之前的 8 月 15 日,忽然被 GFW 屏蔽了!一天之后,服务器也进入了关机维护状态,以至于不少人出现了“这服务器怎么挂了代理也不能翻墙访问”的错觉。

长话短说,这此维护的摘要如下(随着维护的进行,可能会更新):

Continue reading

为什么 os.path 可以被直接导入

今天在微博上,@julyclyde 发现了一个看似简单但很有意思的问题,import os.path 的行为很奇怪。

Continue reading

开发者张峻锋被指参与恶意软件

今天下午,惊闻 MMD 宣布张峻锋(微博:@马鹿峻鋒連聊C)被认定参与了恶意软件的编写。按照我个人的了解,张峻锋在学业之外,积极参与自由软件开发,包括 AOSC 社区的一部分工作,不太可能从事利用蠕虫危害网络安全的事情。因此做了一些调查,事件始末如下。 Continue reading

宣布「盖子 CA」

很多时候,去大型正规 CA 机构获取证书是不现实的,包括但不限于:测试 应用、私人服务器。然而,单独为这些使用场景每次都现生成一个自签名证书 不便于管理:你必须手工核对大量的自签名证书指纹。

「盖子 CA」是比尔盖子为了对自己的自签名证书进行统一管理,解决其签名证书混乱,而自行设立的个人 CA。当然了,这个 CA 是不被任何厂商信任度的。比尔盖子的信任管理手段很简单,就是使用 PGP 对我的 CA 证书进行签名,这样,如果 你本来就信任我的 PGP 公钥,那么你就可以确信某证书的确是我签署的。 Continue reading

服务器 SSH 新增备用端口

由于众所周知的原因,服务器的 SSH 端口 22000 开始变得不太稳定,经常出现无法连接的情况。因此,现启用备用端口,如无法连接服务器,可尝试连接端口 12450

利用公共邮件列表进行邮件洪水攻击

A Flooded Mailbox

近日起,比尔盖子在 24 小时内收到了 20000 封来自公共邮件列表的订阅确认邮件,八成都来自自由和开源软件(FOSS)项目的邮件列表。而涵盖的项目也至少多达 20 个,不限于 OpenBSD、FreeBSD、GNU 计划、Ubuntu、CentOS、Qt、HostAp,甚至是以邮件著称的 Postfix。“订阅者”来自多个 IP。 Continue reading

« Older posts

Copyright © 2016 比尔盖子 博客

Theme by Anders NorenUp ↑