最近,大卫·汉弗莱在 Twitter 上提出了一个看似简单的问题。
MIT 许可证是什么时候创建的?我找不到任何给出年份的来源。
— 大卫·汉弗莱 (@humphd) 2019 年 4 月 1 日
我说“看似简单”,是因为 MIT 许可证是开源软件最常用的许可证之一。MIT 许可证、Apache 许可证和 BSD 许可证是主要的许可许可证,这个术语与像 GPL 这样的互惠许可证形成对比,后者要求在重新分发软件时提供源代码。
鉴于其受欢迎程度,您可能会认为该许可证的起源会有详细的记录。我发现各种线索表明日期在 1980 年代后期,但没有确凿的证据。然而,基思·帕卡德和吉姆·盖蒂斯加入了讨论串,提供了关于许可证创建的第一手资料。除了提供早期许可证示例外,他们的帮助还让我更好地理解了许可证是如何随时间演变的。
日期?最好的单一答案可能是 1987 年。但完整的故事更加复杂,甚至有点神秘。
这个故事始于麻省理工学院 (MIT) 的雅典娜项目。“雅典娜项目是 MIT、数字设备公司 (DEC) 和 IBM 的联合项目,旨在为教育用途创建一个全校园分布式计算环境,”维基百科说。该项目于 1983 年启动,催生了重要的软件,这些软件最终将被广泛使用,包括 X Window 系统和 Kerberos。
X Window 系统专门为“在显示设备上绘制和移动窗口以及与鼠标和键盘交互”提供了基本框架,维基百科说。X 的版本 1 于 1984 年 6 月发布。该软件在 1987 年达到了版本 11(因此称为“X11”,此后的所有版本都如此称呼)。次要版本使用诸如 X10R4 或 X11R7.7 之类的命名法。
X 最初是在专有许可证下发布的,但根据帕卡德的说法,我们现在称之为开源许可证的许可证被添加到 1985 年的 X 版本 6 中。(我说“现在称呼”是因为“开源”这个术语直到 Christine Peterson 在 1998 年创造了这个术语。)根据盖蒂斯的说法,“以许可证分发 X 变得非常麻烦,所以我认为我们应该直接放弃它。” 然而,事实证明,仅仅将其放入公共领域是不可行的。“IBM 不会接触公共领域的代码(任何没有特定许可证的代码)。我们去找 MIT 的律师起草文本,明确使其可用于任何目的。我认为杰里·萨尔策可能与他们一起起草了文本。我记得批准了结果,”盖蒂斯补充道。
关于早期许可证语言何时稳定下来,存在一些歧义;正如盖蒂斯写道,“我们在措辞上不是很一致。” 然而,帕卡德表示添加到 1985 年 X 版本 6 中的许可证似乎一直持续到 X 版本 11,版本 5。许可证语言的后期版本似乎是在 1994 年的X 版本 11,版本 6 中引入的。
因此,有充分的理由认为 MIT 许可证,当时也称为 X 联盟或许可证或 X11 许可证,在 1987 年随 X11 一起结晶,这是使用的最佳日期。您可以认为它是在 1985 年创建的,并在接下来的几年中可能进行了调整。许可证在那些日子里经常逐步演变。例如,盖蒂斯观察到,尽管 GPLv1 许可证于 1989 年正式发布,但理查德·斯托曼的 Emacs 之前是在类似于 GPL 的许可证下分发的。
但故事并没有就此结束。如果您查看用于 X11 的许可证和开源促进会 (OSI) 上批准的 MIT 许可证,它们并不相同。精神相似,但在使用的词语上差异很大。
“现代”MIT 许可证与大约从 1998 年开始用于 Expat XML 解析器库的许可证相同。使用此文本的 MIT 许可证是 OSI 在 1999 年批准的第一批许可证的一部分。奇怪的是,尽管 OSI 将其描述为“MIT 许可证(有时称为 'X 联盟许可证' [原文如此])”,但它实际上与 X 联盟许可证并不相同。
这种转变是如何发生的以及为什么发生——甚至是否是偶然发生的——尚不清楚。但很明显,到 1999 年,OSI 记录的批准版本的 MIT 许可证使用的语言与 X 联盟许可证不同。这就是包括自由软件基金会在内的一些组织更喜欢完全避免使用“MIT 许可证”术语的原因,因为它可能指几个相关但不同的许可证。
(MIT 许可证在这种不一致性方面并非独一无二。例如,有一个 3 条款 BSD 许可证和一个较旧的 4 条款 BSD 许可证,即使没有明确的版本控制。)
所以,这就是全部内容。选择您的日期。1985 年的先驱。1987 年的 X 联盟或 X11 许可证变体。或 1998 年或 1999 年的 Expat 许可证。
感谢 此 Twitter 讨论串 的参与者,使本文成为可能。
6 条评论