一、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://github.com/chrislgarry/Apollo-11

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。

关于Linux、git和github的一些历史事件相关推荐

  1. 【Git、GitHub、GitLab】四 Git文件重命名的简单方法以及使用git log查看版本演变历史

    上一篇文章学会了使用GIT四次提交建立一个有模有样的仓库.点击链接查看:[Git.GitHub.GitLab]三 Git基本命令之创建仓库并向仓库中添加文件. 本片文章记录git的文件重命名的简单方法 ...

  2. Linux、git和github的故事

    近日,分析业内知名技术社区时,详细看了下github.作为笔记,留下学习印记. 一.Linux和git 7月,阿里云参加了LinuxCon + ContainerCon + CloudOpen中国(简 ...

  3. Linux中级实战部署一:企业级 CICD 持续集成交付发布---(git,github,gitlab)

    企业级 CI/CD 持续集成/交付/发布 一:git,github,gitlab的区别 Git是版本控制系统:Github是在线的基于Git的代码托管服务,GitHub同时提供付费账户和免费账户:Gi ...

  4. Linux下Git和GitHub使用方法总结(Ubuntu16.04)

    1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 "sudo apt-get install git" 第二步: 创建GitHub帐号 第三步: 生成 ...

  5. linux下git和github搭建使用教程

    一:linux下git和github搭建 1.注册gihub账号: github官网:https://github.com/自行创建即可. 登录,create repository新建仓库一个测试库t ...

  6. Linux下使用Git连接GitHub

    Linux下使用Git连接GitHub 1. 使用ssh-keygen生成密钥 2. 查看生成的公钥并复制到GitHub(**SSH and GPG keys**)上 3. 配置SSH (关键步骤) ...

  7. Linux:git、github、gitbash简介

    Git介绍: Git是目前最先进的分布式版本控制系统,gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. shell: 是linux ...

  8. linux git pull 失败,解决git pull到github不成功的问题

    网上也有很多帖子,但是配置时依旧遇到了一些问题,给自己稍微总结一下. 1.安装git(linux系统,其他系统自行百度) $sudo apt-get install git 2.完成基本配置 $git ...

  9. git和github的关系

    写在前面:我身边好多人问我git和github的区别,想必对于好多人没学过的大佬们恐怕也是一脸懵逼,但是不知道也是不行的,所以我今天就来讲一讲这二者的区别和联系. 用一句话形容这二者的关系:git是弓 ...

最新文章

  1. python __file__怎么实现_python lockfile(文件锁)
  2. 透过微信应用号,看HTML5与Native进入融合时代
  3. Shell脚本大量示例
  4. 我是怎么利用微信做兼职月入1W的
  5. ubuntu16.04中安装tensflow教程
  6. TensorFlow2-卷积神经网络
  7. ios 启用 证书_如何在iOS 10中启用就寝提醒,轻柔的唤醒和睡眠跟踪
  8. 计算机应用能力考试xp,计算机应用能力考试XP试题及答案
  9. 基于LD3320的嵌入式语音识别系统设计
  10. Masonry 控件详解
  11. 有监督学习 无监督学习
  12. oracle 查看数据库启动时间同步,oracle rac CTSS时钟同步模式转换为NTP同步模式的实施记录(4)...
  13. 详细图解MySQL(win7x64 5.7.16版本)下载、安装、配置与使用
  14. CentOS7图形界面和命令行界面的切换快捷键
  15. 360 技术岗秋招笔试原题(2022届)
  16. mt4双线macd_实用MACD“三板斧”,你值得拥有(建议收藏)
  17. Linux下驱动开发
  18. [数据库]数据库临时表
  19. 记一次盖茨木马应急响应
  20. LinuxC++:网络编程(一)最原始服务端及客户端代码实现和函数释义

热门文章

  1. 人工智能数学基础10:域、函数及相关概念
  2. apipost中文版
  3. Django REST Framework中的Serializer relations
  4. 微信公众号的二次开发(一 订阅号没有获取网页授权的解决方法)
  5. ant design vue pro 支持多页签模式 页签可以缓存
  6. VS2019.Net Core智能提示英文转换中文教程
  7. Android 应用进程保活APP常驻内存研究方案
  8. java多人聊天室与网络画板
  9. js 监听键盘的enter键
  10. 微信小程序原生开发功能合集一:微信小程序开发介绍