Linux、git和github的故事

2018-07-31 23:51 未知

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

  没想到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,成为了全世界最受欢迎的代码托管网站。

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

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

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

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

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

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

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

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

  你可能听说过网络开发分前端后端之说,前端管网页呈现,后端管数据输出。然而这两者不是孤立的,前端开发也会涉及到确保后端数据能够正确呈现出来,所以大量采用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第一次线年,一群用Rails做开发的女程序员在芬兰赫尔辛基举办了第一次线下聚会。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  在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: