写点什么

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:272043
用户头像

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

关注

评论

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

品高虚拟化后端存储的发展演进

品高云计算

苹果挖走大量谷歌人才,建立神秘人工智能实验室;李飞飞创业成立「空间智能」公司丨 RTE 开发者日报 Vol.197

声网

软件测试学习笔记丨测试用例基础概念

测试人

软件测试

云原生专栏丨基于K8s集群网络策略的应用访问控制技术

inBuilder低代码平台

云原生 #k8s

一键自动化博客发布工具,用过的人都说好(segmentfault篇)

程序那些事

人工智能 工具 程序那些事 openai 自动化工具

Premiere Pro 2024 for Mac:视频剪辑与制作软件

iMac小白

Premiere Pro下载 Premiere Pro破解版 Premiere Pro 2024

ETL如何执行Java脚本

RestCloud

Java 脚本 ETL 数据集成工具

【参赛总结】第二届云原生编程挑战赛-冷热读写场景的RocketMQ存储系统设计 - Nico

阿里云天池

RocketMQ 云原生

【深入浅出Spring原理及实战】「开发实战系列」Spring-Cache扩展自定义(注解失效时间+主动刷新缓存)

洛神灬殇

spring Spring Cache 缓存控制 缓存能力

Partisia Blockchain 生态zk跨链DEX上线,加密资产将无缝转移

BlockChain先知

《自动机理论、语言和计算导论》阅读笔记:p428-p525

codists

编译原理

MES生产管理系统:私有云、公有云与本地化部署的比较分析

万界星空科技

服务器 云服务 私有云 mes 万界星空科技

Web3 游戏周报(4.28 - 5.04)

Footprint Analytics

gamefi web3

AI 数据观 | TapData Cloud + MongoDB Atlas:大模型与 RAG 技术有机结合,落地实时工单处理智能化解决方案

tapdata

Tapdata Cloud 工单处理 大型语言模型LLM 检索增强技术RAG MongoDB Atlas

首届云原生编程挑战赛总决赛亚军比赛攻略(ONE PIECE团队)

阿里云天池

Serverless 云原生

企业选择MES系统是选择现成的OR定制开发?

万界星空科技

生产管理系统 mes 万界星空科技 定制开发MES

技术分享 | 弹窗开发中,如何使用 Hook 封装 el-dialog?

LigaAI

前端 弹窗 对话框 代码简洁

【深入浅出Spring原理及实战】「工作实战专题」叫你如何使用另类操作去实现Spring容器注入Bean对象 (1)

洛神灬殇

Java spring 框架 Bean处理

Partisia Blockchain 生态首个zk跨链DEX现已上线

石头财经

SOL链DApp智能合约代币质押挖矿分红系统开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

成为一名架构师,你必须具有“战略意图”

快乐非自愿限量之名

架构 软件开发

docker攻略,希望能帮助到大家对docker的理解

阿里云天池

Docker 镜像

直播预告|第一批 Vision Pro 开发者开始弃坑了吗? 本周六一起听听三位 XR 开发者的真实想法!

声网

Partisia Blockchain 生态zk跨链DEX上线,加密资产将无缝转移

股市老人

江苏气象AI算法挑战赛亚军比赛攻略_DontMind队

阿里云天池

阿里云 AI 算法

价值创造未来:财务规划与资源管理

智达方通

企业管理 资源管理 全面预算

Flink物理分区概念与分类详解

木南曌

flink 实时计算

【深入浅出Spring原理及实战】「开发实战系列」重新回顾一下异常重试框架Spring Retry的功能指南和实战

洛神灬殇

spring Spring retry 重试机制 spring-retry

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