译者:徐明 | 编辑:肖科
01
—
简单的问题
这是一个迷
考虑到MIT 许可证的受欢迎程度,大家可能会认为它的起源会有详细文档记录,但实际上却是个谜。
最近, David Humphrey 在 Twitter 上提出了一个看似简单的问题。
MIT 许可证是何时创立的? 我找不到任何提及其年份的来源。
- David Humphrey (@humphd) 2019年4月1日
说“看似简单”,是因为 MIT 许可证是使用开源软件中最流行的许可证之一。MIT 许可证、Apache 许可证和 BSD 许可证是目前主要的宽松式(Permissive)许可证,这一术语与 GPL 等互惠式许可证形成鲜明对比,因为 GPL 要求在重新分发软件时公开提供源代码。
考虑到该许可证的受欢迎程度,大家可能会认为创立 MIT 许可证的起源会有详细记载。我虽然找到了各种线索,这些线索加起来最早可追溯到上世纪80年代末,但都算不上是确定的证明材料。好在 Keith Packard 和 Jim Gettys 很快加入了讨论,并向我提供了许可创建时的第一手资料。除了提供该许可证的早期案例外,他们还帮助我理解许可证是如何随着时间演变的。
执意想知道该许可证创立的日期?那么它创立的日子可能是在1987年。 但完整的故事其实要复杂得多,甚至有些神秘。
02
—
1987?
有这样一个故事
故事要从麻省理工学院(MIT)的雅典娜计划开始。据 Wikipedia 引述:“雅典娜项目是麻省理工学院、迪吉多公司 ( DEC ) 和 IBM 公司的联合项目,目的是为教育领域建设一个适用于校级范围的分布式计算环境。”自雅典娜项目于1983年推出后,产生了一些重要的软件,最终得到了广泛的应用,其中就包括 X 视窗系统和 Kerberos。
引用 [Wikipedia] 原文 -
https://en.wikipedia.org/wiki/X_Window_System :X 视窗系统是专门为“在显示设备上进行绘制、移动窗口以及键鼠交互”所提供的基本框架。X 视窗系统的第1版虽然于1984年6月问世,1987年它就已被迭代到第11版(因此后续所有版本皆被称为 “X11”)。次要版本则使用诸如 X10R 4或 X11R7.7 之类的命名法。
X 视窗系统最初使用的是专有的许可证,但根据 Keith Packard 的说法,我们现今所指的开源许可证是直到1985年才添加到 X 视窗第6版中的。(“现今所指”是因为“开源”这一术语直到1998年才被 Christine Peterson 所提出。)据 Gettys 回忆道:“在许可证制约下发布 X 视窗系统真的有够痛苦的,当时我认为我们应该直接把它白送出去。” 但事实证明,仅将其传到公开平台并不可行。Gettys 解释道:“ IBM 公司压根就不想理会这些公开的(任何没有特定许可证的)代码。结果我们只好去请麻省理工学院的律师帮忙起草了一份法律文件,明确指出可将 X 视窗系统用于任何目的。我记得当时 Jerry Saltzer 也是起草法律文件的一员,另外我还记得当时我批准了这一结果。”
早期的许可证标准用语是何时稳定下来的依旧难以琢磨。正如 Gettys 评论的:“我们当时在措辞上十分不一致。” 但是,Packard 指出的于1985年添加到第6版 X 视窗系统中的许可证似乎一直延用到第11.5版 X 视窗系统。稍晚一点的许可证标准用语,则似乎已在1994年第11.6版的 X 视窗系统之中引入。
因此,有论点很好地指出:MIT 的许可证,当时也被称为 X 联盟许可证或 X11 许可证,是在1987年与 X11 一同具体化的,所以该发布日理应成为 MIT 许可证出世的正确日期。但有人可能会反驳说:“该许可证应该是1985年创建的,后来几年只不过进行了修订。”在当时的条件下,许可证的确需要经常修订。Gettys 也提到一个例子,虽然 GPLv1 许可证在1989年正式发布,但 Richard Stallman 的 “ Emacs ” 之前就已经采用类似于 GPL 的许可证发布了。
04
—
选择你的日期
选择哪个日期?1985年?1987年?1998年?1999年?
但故事并没有就此结束。如果您仔细查看 X11 使用的许可证和开源促进协会 ( OSI ) 中已批准的 MIT 许可证,二者是不一样的。虽然在精神上相似,但在措辞上就有明显不同。
“现代” MIT 许可证与1998年用在 Expat XML 解析器库的许可证相同。采用该本文的 MIT 许可证是1999年由开源促进协会 ( OSI ) 所批准的第一批许可证中的一部分。怪的是,尽管 OSI 计划将其描述为 “ MIT 许可证(有时也称为【原文】‘ X 联盟许可证’)”,但它实际上与 X 联盟许可证事实上并不相同。
这种转变是如何以及为何发生的 - 甚至是否偶然发生,目前都还是未知。但显然如 OSI 所记录的那样,1999年之前的 MIT 许可证的批准版本使用的是与 X 联盟许可证不同的语言。这也是为什么包括自由软件基金会在内的一些机构宁愿完全规避使用 “ MIT 许可证” 术语的原因,因为 “ MIT 许可证” 可以指向几个相关却不同的许可证。
MIT 许可证并不是唯一有不一致性的许可证。例如,尽管没有明显的版本区别,三条款 BSD 许可和较老的四条款 BSD 还是不一样的。
好了,解释到这里。选择你的日期吧。是1985年的先驱许可证。 还是取自1987年的 X 联盟许可证或是 X11 变种证。亦或是1998或1999年的可进行外部引用许可证。
最后,感谢参与本 Twitter 话题的诸多评论者们,他们使此文成为可能。
作者简介 / AUTHOR
Gordon Haff - 是红帽公司的技术传道者,经常在客户和行业活动上发表演讲,同时也帮助红帽公司为云解决方案的整个方案组合制定战略。除了其他刊物,他也是《电脑和应用程序的锅碗瓢盆:软件如何学会自我包装》( Pots and Vats to Computer and Apps: How Software Learned to Package Itself )一书的作者之一。在加入红帽公司之前,戈登撰写的数百条研究笔记常被《纽约时报》等出版物所引用,内容涉及广泛的 IT 话题,等等。
精彩推荐