写点什么

Google 教你如何“做”开源

  • 2017-04-10
  • 本文字数:2703 字

    阅读完需:约 9 分钟

引言

在 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 已经发布了成千上万个开源项目,且有形形色色的许可协议,这些项目既有大型的产品,如 TensorFlow Go Kubernetes ,也有一些较小的项目,如钢琴装饰灯 Neuroglancer Periph.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 )关注我们。

2017-04-10 17:272034
用户头像

发布了 33 篇内容, 共 12.3 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

IM扫码登录技术专题(三):通俗易懂,IM扫码登录功能详细原理一篇就够

JackJiang

即时通讯 IM 扫码

凭借师兄甩给我的通关秘籍,顺利拿到字节Offer

学Java关注我

Java 编程 架构 面试

停止维护的CentOS6,怎么使用yum?

运维研习社

Linux 5月日更

如何下载和保存YouTube上的中英双语字幕和视频

flyfk

字幕

来了!这份阿里P7大佬梳理的Java注解和反射精髓笔记,信息量过大

飞飞JAva

Java

GitHub霸屏文章!清华教授手写保姆级笔记Scala - 类,网友:太香了

牛哄哄的java大师

Java scala

GitHub开源的文言文编程语言、程序生成中国山水画、格律诗编辑程序

不脱发的程序猿

GitHub 开源 编程语言 传统文化

10个 解放双手的 IDEA 插件,这些代码都不用写(第二弹)

程序员小富

Java 后端 IDEA

青海大学智慧微能源数字孪生可视化系统

ThingJS数字孪生引擎

大前端 可视化 3D可视化 数字孪生

阿里P7:每个码农都应该知道的MySQL主从复制方法,看这篇就够了

牛哄哄的java大师

Java MySQL 数据库

消息队列的两种模式

五分钟学大数据

kafka 5月日更

干好开发者关系的十个职业发展秘诀

开发者关系

开发者关系 技术运营 DevRel

被解救的代码 - 代码即服务时代来了!

Serverless Devs

阿里云 Serverless 云原生

一线大厂最新总结Spring Security Oauth2.0认证授权全彩笔记

Java架构追梦

Java 阿里巴巴 架构 面试 spring security

一文带你全面了解java对象的序列化和反序列化

华为云开发者联盟

Java 序列化 java对象 反序列化 Serializable接口

JavaScript设计模式之单例模式

程序员海军

JavaScript 大前端 设计模式 单例模式

Apache Hue介绍

大数据技术指南

hue 5月日更

5月20日,GaussDB将有大事发生

华为云开发者联盟

数据库 云原生 华为云 GaussDB TechWave

高德 Serverless 平台建设及实践

Serverless Devs

阿里云 Serverless 云原生

云厂商下一块必争之地就是它了!

Serverless Devs

Serverless 云原生

前端项目上传图片,压缩,拍照图片旋转解决方案

Vue js canvas axios

414天前,我以为这是编程玄学...

why技术

Java JVM JMM

Java程序员面试必备——过得了面试官,过不了HR?我教你

比伯

Java 编程 架构 程序人生 计算机

【技术干货】文件系统中的“锁”

焱融科技

容器 分布式 云原生 高性能 文件存储

阿里大牛亲码 Spring AOP详解笔记全网开源,学透并发只需3天

飞飞JAva

spring aop

300条数据变更引发的血案-记某十亿级核心mongodb集群部分请求不可用故障踩坑记

杨亚洲(专注MongoDB及高性能中间件)

数据库 mongodb 架构 MySQ 分布式数据库mongodb

【智慧农业】从“看天吃饭”到“知天而作”,乡村振兴全靠 TA

IoT云工坊

人工智能 物联网 智慧农业 庭院灌溉 温室大棚

拥有一个高性能低延时数据库是什么样的体验?

华为云开发者联盟

数据库 华为云 GaussDB GaussDB(for Cassandra) 低延时

消除数据孤岛,华为云DRS让一汽红旗ERP系统数据活起来

华为云开发者联盟

数据库 GaussDB 数据孤岛 华为云DRS ERP

苹果移动设备用什么管理比较好?有什么推荐?

懒得勤快

imazing 手机管理

python解释器+pycharm的安装

Geek_6370d5

#python学习之路

Google 教你如何“做”开源_语言 & 开发_李建盛_InfoQ精选文章