Linux、git和github的故事

摘要:从Linus Torvalds对代码托管工具的改革,到github的诞生,再到开源界10个大事。串起来的一些故事。

近日,分析业内知名技术社区时,详细看了下github。作为笔记,留下学习印记。

一、Linux和git

7月,阿里云参加了LinuxCon + ContainerCon + CloudOpen中国(简称LC3)大会,并做了重要分享。详见。

没想到linux和git之间的故事是这样开始的。来自廖雪峰的博客中有这样一段描述:

很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

二、从git到github,还有10个故事是这样的

介绍这样的文章有一些,但硅星人今年4月所发的,题为《全球最大同性交友网站GitHub,今天10岁了》,作者是光谱,内容比较详细。

1999年上线的Source Forge,因为免费一度是世界上最受欢迎的开源软件代码托管网站。然而Google担心它一家独大,上线了自家的代码托管网站Google Code。

2005年,Linux的缔造者Linus Torvalds对现有的代码托管工具效率不满意,便自己做了一个名叫Git的版本控制工具。Git颇具革命性,允许大量开发者同时为源代码贡献新代码,彼此间并不影响,最重要的在于它是开源的。

三个来自旧金山的年轻人认为Git的潜力巨大,在2008年正式推出了GitHub,一个基于Git的代码托管网站。他们没想到,GitHub 后来击败了元老Source Forge和背景强大的Google Code,成为了全世界最受欢迎的代码托管网站。

2008年4月10日,GitHub正式上线。到今年,GitHub刚好10岁!

去年5月底,GitHub完成了第1亿个pullrequest(PR合并请求)命令。截至今天,GitHub上已经拥有超过8000万个repo(代码仓库),活跃用户达到2700万人,超过150万家公司和机构进驻。

由于程序员群体里缺少女性,拥有高纯度男性用户的GitHub,也被戏称为全球最大的同性交友网站……

“10年前的今天,GitHub正式上线。最一开始,我们只有一个特别简单的目标:连接所有的开发者,让他们用Git更轻松地进行项目协作,”联合创始人ChrisWanstrath在博客里写道,“10年过去了,我们作为公司,作为平台都有了很大的变化,但GitHub存在的意义从未改变。”

作为对十周年的纪念,GitHub团队并没有选择回顾公司历史,而是整理了在他们眼中过去10年间的几大里程碑事件。这很GitHub——这份光荣,其实不止属于平台自己,更属于那些为了让这个世界变得更好,通过Git、GitHub,用JS、Python和各种语言贡献代码的人们。

以下,就是这些曾在计算机业界和GitHub的发展中创造历史的事件。

20080403:Rails转移至GitHub

Rubyon Rails(Rails),是一个用Ruby语言编写的开源web应用框架。它提高了开发复杂网页的效率,是计算机界最受欢迎的开源项目之一。2008年4月,Rails做出了表率,将版本控制从SVN换成了Git,并成为第一个进驻GitHub的大型开源项目。

当时,GitHub还处在内测阶段,没有正式上线。GitHub本身就是用Rails写的,这件事为GitHub带来了不小的影响力。

20090103:比特币诞生

2009年诞生后,比特币于2010年正式开源,并托管在了GitHub上。比特币是世界上第一个去中心化的数字货币,它的诞生和开源更是引发了一场同时波及金融和科技,甚至更多行业的革命。

至今,比特币项目接受了超过500名用户贡献的代码。比特币的底层技术“区块链”被广泛视为下一个革命性的计算机技术,比特币项目已经被fork(代码库复制)逾1.8万次,大量的区块链、数字货币项目在GitHub上开源,其中很多都来自比特币源代码。

20090521:Node.js发布

你可能听说过网络开发分前端后端之说,前端管网页呈现,后端管数据输出。然而这两者不是孤立的,前端开发也会涉及到确保后端数据能够正确呈现出来,所以大量采用JavaScript(JS)语言的前端人士需要学习后端PHP、Ruby之类的后端语言,很麻烦。

