我参与的一个开源软件项目是 FreeDOS 项目。它是一个完整、免费、与 DOS 兼容的操作系统,你可以用它来玩经典的 DOS 游戏、运行遗留的商业软件或开发嵌入式系统。任何在 MS-DOS 上运行的程序也应该在 FreeDOS 上运行。
因此,当微软最近通过 GitHub 仓库发布 MS-DOS 1.25 和 2.0 的源代码时,我注意到了。这对微软来说是巨大的一步,我想简要解释一下为什么这意义重大。
作为开源软件的 MS-DOS
一些开源爱好者可能还记得,这并非微软首次正式发布 MS-DOS 源代码。2014 年 3 月 25 日,微软通过 计算机历史博物馆发布了 MS-DOS 1.1 和 2.0 的源代码。不幸的是,这些源代码是在“只看别碰”许可证下发布的,该许可证限制了你可以用它做什么。根据 2014 年源代码发布中的许可证,用户被禁止在其他项目中重复使用它,并且只能将其用于“仅用于非商业研究、实验和教育目的。”
博物馆许可证对开源软件不友好,因此,MS-DOS 源代码被忽略了。在 FreeDOS 项目中,我们将“只看别碰”许可证解释为 FreeDOS 的潜在风险,因此我们决定,看过 MS-DOS 源代码的开发者不能为 FreeDOS 贡献代码。
但微软最近发布的 MS-DOS 源代码代表着一个重大变化。此 MS-DOS 源代码使用 MIT 许可证(也称为 Expat 许可证)。引用微软 GitHub 上的 LICENSE.md 文件
MS-DOS v1.25 和 v2.0 源代码
版权所有 © 微软公司。
保留所有权利。
MIT 许可证。
特此授权,任何人都可以免费获得本软件及相关文档文件(以下简称“软件”)的副本,并对软件进行处理,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许被提供软件的人员在符合以下条件的情况下这样做
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不作任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而引起的或与之相关的任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中。
如果您觉得这段文字很熟悉,那是因为它与 开源促进组织认可的 MIT 许可证文本相同。它也与 自由软件基金会认可的 Expat 许可证相同。
自由软件基金会(通过 GNU)表示,Expat 许可证与 GNU 通用公共许可证兼容。具体来说,GNU 将 Expat 许可证描述为“宽松、允许性的非著作权自由软件许可证,与 GNU GPL 兼容。有时它被含糊地称为 MIT 许可证。” 同样根据 GNU 的说法,当他们说许可证与 GNU GPL 兼容时,“您可以将根据其他许可证 [MIT/Expat 许可证] 发布的代码与根据 GNU GPL 发布的代码组合在一个更大的程序中。”
微软对原始 MS-DOS 源代码使用 MIT/Expat 许可证意义重大,因为该许可证不仅是开源软件,而且是自由软件。
这意味着什么?
这很棒,但源代码发布也有实际意义。您可能会想,“如果微软已在与 GNU GPL 兼容的许可证下发布了 MS-DOS 源代码,这是否会对 FreeDOS 有所帮助?”
并非如此。原因如下:FreeDOS 起源于独立的原始代码库,与 MS-DOS 无关。MS-DOS 的某些功能和行为在 Ralf Brown 编写的综合 中断列表中被识别和记录,我们通过参考中断列表在 FreeDOS 中提供了 MS-DOS 兼容性。但是 FreeDOS 和 MS-DOS 之间仍然存在许多重大的基本技术差异。例如,FreeDOS 使用完全不同的内存结构和内存布局。您不能简单地将 MS-DOS 源代码直接移植到 FreeDOS 中并期望它能工作。代码假设截然不同。
还有一个简单的事实,这些是非常旧版本的 MS-DOS。例如,MS-DOS 2.0 是第一个支持目录和重定向的版本。但这些版本的 MS-DOS 还不包括更高级的功能,包括网络、CDROM 支持和 ’386 支持,例如 EMM386。这些功能在 FreeDOS 中早已是标准配置。
因此,MS-DOS 源代码的发布很有趣,但 FreeDOS 无论如何都无法重用此代码来获得任何现代功能。FreeDOS 在功能和特性方面已经超越了这些版本的 MS-DOS。
恭喜
尽管如此,重要的是要认识到微软在以开源软件形式发布这些版本的 MS-DOS 时迈出了一大步。GitHub 上新发布的 MS-DOS 源代码摒弃了 2014 年的限制性许可证,并采用了与 GNU GPL 兼容的公认开源软件许可证。祝贺微软以开源许可证发布 MS-DOS 1.25 和 2.0!
5 条评论