Google 教你如何“做”开源

  • 李建盛

2017 年 4 月 10 日

话题:语言 & 开发架构

引言

在 2016 年,IDG 旗下网站 ARN 发表了一篇文章:展望 2017 年的顶级技术,将开源和人工智能、深度学习、虚拟现实、云计算安全一并列举为 2017 年的流行技术趋势。果不其然,2017 年第一季度已经过去,回顾一下这个预测,某种程度上验证了这一预测:

  • GitHub 发布开源指南,旨在帮助人们利用开源,参与开源,治理开源。
  • AT&T、Alibaba 加入 Linux 基金会。
  • Amazon 开源旗下深度学习框架 MXNet,并捐赠给 Apache 基金会。
  • Google 捐赠给 Apache 下一代大数据框架 Beam。
  • 在刚刚结束的云原生技术研讨会上,Linux 基金会主席的 Keynote 讲到,Kubernetes 将会是下一个云计算中的 Linux。
  • ......

不过,所有这些事件,均仿佛是为今天的事情作铺垫——Google 为其开源建立了新家:opensource.google.com。

背景介绍:Google 与开源

Google 对于开源的理解,在业界是独树一帜的。从 2005 年就成立了开源项目部(OSPO),并由业内对开源有深刻理解的 Chris DiBona 来主持工作。Google 或许并不是贡献代码最多的公司,在 Kubernetes 项目之前,Google 的开源项目甚至是只有很小的贡献率、或者是强约束并非完全的开放(比如,Chrome 和 Android),但是它依旧在开源开发者圈具有强大的影响力(甚至有人说是最大的),这就是一旦彻底开放如 Kubernetes 这样的平台,就促使这个项目异常的成功。再说了,Google 除了项目之外,还创建过 Google Code,曾经一度是开源软件最大的代码托管的地方,以及大名鼎鼎的 Google 代码夏令营(GSoC),虽然这些举措 Google 都没有大量的代码贡献,但是它促使世界各地的开发人员能够合作,从而编写更多的代码。

如果离开了开源软件,我们今天所看到的互联网将不复存在。 ———— Chris DiBona ,Google 开源总监

除此之外,Google 也通过诸如软件自由保护apache 软件基金会以及其它的组织来对开源项目和社区进行赞助。

同时,Google 也是开源的受益者,从 1998 年最初的服务上线,Google 的产品和服务都是架设在 Linux 等开源软件的基础之上的。当然 Google 是一家广告公司,至少不是一家纯粹的靠软件来盈利的公司,拥有非常多的优秀的计算机科学家和工程师,一如 Google 自家博客中介绍中所说:“从支撑服务的 Linux 内核到内部的文化,开源是 Google 做任何事都绕不过的。 ”

新站点的思路

负责人在博客上说道:新的站点成立,旨在将 Google 如何使用、发布和支持开源的所有事情放在一起。站点将以最大的深度和广度的展现 Google 对于开源的热爱!它不仅包含人们意料之中的:Google 的程序、所支持的开源组织、以及长长的开源列表,而且还包括了意料之外的:Google 是如何“做”开源的幕后策略。

由此看出,新的站点,成为了 Google 对待开源的统一入口和展示的地方,也就是 Google 的开源哲学和方法论的最大呈现。

帮助人们找到感兴趣的项目

开源意味着让人们更好的协同工作,开发更优秀的软件,让这个世界更加的美好! ———— Sarah Novotny, 项目经理

Google 对于开源项目的态度,向来是“越多越好”,原因是无法实现知道那些项目会引起人们的兴趣,所以 Google 的开源部门就是帮助公司尽可能多的发布代码。这样的经过了多年以后,回过头来再看,Google 已经发布了成千上万个开源项目,且有形形色色的许可协议,这些项目既有大型的产品,如TensorFlowGoKubernetes ,也有一些较小的项目,如钢琴装饰灯NeuroglancerPeriph.io, 其中有些是获得 Google 正式支持的、有些是试验性质的,而有些则只是为了好玩。所有的这些项目,都分散在超过 100 多个 GitHub 的组织和 Google 自托管的 git 服务上,以至于人们对于 Google 开源代码的规模和范围是模棱两可的,甚至被错误的低估。

为了给人们提供一个完整的 Google 开源项目图景,Google 创立来Google 开源项目目录,在未来 Google 的开源项目部,会逐渐的将这个目录完善并对没个项目进行更为细致的描述,比如会举例说明,Google 内部是如何使用的。

我们以Kubernetes的描述页为例,见识一下 Google 的用心之处,打开这个页面,在上面的条幅上展示了项目的名称和站点域名,在正文的左侧,分了三个章节,分别是:

  • Kubernetes 的功能概要描述,所解决的问题,Kubernetes 最初的灵感来源,以及简短的发展历史
  • Kubernetes 在 Google 内部是被如何使用的
  • 代码仓库,以及最为典型的 GitHub 质量评估:星星数量和被 fork 的次数。

而正文的右侧,则是一些归类、标签,以及所使用的编程语言,便于分门别类的查找。

这对于开发者而言,无疑会大大的提高查找自己感兴趣的项目的效率;而对于互联网或企业来说,研究 Google 怎么使用,会少走很多很多的弯路。是的,Google 为这个世界贡献了很多分散的开源项目,有了这个权威的索引,让我们重新认识 Google 的开源项目的宏大,目前在编的项目超过 2000 多个。

Google 是如何做开源的

开源从来就不仅仅是将代码开放这么简单,它还至少包括了社区和流程。参与到开源项目和社区,对于 Google 这样体量的公司是件非常具有挑战性的事情,在 2014 年,Google 帮忙组件了TODo Group,这是一个众多商业公司组成论坛,讨论参与开源的最佳实践和协作。经过多年的累计,从讨论中收获很多灵感,借着发布新站点的机会,Google 还一同发布了内部文档:Google 是如何做开源的

关于此文档,绝对值得业界借鉴,比如:

罗马从来就不是一天建成的,上述的这些规则也好,流程也罢,都是多年的经验积累,甚至有的是付出教训后学到的经验。这些未必适合所有人,(开源本身就是有很多的选择)所以这些文档并非是“how-to”指南,但是相信对于有心人是有很大的参考价值的。

结语

Google 似乎正在改变自己在业内的高冷形象,从 Kubernetes 的社区运营,再到今年即将参与 RedHat Summit 2017,乃至这次新开源站点的建立,都在应验着开放战略,试图扳回在云计算市场的失利。再比如 Spanner 的服务、以及免费为开发者提供资源等具体的产品和服务。其中一定有商业因素的考量,但我们始终认为 Google 的信条,以及他对开源独特的理解,所以宁愿相信他的情怀:Google 开源项目部不仅仅是让 Google 的软件变得更好——他们更加热衷于通过开源改变世界。

让我们祝愿 Google 新的开源站点,百尺竿头更进一步!让所有的开发者、开源相关人员受益。


感谢郭蕾对本文的策划和审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

语言 & 开发架构