Node.js的主要意义是让前端用JS即可完成前端需要的大量开发任务,开发适配多种操作系统的复杂服务器端应用。简单来说,它同时把前端和后端工程师从各自不熟悉的领域内解放了出来。2009年5月底,Node.js正式在GitHub上发布,收到了不少前端和后端人士的追捧,被认为是未来趋势。

2014年,Node.js主要贡献者对这个项目的官方管理公司不满,于是自立门户,fork原版代码做了一个社区驱动而不是公司化运营的替代品,名叫io.js。这个项目一度比Node.js更受欢迎,但后来Node.js在开源治理上有了改善,两个项目再次合并。

在整个过程中,GitHub的开放机制确保了社区拥有自主权力,不必服从于开源项目的所有者。在必要的时候,fork是一种力量,也是一种态度。

20101126:RailsGirls第一次线下聚会

2010年,一群用Rails做开发的女程序员在芬兰赫尔辛基举办了第一次线下聚会。

三年后,他们专为女性和LGBTQ人士开设了一个夏令营RailsGirlsSummerofCode。这个开源培训项目帮助开源社区改善了性别多样性,为解决女性在科技行业内受到的结构性歧视做出了贡献。

20110101:TravisCI持续集成的第一个PR

持续集成(CI)从像GitHub这样的代码库里按照频率提取最新的代码,自动构建项目并进行测试。持续集成并不能消除bug,而是让它们非常容易发现和改正。比如下面这个buildpassing就是持续集成工具显示的,它的大概意思是当前版本测试通过,没有出现bug。

而TravisCI是最受欢迎的,开源的持续集成工具。2011年元旦那天,它完成了第一个PR。TravisCI和GitHub的整合,让代码投入生产环境的整个过程变得更高效了

20120101:JS成为GitHub第一大语言

最一开始是一种网页脚本语言,JS和HTML、CSS并列网页开发三大语言。被JS坑过的程序员经常讽刺它是一种不完整的语言,有一个很古老的段子:写C的看不起写C++的,写C++的看不写 Java的,写Java的看不起写JS的,写JS的看不起美工,周末大家都在加班,美工带着女朋友旅游去了。

然而编程语言的鄙视链,总是和受欢迎程度相反。从2012年开始,JS超越了Ruby、Java和Python,成为了GitHub上最受欢迎的语言,直至今天仍霸占王座。

2013:GitHub用户破百万

开源社区的发展使GitHub获得了惊人的增速,在用户数和repo数上实现了两座里程碑:2013年,用户数突破了100万;同年12月,GitHub的repo总数超过了1000万,其中超过一半是当年创建的,仅11月就增加了100万个。

别光看数字多,这一年里增加的repo质量也很不错:白宫的ProjectOpenData、Docker等等。亚马逊AWS、Facebook、Google、微软、Twitter、Netflix等知名公司也上传了自家的项目。

20140609:Docker1.0发布

被视为革命性技术的开源容器引擎 Docker,2013年在GitHub上创建了repo,一年时间里下载量超过275万份。2014年,Docker1.0终于正式发布了。

像Docker和Kubernetes(K8S)这样的开源项目开启了一场容器化运动。开发、投产和运维的难度降低,小型公司不再需要花费精力在基础架构上,可以更专注于核心业务开发。

20140721:DjangoGirls第一次线下聚会

交友平台不是开玩笑……GitHub的程序员社交特性使得很多开发者通过它实现了线下聚会。它让程序员们更容易结识彼此,而这对于女生尤为重要。

2014年德国柏林,Django女性开发者第一次在线下举办聚会,她们的组织仍在为改善性别多样性而努力着。

20140723:微软开源.NET

虽然随着移动互联网的快速发展,没跟上时代的.NET已经走向衰落,微软向开源社区示好,仍然被视为开源业界的一个历史性事件。微软创立了一个开源行动,然后把所有的开源代码包括.NET都在GitHub上开源。数千名工程师也让微软成为了GitHub上最为活跃的公司。

.NET的开源带起了一波节奏,随后越来越多的大公司迁移到了GitHub,放弃了自己的代码托管网站或过时的代码库。

2015:虚幻引擎4免费和大量游戏相关开源

