Git 15 周年:当年的分道扬镳,成就了今天的开源传奇

发表于 5年以前  | 总阅读数:925 次

我们知道,所有的软件项目在整个生命周期中都要经过不断迭代,在一个又一个的新版本中完善自己的功能。开源项目更是如此,一个健康的开源项目,在“集市”模式下接受来自世界各地开发者提交的代码 ,版本更新频率通常更高。如何管理项目的版本更新,是项目开发、维护过程中必须考虑的问题。

什么是版本控制工具

在开始我们的故事之前,首先让我们来认识一下版本控制工具。版本控制的核心述求是历史纪录查询和实现协同开发。以开源项目来说,在多人协作开发的模式下,每个人都向服务器提交自己的文件,就可能存在着代码被多次修改、替换的风险,但是版本控制能够在每次更新操作后进行相应的记录。一旦发生误操作,开发者能够根据服务器中的版本记录,将项目恢复到出现问题之前的其他版本。因此,借助版本控制技术,软件开发项目可以被分割为若干模块,每个模块并行地进行开发工作,从而有效地提高了整体编程效率。

主流的版本控制工具主要分为两种,即集中式与分布式。

集中式版本控制工具类似网吧的管理系统,所有项目的历史文件与版本信息都存放在服务器上,而客户端就只能保存当前的状态信息。这种所有鸡蛋装在一个篮子里的模式缺点非常明显,一旦服务器损坏,项目所有的历史数据就会丢失,因此需要大规模的安全备份。比较有代表性的集中式版本控制工具有 SVN、VSS、CVS 等。

分布式版本控制工具最大的特性就是任意客户端之间可以互联,当然也包括服务器。这样一来,开发者的客户端本地也存有项目完整的历史记录,当有一个客户端损坏时,可以从另一个没有被损坏的客户端中提取历史数据,恢复之前的状态。在协同开发时,各个客户端之间可以很好地同步开发进度,避免出现重复提交等问题。

毫无疑问,分布式版本控制工具拥有更为先进的理念,其诞生的过程也是得益于网络通信技术的普及与开源社区的蓬勃发展。

天才的帮手

我们的故事始于 1991 年,大名鼎鼎的开源项目 Linux 问世,作者 Linus Torvalds 一跃成为 IT 界的大明星,被人们称为天才。由于当时 Linux 社区仍采用传统的集中式版本管理,开发者提交的 patch 都汇集到 Linus 这里,让他肩上的担子很重。

( Linus Torvalds )

在项目早期,Linus 以最原始的人力来完成 Linux 版本管理工作,包括逐条细看每个 patch、手动合并开发者提交的代码、更新版本历史信息等。由于这段“痛苦”的经历,Linus 本人曾多次公开吐槽 “代码管理是计算机领域最无趣的事”……

然而随着社区的逐渐壮大,Linux 的系统变得越来越庞大,代码越来越繁杂,继续依靠手动合并代码显然已经不太现实。

1999 年,一家名为 BitMover 的公司发布了一款收费的分布式版本控制软件 BitKeeper ,BitMover 的 CEO Larry 给 Linux 社区特别提供了一个可以免费使用的版本,期望 BitKeeper 能帮助 Linus 免于陷入不断加重的 Linux 内核管理工作中,但条件是不能破解这款产品

Linus 在使用 BitKeeper 之后不久就爱上了它,直言其是“ Best tool for the job ”。BitKeeper 让每个开发者都拥有自己的主副本( master copy ),完整的副本意味着可以在本地做所有事,而不是所有的 patch 只能提交到服务器(Linus)这里。于是,Linus 可以把一些 patch 的审查工作交给 Liunx 子系统的维护者们,对于比较值得信任的维护者甚至不需要他自己再审查一遍,而他只需要对一些自己不太信任的维护者 “重点关照” 即可。2002 年,Linux 内核主线代码就全面开始使用 BitKeeper。

尽管 BitKeeper 的出现赋予了 Linux 社区更好的协同开发能力,让 Linux 内核的开发效率成倍提高,但其闭源的特性仍然让 Linus 在开源界遭到了一些非议。开源泰斗 RSM 就严厉批评 Linus 不该使用一款非自由的软件来管理世界上最大的开源项目。这些负面的声音也为之后 Linux 与 BitKeeper 的分道扬镳埋下了伏笔。

分道扬镳

事实证明,指望一个全球最活跃的开源社区长期使用一个闭源工具似乎不太切合实际,毕竟这里聚集了一批全世界最有能力的程序员。于是,社区内开始出现“需要一个类 BitKeeper 的开源工具”的声音,甚至有实干者已经开始着手实现这件事情。

