国外社交网站发展现状 全球最大的社交网站排行榜
这些数据展示了技术的生命力和开发者旺盛的创新精神。不客气的说,其他代码托管平台都绑一起,也打不过 GitHub 一个。值得一提的是,GitHub 上的中国用户数和代码贡献量从 2015 年超过英国之后,一直维持在第二名的位置,仅次于美国。可以看出随着国内开源的项目越来越多,质量越来越高,使用 GitHub 的中国组织和个人用户正在不断增长。世界上就这么多开发者吗?并不是。想想你们自己,有多少人有自己的 GitHub 账户呢?又有多少人提交过代码呢?多少人创建了自己的项目呢?如果你是 GitHub 用户,欢迎留言讲述你的故事。很多人最初接触 GitHub 会以为这是个 Git 仓库的网络公开版本,实际上 GitHub 和 Git 完全是两码事,Git 是类似 CSV 或 SVN 的代码版本管理工具,而 GitHub 提供的是服务能力,除了代码托管,GitHub 还提供了一系列协作功能,帮助开发者或开发团队实现高效率高品质的代码编写。除了开源项目,很多著名的企业都在基于 GitHub 的企业版研发和管理自己的产品和服务。不夸张的说,GitHub 的出现,以及它所践行的“社会化编程”的宗旨,让现代世界的软件开发发生了翻天覆地的变化,说是一场革命也不为过。很多复制 GitHub 的产品最终都败走麦城,很大程度上都是因为它们不具备社会化编程的特质,或者没有将其贯彻到底。
去年 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。
很多开发者把 GiuHub 当 Git 用,在账户里建个仓库扔些代码就以为是开源了。如果你没用过 Pull Request 与别人协作过,也没有 Merge 过别人的代码,那就不是个真正的 GitHub 程序员。什么是 Pull Request 呢?举例来说,比如你写了一篇论文,想找人做 Review,你保留了原本,他拿走了副本进行修改。这里的原本就是仓库,拿走副本的行为就是 Fork,然后人家基于副本进行修改和批注,叫 Commit,最后把修改好的副本提交给你,这就是一次 Pull Request。你根据副本内容修正原本,这叫 Merge。程序员们常常管 Pull Request 叫做 PR。一次完整的 PR 过程是这样的:你在使用或参与一个开源项目,想要开发功能或修复 Bug,首先要 Fork 这个项目的仓库,然后通过 Clone 命令得到一份本地代码。创建特性分支,编写代码增加功能或修复 Bug 并进行 Commit。发起 Pull Request 给原仓库请求合并。开发者们可以基于这个 Pull Request 分宾主落座,并进行气氛友好祥和的交流,比如“你改错了,你没改对,你代码这么烂还想 Merge,做梦去吧”等等。如果你竟然改对了,原仓库管理员就会把你的代码 Merge 到他的项目里,你就成为了这个项目的贡献者之一。你编写的代码就有可能被全世界的程序员使用,这是社会化编程最大的乐趣之一。