2005 年,linux 的缔造者 linus torvalds 对现有的代码托管工具效率不满意,便自己做了一个名叫 git 的版本控制工具。git 颇具革命性,允许大量开发者同时为源代码贡献新代码,彼此间并不影响,最重要的在于它是开源的。
三个来自旧金山的年轻人认为 git 的潜力巨大,在 2008 年正式推出了 github,一个基于 git 的代码托管网站。他们没想到,github 后来击败了元老 sourceforge 和背景强大的 google code,成为了全世界最受欢迎的代码托管网站。
google 的开源代码经理 chris dibona 对 github 给予高度评价:
2008 年 4 月 10 日,github 正式上线。
今天,github 终于10 岁了!
去年 5 月底,github 完成了第 1 亿个 pull request(pr 合并请求)命令。截至今天,github 上已经拥有超过 8000 万个 repo(代码仓库),活跃用户达到 2700 万人,超过 150 万家公司和机构进驻。
由于程序员群体里缺少女性,拥有高纯度男性用户的 github,也被戏称为全球最大的同性交友网站……
github repo 按照语言划分的男女用户比例,最上面的绿色是确认的女用户(2014 年数据)
“10 年前的今天,github 正式上线。最一开始,我们只有一个特别简单的目标:连接所有的开发者,让他们用 git 更轻松地进行项目协作,”联合创始人 chris wanstrath 在博客里写道,“10 年过去了,我们作为公司,作为平台都有了很大的变化,但 github 存在的意义从未改变。”
作为对十周年的纪念,github 团队并没有选择回顾公司历史,而是整理了在他们眼中过去 10 年间的几大里程碑事件。这很 github——这份光荣,其实不止属于平台自己,更属于那些为了让这个世界变得更好,通过 git、github,用 js、python 和各种语言贡献代码的人们。
以下,就是这些曾在计算机业界和 github 的发展中创造历史的事件。
20080403: rails 转移至 github
ruby on 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:rails girls 第一次线下聚会
2010 年,一群用 rails 做开发的女程序员在芬兰赫尔辛基举办了第一次线下聚会。
三年后,他们专为女性和 lgbtq 人士开设了一个夏令营 rails girls summer of code。这个开源培训项目帮助开源社区改善了性别多样性,为解决女性在科技行业内受到的结构性歧视做出了贡献。
20110101:travis ci 持续集成的第一个 pr
持续集成 (ci) 从像 github 这样的代码库里按照频率提取最新的代码,自动构建项目并进行测试。持续集成并不能消除 bug,而是让它们非常容易发现和改正。比如下面这个 build passing 就是持续集成工具显示的,它的大概意思是当前版本测试通过,没有出现 bug。
而 travis ci 是最受欢迎的,开源的持续集成工具。2011 年元旦那天,它完成了第一个 pr。travis ci 和 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 质量也很不错:白宫的 project open data、docker 等等。亚马逊 aws、facebook、google、微软、twitter、netflix 等知名公司也上传了自家的项目。
20140609:docker 1.0 发布
被视为革命性技术的开源容器引擎 docker,2013 年在 github 上创建了 repo,一年时间里下载量超过 275 万份。2014 年,docker 1.0 终于正式发布了。
像 docker 和 kubernetes (k8s) 这样的开源项目开启了一场容器化运动。开发、投产和运维的难度降低,小型公司不再需要花费精力在基础架构上,可以更专注于核心业务开发。
20140721:django girls 第一次线下聚会
交友平台不是开玩笑……github 的程序员社交特性使得很多开发者通过它实现了线下聚会。它让程序员们更容易结识彼此,而这对于女生尤为重要。
2014 年德国柏林,django 女性开发者第一次在线下举办聚会,她们的组织仍在为改善性别多样性而努力着。
20140723:微软开源 .net
虽然随着移动互联网的快速发展,没跟上时代的 .net 已经走向衰落,微软向开源社区示好,仍然被视为开源业界的一个历史性事件。微软创立了一个开源行动,然后把所有的开源代码包括 .net 都在 github 上开源。数千名工程师也让微软成为了 github 上最为活跃的公司。
.net 的开源带起了一波节奏,随后越来越多的大公司迁移到了 github,放弃了自己的代码托管网站或过时的代码库。
2015:虚幻引擎 4 免费和大量游戏相关开源
2015 年 3 月 2 日,虚幻引擎 4 完全免费了。epic games 放出了百分之百的 c++ 原始代码,虽然独立开发者想要开发 aaa 级别大作还是需要资金,但至少现在他们手上的虚幻引擎 4 和大厂手里的没有任何区别。
epic games 对社区的恩惠得到了报答。在虚幻引擎最近一次 4.19 版本发布,包含了 128 个来自社区的贡献。
除了虚幻引擎,还有不少游戏引擎、库和游戏代码在 2015 年上了 github,比如《毁灭战士》和《波斯王子》。最有趣的应该是 2048,它的开源带来了上百款类似的消除游戏……总的来说是件好事。
20150922:github classroom 发布
除了工业界,学术界,包括大学和高中也可以利用 github 进行教育了。github classroom 改进了编程课代码管理、分发和作业收集。看上去是在做慈善,其实此举很聪明:github 普及要从娃娃抓起,尽管它已经碾压了其它一切竞争对手。
20151203:苹果开源 swift
苹果的新编程语言 swift 具有函数式编程和面向对象编程的诸多特性,也兼容苹果平台之前的开发语言 c、objective-c,也是一个强类型语言而非脚本语言,也很注重安全性……对于苹果开发者而言,swift 是件大好事,而有什么比 swift 开源更让人大快人心呢?
如果说微软带起了一波节奏,那么苹果 swift 编程语言的开源才真的让其它科技公司都信服。老大哥都开源了,我们还有什么理由不跟随呢?
20160709:阿波罗 11 号代码开源
60 年代的程序员也有幽默感,不信就去 github 上看看阿波罗 11 号的代码。比如这个:临时代码一直用到了月球上。
你可能会感兴趣,50 年前的程序员和代码是什么样的?隆重向你介绍阿波罗 11 号计算机系统工程师,mit 的 margaret hamilton:
阿波罗 11 号代码开源地址:https://github/chrislgarry/apollo-11
2017:python 进驻 github
python 因数据科学和深度学习的爆发重新开始受到关注,在 2015 年它成为了 github 上第三受欢迎的语言,2017 年升至第二。当各大公司和人工智能专家开始倡导“人工智能普及化”(democratize ai) 时,python 也终于来到了 github。
这使得 python 在 github 上的流行越发势不可挡,使用 python 语言的新 repo 数量,环比增长达到了 70%。
20170215:tensorflow 1.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、react native、npm:
review 最多的项目,definitelytyped、k8s、homebrew;讨论最多的 repo,k8s、origin、cmssw
注册用户最多的国家:中国排第二