2015年3月2日,虚幻引擎4完全免费了。EpicGames放出了百分之百的C++原始代码,虽然独立开发者想要开发AAA级别大作还是需要资金,但至少现在他们手上的虚幻引擎4和大厂手里的没有任何区别。

EpicGames对社区的恩惠得到了报答。在虚幻引擎最近一次4.19版本发布,包含了128个来自社区的贡献。

除了虚幻引擎,还有不少游戏引擎、库和游戏代码在2015年上了GitHub,比如《毁灭战士》和《波斯王子》。最有趣的应该是2048,它的开源带来了上百款类似的消除游戏……总的来说是件好事。

20150922:GitHubClassroom发布

除了工业界,学术界,包括大学和高中也可以利用GitHub进行教育了。GitHubClassroom改进了编程课代码管理、分发和作业收集。看上去是在做慈善,其实此举很聪明:GitHub普及要从娃娃抓起,尽管它已经碾压了其它一切竞争对手。

20151203:苹果开源Swift

苹果的新编程语言Swift具有函数式编程和面向对象编程的诸多特性,也兼容苹果平台之前的开发语言C、Objective-C,也是一个强类型语言而非脚本语言,也很注重安全性……对于苹果开发者而言,Swift是件大好事,而有什么比Swift开源更让人大快人心呢?

如果说微软带起了一波节奏,那么苹果Swift编程语言的开源才真的让其它科技公司都信服。老大哥都开源了,我们还有什么理由不跟随呢?

20160709:阿波罗11号代码开源

60年代的程序员也有幽默感,不信就去GitHub上看看阿波罗11号的代码。比如这个:临时代码一直用到了月球上。

你可能会感兴趣,50年前的程序员和代码是什么样的?隆重向你介绍阿波罗11号计算机系统工程师,MIT的MargaretHamilton:

阿波罗11号代码开源地址:https://http://github.com/chrislgarry...

2017:Python进驻GitHub

Python因数据科学和深度学习的爆发重新开始受到关注,在2015年它成为了GitHub上第三受欢迎的语言,2017年升至第二。当各大公司和人工智能专家开始倡导“人工智能普及化”(democratizeAI)时,Python也终于来到了GitHub。

这使得Python在GitHub上的流行越发势不可挡,使用Python语言的新repo数量,环比增长达到了70%。

20170215:TensorFlow1.0发布

革命性的深度学习库,就连非专业人士都听说过TF——主要可能因为AlphaGo击败了李世乭和柯洁。2016年,TensorFlow成为了整个GitHub上fork最多的项目。

除了TF,Caffe2、DeepSpeech等大量深度学习工具也都相继开源。使用这些工具,研究者可以创建面向不同领域的深度学习模型,包括并不限于电子游戏、弈类游戏、音乐、绘画、医疗、金融等等,带来新的技术范式和商业模式,显著改善人们的生活。

20180410:十周年,再出发

在2017年,用户提交了超过2.9万亿条代码,GitHub也合并的PR终于突破了1亿。2018年,GitHub用户总量达到2700万,项目总数超过了8000万。

人工智能、区块链、量子计算……许多全新的计算机技术和全新的计算范式已经或正在赶来,代码和数据在某种程度上已经取代了石油,成为了人类的新血液。

在这样的大背景下,GitHub太重要了,但它也面临着和10年前SourceForge等前辈相同的命运:全世界的开源代码都在这里,过度的中心化会否增加风险?在享受GitHub带来便利的同时,越来越多人都会多一个心眼——代码上传之后,本地还是不要rm留个底吧。

最后,给一些GitHub整理的资料。首先,按照PR统计的受欢迎语言,JS、Python、Java、Ruby、PHP:

热门关键字,机器学习、游戏、iOS、API、博客、网站、深度学习、Ardiono:

fork最多的项目,TF、Bootstrap、gitignore;贡献者最多的项目,VSCode、ReactNative、NPM:

review最多的项目,DefinitelyTyped、K8S、Homebrew;讨论最多的repo,K8S、Origin、CMSSW

注册用户最多的国家:中国排第二。

三、65亿美元被收购。

6月5日,官宣75亿美元,微软收购的GitHub。

四、思考:技术社区到内容开放平台,需要更多。

本文作者:云篆

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

相关推荐