Git 纪元
美丽新世界
19世纪末,弗雷德里克·泰勒在美国一些工厂推广他的科学管理方法,这包括用科学的方法来代替人工经验判断、对工人进行专业训练以及按专业分工。亨利·福特在他的汽车工厂里也开始应用泰勒科学管理,并且在汽车生产上创新性的采用了流水线作业。1908年,第一辆福特T型车从流水线上面世,而经过优化的流水线在几年后甚至可以达到93分钟内生产一部汽车,强大的生产效率让福特超过了其他所有汽车厂商生产能力的总和。福特的流水线生产很快被其他厂商所借鉴,也迅速普及到了其他工业领域。可以说,福特T型车流水线作业的发明开启了大规模工业生产的时代,人类的生产力得到了巨大的提升。从英国移居到美国的阿道司·赫胥黎对此深受启发,在他的带有科幻色彩的反乌托邦小说《美丽新世界》中,描写未来的人类“文明社会”,人们不再用公元纪年,也不信仰上帝,改尊亨利·福特为唯一的神,以福特为纪元,并以第一辆福特T型车流水线生产的1908年为福特元年。
福特发明的流水线作业是人类协作的巨大进步,它将不同工种的人以时序方式协同工作,将制造效率最大化。二战后,随着电子计算机的发明,一种新的工作诞生了,那就是软件编程。起初,编程是在打卡机上对纸片穿孔的工作方式,而后随着输入输出设备的演进以及编程语言的发明,软件编程才成为我们现在看到的这个样子。而那时候还没有所谓的软件公司,软件编程也是以小作坊的形式存在,直到IBM System/360项目的开发,该项目是真正意义上的第一款大规模软件项目,据说最多时有2000名工程师参与软件编写,而过程也一度极为混乱,负责该项目的弗雷德里克·布鲁克斯回忆时形容为“焦油坑”:一群长毛象被困在焦油坑中,约挣扎越动弹不得,他将项目经验总结成了软件工程史上的经典著作《人月神话》,而后就很少有这种超多人协同的软件开发项目了。
1984年,没有发生奥威尔所预言的世界变化,在IT界则发生了两件对未来影响深远的事。第一件是苹果第一代麦金塔电脑(Macintosh)发布,另一件则是理查德·斯托曼(RMS)创建了GNU项目。有趣的是这两件事情恰恰引导了软件行业的两个相反走向,而其主人公乔布斯和斯托曼也成了封闭生态和开放生态的代表,它们的理念完全冲突以至于后者斥责前者为邪恶的天才(malicious genius,参见《自由的代价》)。斯托曼还进一步创建了自由软件基金会(FSF),斯托曼对于自由软件原教旨主义的狂热以至于很多老战友都受不了,以埃里克·雷蒙德(ESR)为代表的一群人在1998年创立了开发源码促进会(OSI),以商业更友好的开源软件来取代意识形态更浓重的自由软件。而雷蒙德在研究了一系列软件项目开发后,发布了开源软件开发的经典著作《大教堂与集市》,在书中他阐述了两种开发模式,一种是自上而下构建的、集中式的、由专人或专属团队所管控的软件开发方式,这种雷蒙德称为大教堂模式;另一种则是自下而上构建的、分布式的、在互联网上分发传阅的开放的软件开发方式,雷蒙德称之为集市模式。集市模式开发的代表是Linux项目。
起初,操作系统主要是几家商业巨头闭源把持,如Windows、Mac、Unix,开源世界一片虚空。Linus说,要有操作系统,于是就有了Linux。起因是Linus大学放假期间在家无聊,就写了Linux玩玩并发布到了互联网新闻组,没想到在黑客圈里广受欢迎,Linus也将它无偿开放出来,并广泛接纳社区开发者的代码提交,到了2005年,估计有近一万人给Linux贡献过代码,Linux也成了开源社区最大的项目。这么大的一个软件项目一直没有一个协作工具来管理代码合入,直到Linus选用了一款叫BitKeeper的商业配置管理工具来管理源代码,但很快由于社区有人违反了使用条例被收回了免费使用权,Linus一怒之下就写了一款分布式配置管理工具——Git(参见《改变世界的一次代码提交》)。
Git的发明可以说是改变了软件行业协作的方式,对于开源软件乃至整个软件工业的协作效率的提升是革命性的。Git的分布式、灵活的分支能力使得全球化异步协作更为简单,而GitHub/GitLab引入的Fork+Pull Request/Merge Request机制更成为了软件协作开发的事实标准。更重要的是,Git时代的软件开发逐渐演化为契约化软件开发模式,大规模软件生产越来越普遍,软件开发从原来的手工作坊式的生产变成了搭积木式的工业装配生产,开源组件成为了软件工业的基石和砖块。我在2023年中国开源年会的议题分享上曾将Git时代的软件开发类比福特T型车的生产,软件世界以Git为纪元,以Git诞生的2005年为界,称之为Git元年。
2022年11月,一款叫ChatGPT的智能聊天软件发布,迅速火遍全球。因为人们发现,AI不仅只是在智力竞赛或者棋类游戏中发挥出色,也能在智力创作场景下有用武之地。人们第一次广泛的将AI用于生产力领域,以GPT为代表的大模型和生成式AI备受瞩目。未来GPT是否会成为主流不能肯定,但可以肯定的是我们正在迈入AI时代。AI时代的软件协作模式是什么?也许被誉为机器学习领域的GitHub的开源平台——Huggingface能够给我们一些启发。Huggingface使用Git和Git LFS技术来托管机器学习的两个重要资产——模型和数据集,在机器学习专家的眼里,Git仍然是最好的协作工具。Git纪元仍然适用,今年是AG (After Git) 20年。