2005 年,Linus 本人所属公司 OSDL 的老板 Andrew Morton资助的一个项目组开始对 BitKeeper 协议进行反向编译,试图破解 BitKeeper 以创造出一个类似的开源工具。BitMover 公司很快发现了这一动作,Larry 表示这破坏了免费版 BitKeeper 的许可协议,尽管这件事或许与 Linus 本人无关,但确实严重影响了公司的利益,他们最终决定逐步停止对免费版 BitKeeper 的支持,但会给 Linux 进行工具迭代的时间。

这样的矛盾在早期的商业公司与开源社区之间十分常见,由于此时与开源项目相关的商业模式并不成熟,很多像 BitMover 一样的商业软件公司选择站在开源社区的对立面,以保护自己赖以生存的传统商业模式。这些软件公司被业内称为保守派,尤其是以微软、Oracle、SAP 等为首的大型软件开发商,他们坚持以付费的原则提供专有企业软件,凭借产品的技术壁垒收取高额的许可费。这样的商业模式不仅被追求开放自由的开源社区所唾弃,高昂的软件采购成本也让很多企业的 IT 采购人员头疼不已。

不过,BitMover 的做法在当时来看确实也无可厚非,他们正当地维护了自己的合法权利,挽回了因产品被破解可能带来的经济损失。但令他们万万没有想到的是,开源社区强大的生产力可以成为他们发展的沃土,也能成为毁灭他们的武器。

用开源的方式创造 Git

失去 BitKeeper 意味着 Linux 需要重新寻找一个分布式版本控制系统,Linus 考察了当时所有的系统,却没有一个能够让他满意。

“ 于是他在邮件列表里发了一封邮件,说自己写了一些代码,准备作为在找到更好的版本管理系统之前的过渡系统。我觉得这似乎是件挺有意思的事情,于是就把代码下载了下来,看了一下发现只有1244行。” 这是目前 Git 的主要维护者、Google 工程师 Junio C Hamano(滨野 纯)在一次采访中的描述。

是的,天才 Linus 只花了 10 天的时间,用 C 语言写了 1244 行代码,这就是如今火遍全球的分布式版本控制系统 Git 的雏形。Linus 把写好的代码发到 Linux 社区的邮件列表里,并邀请社区里的开发者一起来完善它。“ 在一周时间内发生了很多事,不过归纳起来就是 Linux 的内核开发者们听说 Linus 要用个“新玩意”来管理代码,如果那个‘新玩意’太难用的话大家都痛苦,还不如一起想办法把这个东西做好用点。” Hamano 就是收到邮件并首批参与 Git 项目的开发者之一。

据 Hamano 回忆,当时 Linus 考察了市面上所有的版本控制系统,没有一款让他满意的原因是它们都没有代码合并(merge)功能。 “ 因为 Linus 只写 C 和 Shell,而 merge 的逻辑实在太复杂,所以他多次发邮件到邮件列表,说要是有人能够用脚本语言实现一个就好了。不过谁也没有上钩。就这么过了一个星期,一直关注邮件列表的我用 Perl 把 Linus 过去多次提到的 merge 算法实现并投到了邮件列表里。这是我第一次有一定规模地向开源项目贡献代码。然而,尽管我详细地写了将近 30 个测试用例以及各种分支条件下应该怎么处理的表格,6 个小时以后 Linus 提交到 master 分支的却是个截然不同的东西。据本人说是想到了更好的办法所以就这么着了。”

虽然听起来有些任性,但 Linus 给出的新方案确实让 Hamano 折服。

对于 merge 功能,BitKeeper 的做法是在 work tree 里基本上只存放自己的文件,而 merge 不发生在这里。merge 时首先会创建一个临时文件夹,在里面展开 merge 结果,发生冲突时就在里面解决,然后提交 commit 并在 work tree 里展开,这样就算 merge 完成了。这个方法很好地解决了协同开发常常遇到的代码冲突问题。类似于把发生冲突的两人关进一个小黑屋,“决出胜负”后的胜利者再进入 work tree 。

而 Linus 决定取消这个临时文件夹,直接在 work tree 上 merge 。具体来说,就是每次提交 commit 之前会生成记录本次提交内容的 index,而这个 index 遵循“三步合并”原则,比如我们有一个共同的版本,你在这个版本的基础上做了一些变更,我在这个版本的基础上做了另一些变更,然后将这两个差分 merge 起来。那么把原始版本、我修改的版本、你修改的版本分别作为 stage1,stage2,stage3 依次添加到 index 里,merge 就算完成了。例如最简单的情况,我和你都没有做出变更,那么 merge 的结果就是没有变更。如果我做了变更而你没有,那么最后得到的就是我变更以后的代码,反之亦然。另外还有一种特殊的情况,就是你和我都做了“相同”的变更。

