BitKeeper、Linux 和许可纠纷:Linus 如何在 14 天内写出 Git
内容提要
这篇文章讲述了BitKeeper、Linux和许可纠纷的故事,以及Linus如何在14天内写出Git。文章介绍了BitKeeper作为Linux内核版本控制工具的历史,以及Linus对CVS和Subversion的批评。然后讨论了BitKeeper许可证引发的争议,以及Linus决定寻找Git替代品的过程。最后,文章提到了Git的诞生和发展。
延伸解读
许可证争议的根源
BitKeeper的社区版许可证规定,使用者在一年内不得参与竞争工具(如CVS、Subversion)的开发。这一限制引发了自由软件社区的不满,认为其违背了开源精神。而Linus则从实用主义出发,认为使用最佳工具更重要。这种理念冲突最终导致开发者Andrew Tridgell对BitKeeper进行反向工程,激化了矛盾,促使Linus寻找替代方案。
Git的初始定位:内容寻址文件系统
Git最初并非完整的版本控制系统,而更像一个内容可寻址的文件系统。Linus强调它只跟踪目录状态及其变化原因,不处理合并等操作。这种设计聚焦于数据完整性和性能,通过哈希值识别文件变化。四天的开发中,大部分时间用于思考数据结构,而非编写代码,这体现了Linus对底层架构的重视。
社区讨论与替代方案评估
在Linus宣布寻找BitKeeper替代品后,邮件列表上讨论了Monotone、GNU arch、Bazaar-ng、Darcs等工具。性能是核心考量,尤其是能否支撑Linux内核的规模。Linus甚至考虑过集中式系统作为最坏打算。最终,他决定自己开发,因为现有工具无法满足需求。这反映了当时开源版本控制工具的局限性。
后续影响与历史回响
Git的诞生不仅解决了Linux内核的版本控制问题,还催生了GitHub等平台,改变了软件开发方式。而BitKeeper最终在2016年开源,但为时已晚。文章通过对比,展示了技术决策如何受许可证、性能和社区动态影响,以及开源生态的长期演变。
Q&A
Linus为什么决定开发Git?
Linus决定开发Git是因为BitKeeper的许可证引发了争议,他希望找到一个替代工具以避免下一个Linux内核发布受阻。
BitKeeper与CVS和Subversion有什么不同?
BitKeeper是一个分布式版本控制系统,允许每个开发者拥有自己的版本库,而CVS和Subversion是集中式的,限制了开发者的独立性。
Linus对BitKeeper的评价是什么?
Linus对BitKeeper的评价很高,认为它改变了他的工作方式,并激发了Git的灵感。
许可证争议是如何影响Linus的决策的?
许可证争议导致Linus无法继续使用BitKeeper,促使他寻找新的版本控制工具,最终决定开发Git。
Linus在开发Git时面临了哪些挑战?
Linus面临的挑战包括寻找合适的替代工具和在短时间内恢复补丁流程,以确保Linux内核的持续开发。
Git的初始版本与现在有什么不同?
Git的初始版本更像是一个内容可寻址的文件系统,而不是一个成熟的源代码控制系统,功能和目标都较为有限。