来源|极客时间《卖桃者说》

作者|池建强

编辑|成敏

你好,这里是卖桃者说。

最近我们聊了不少编程相关的话题,而谈起编程和程序员,就不得不说 GitHub。GitHub 差不多是程序员最喜欢的网站和服务之一,因此也被戏称为全球最大的同性交友网站。它的 Logo 是一个猫咪和章鱼的混合体,有的程序员还设计了很多 Logo 变体,非常有趣,事实上,GitHub 已经在程序员群体形成了一种独特的文化。

目前,全球绝大部分开源项目都托管在 GitHub 上,包括 Linux、VS Code、OpenStack、Docker、React、Vue、OpenResty、TensorFlow 等重量级项目。

我们简单来看一组数据就能明白它的影响力了:

GitHub 在 2018 年 10 月份发布的年度 Octoverse 观察报告显示,GitHub 上的开发者已经超过 3100 万,其中2018 年增加了 800 万新用户,比以往 6 年增加的总数还要多。GitHub 上目前有 210 万个组织,管理的代码仓库超过 9600万个,这两个数据都比 2017 年增加了 40%。另外,过去的一年里,GitHub 上的开发者共提交了 11 亿次有效贡献,社区协作贡献的程度是前所未有的,项目数量也远超往年。

大型同志交友网站有哪些(大型同志交友网站)(1)

这些数据展示了技术的生命力和开发者旺盛的创新精神。不客气的说,其他代码托管平台都绑一起,也打不过 GitHub 一个。

值得一提的是,GitHub 上的中国用户数和代码贡献量从 2015 年超过英国之后,一直维持在第二名的位置,仅次于美国。可以看出随着国内开源的项目越来越多,质量越来越高,使用 GitHub 的中国组织和个人用户正在不断增长。

世界上就这么多开发者吗?并不是。想想你们自己,有多少人有自己的 GitHub 账户呢?又有多少人提交过代码呢?多少人创建了自己的项目呢?如果你是 GitHub 用户,欢迎留言讲述你的故事。

很多人最初接触 GitHub 会以为这是个 Git 仓库的网络公开版本,实际上 GitHub 和 Git 完全是两码事,Git 是类似 CSV 或 SVN 的代码版本管理工具,而 GitHub 提供的是服务能力,除了代码托管,GitHub 还提供了一系列协作功能,帮助开发者或开发团队实现高效率高品质的代码编写。除了开源项目,很多著名的企业都在基于 GitHub 的企业版研发和管理自己的产品和服务。

不夸张的说,GitHub 的出现,以及它所践行的“社会化编程”的宗旨,让现代世界的软件开发发生了翻天覆地的变化,说是一场革命也不为过。很多复制 GitHub 的产品最终都败走麦城,很大程度上都是因为它们不具备社会化编程的特质,或者没有将其贯彻到底。

大型同志交友网站有哪些(大型同志交友网站)(2)

去年 GitHub 被微软收购后,依旧保持了开发者至上的风格、独立运营的立场以及社会化编程的特性。

在 GitHub 之前,出现过很多协作软件。程序员们虽然“文人相轻”,每次有编程语言之争就冲上去和别人打的灰头土脸满地找 Bug,但在工具方面却不会亏待自己,他们开发出了各种各样的版本管理软件、Bug 跟踪系统、代码审查工具、邮件讨论组、即时通讯工具等等,为了完成一次良好的协作,程序员们把这些工具组合起来依次使用,其难度系数相当于跳水向后翻腾一周半转体三周半。

不是有个段子么,当产品经理过来询问“上周提的一个 Bug 怎么还没修复”的时候,程序员们自豪的说:“我们还在邮件组里讨论由谁来修复”。

GitHub 的出现解决了所有的问题,Git 完成代码托管,Issue 用来进行 Bug 跟踪和管理,Pull Request 实现了协作开发、Code Review 和交流功能,Wiki 和 扩展的 Markdown 格式 GFM 可以编写优雅的开发文档……

GitHub 服务的出现,为开源世界带来了社会化编程的概念,这个概念影响了全世界众多程序员和技术团队。什么是社会化编程呢?就是在自由、开源、民主的环境下,一群陌生的程序员通过网络和协作的方式共同开发和维护一个软件产品。

真正有生命力的开源软件都是基于社会化编程的方式构建出来的。另外,现在越来越多的大公司把自己的一些代码放到 GitHub 上,也许是真的为了拥抱开源,也许只是因为 KPI,但不论如何,GitHub 都是他们的第一选择。

那 GitHub 是如何实现这种社会化编程的模式呢?这里就必须说一说 Pull Request 了。

Pull Request 采用了一种精巧的设计,让开发者实现了真正的代码对话:Talk is cheap, show me the code。

大型同志交友网站有哪些(大型同志交友网站)(3)

很多开发者把 GiuHub 当 Git 用,在账户里建个仓库扔些代码就以为是开源了。如果你没用过 Pull Request 与别人协作过,也没有 Merge 过别人的代码,那就不是个真正的 GitHub 程序员。

什么是 Pull Request 呢?举例来说,比如你写了一篇论文,想找人做 Review,你保留了原本,他拿走了副本进行修改。这里的原本就是仓库,拿走副本的行为就是 Fork,然后人家基于副本进行修改和批注,叫 Commit,最后把修改好的副本提交给你,这就是一次 Pull Request。你根据副本内容修正原本,这叫 Merge。

程序员们常常管 Pull Request 叫做 PR。一次完整的 PR 过程是这样的:

  1. 你在使用或参与一个开源项目,想要开发功能或修复 Bug,首先要 Fork 这个项目的仓库,然后通过 Clone 命令得到一份本地代码。
  2. 创建特性分支,编写代码增加功能或修复 Bug 并进行 Commit。
  3. 发起 Pull Request 给原仓库请求合并。
  4. 开发者们可以基于这个 Pull Request 分宾主落座,并进行气氛友好祥和的交流,比如“你改错了,你没改对,你代码这么烂还想 Merge,做梦去吧”等等。
  5. 如果你竟然改对了,原仓库管理员就会把你的代码 Merge 到他的项目里,你就成为了这个项目的贡献者之一。你编写的代码就有可能被全世界的程序员使用,这是社会化编程最大的乐趣之一。

大型同志交友网站有哪些(大型同志交友网站)(4)

GitHub 的 Pull Request 不但能够轻松查看代码的前后差别,还可以针对每一行代码进行评论和交流,细节一览无余。Code Review 变成了一件充满乐趣的事情,同时开源代码质量也最大程度的得到了保障。

PR 的设计为工程师的协作带来了革命性的变化,这种影响不止在开源世界,很多企业开发自己的商业化产品和服务都采用了这种方式,并做出了惊人的商业成就。

所以,一个优秀的开源项目不仅仅要看它的 Star 数,还要看有多少活跃的 Issue 和多少次 PR。

总的来说,GitHub 提供了一种更为开放和自由的编写代码和协作方式,同时,因为它在程序员中的巨大影响力,一个好的 GitHub 账号可以像成功的项目那样成为技术人的名片。现在不少公司都会在招聘时表示有 GitHub 项目是一个加分项。

那要怎么用好 GitHub,同时打造好自己的 GitHub 账号呢?这个话题展开又是一篇文章了,如果你感兴趣的话,可以留言告诉我。当然 ,你也可以在留言区分享给大家,你是怎么使用 GitHub 的。

好,今天的话题我们就先聊到这儿。卖桃者说,明天见!


点击链接,阅读更多文章!

,