开源本质上就是大家一起做一个项目,互相 merge 的过程。Git 就是在这样的模式下诞生并日趋完善,成长为全球最主流的开源版本控制系统。而 Linus 做的事情只是花 10 天时间写了 1244 行代码,然后审查大家提交的 merge 。“虽然最早是我做了全部的编码和设计,但之后的维护都由 Hamano 来做,他把 Git 做得更接地气,让所有人都能使用。” Linus 曾在 Google 进行的一次演讲中毫不吝啬地夸赞了社区的伙伴。

(图右为 Junio C Hamano)

作为开源项目的管理者,Linus 不仅是个智商超群的编程天才,他的管理情商也很高。在维护一个开源项目时,对别人说“No”是家常便饭。当 Linus 拒绝别人的 commit 时,他总会在回复中强调“拒绝这个 commit 不是因为你的能力不行,而是这个 commit 不合适”,同时还会指出 commit 中的亮点并给予肯定,让对方觉得自己的工作没有白费,这样就不会打击贡献者的热情。“ 我那时候也是,Linus对我说,虽然你的提交没有采用,但测试用例还是能用的,针对现在的实现你稍微修正一下吧。” Hamano 回忆说。

在 Hamano 等人的协助下,Git 诞生近一个月后,Linux 系统的源码就全部改用 Git 进行版本管理,而其他的开源项目社区也如获至宝,Git 的名气很快就在开源界传播开来。

截然不同的命运

2008 年,基于 Git 实现的代码托管平台 GitHub 面世,从此 Git 更是享誉全球。有意思的是,GitHub 当初并不是由 Git 社区的人做的,而是出自 Ruby 社区的开发者之手,两个社区在最初的关系还有些不太和睦,原因是 Git 社区的人对于 GitHub 那群人拿 Git 去做商业化感觉很不爽……当然,这些都是老开发者口中的陈年往事了。毫无疑问,GitHub 对于 Git 的普及做出了巨大的贡献。Hamano 也表示:“ 有 GitHub 替我们做文档以及用户支持,何乐而不为呢。”

和 Git 的飞速发展形成鲜明对比的是,与 Linux 分道扬镳后的 BitKeeper 每况愈下,尽管后者是世界上首个商用级的分布式版本控制工具,但在 Git 诞生之后,BitKeeper 的市场占有率断崖式下滑,几乎沦落到无人问津的地步。Git 与 BitKeeper 的不同境遇可以说是 21世纪初软件行业的缩影,传统的软件商业模式在开源浪潮的席卷下迎来了前所未有的挑战。

当然,挑战往往伴随着机遇。于是,也有一批人开始反思传统软件商业模式的局限性,试图寻找一种能够适应开源的全新商业模式。很快,以 Red Hat、MySQL、SugarCRM 为代表的开源行业公司开始崛起,他们的商业模式是利用开源项目来推出增值服务,即免费向用户提供软件基础功能,而通过收费的增值服务来获取利益。

比如 Red Hat 在 RHEL 推出的订阅服务,在用户免费使用这款企业级 Linux 系统的前提下,他们可以通过订阅,获得每一版本产品一定时间内的技术服务支持。这种支持包括但不限于系统升级、管理、维护;安全性和技术认证支持;其他硬件和软件支持。此外,Red Hat 还通过积极地投身开源社区为品牌赢得业内认可,从而促进其他收费产品的销售。自 2001 年确立商业模式以来,Red Hat 已经实现连续 19 个自然年的营收增长,创造了开源界的商业传奇。

当 Red Hat 们利用开源项目取得前所未有的成功之后,许多传统软件开发商也开始意识到,开源已经是无法阻挡的时代趋势。2018 年,曾经的“保守派”代表微软收购 GitHub,进一步布局开源;2019 年,蓝色巨人 IBM 斥资 340 亿美元收购 Red Hat,完成公司历史上最大规模的收购……越来越多的软件巨头参与到了开源社区的建设中,积极拥抱开源。

值得一提的是,2016 年,在 Git 诞生 11 年之后,曾经与 Linux 短暂携手的 BitKeeper 宣布开源,只可惜为时已晚。

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:1年以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:1年以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:1年以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:1年以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:1年以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:1年以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:1年以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:1年以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:1年以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:1年以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:1年以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:1年以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:1年以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:1年以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:1年以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:1年以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:1年以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:1年以前  |  398次阅读  |  详细内容 »