写点什么

Google 的开源方法论

  • 2016-09-01
  • 本文字数:1097 字

    阅读完需:约 4 分钟

没有开源,Google 不会有今天的成功。在本周举行的北美 Linux 大会上,Google 工程师 Merlin 从一个第三方视角概括了 Google 是如何使用和为开源做出贡献。自 2002 年以来,Marc Merlin 一直担任 Google 的工程师,期间做过许多开源项目并为 Linux 项目贡献过代码的。

开源绝非易事

无论是个人还是公司,开放项目源码的目的无非是:借助社区的力量帮助项目更好地成长和推动社区的发展。但是,开源绝非易事。创始之初,由于资源非常紧缺,Google 在早期对开源的贡献非常有限。Google 的第一代软件都是为了内部使用的需要,并非在开始就是为开源而设计。之后 Google 希望将这些软件开源的时候,花费了大量的精力专门为它们写了技术文档以及论文,以描述其中的方法和代码,方便开源社区的其他开发者查阅和参与。开源并非仅仅是将源码发布出去,同时还需要付出巨大的精力去进行维护。

Google 的开源史

从经验上看,Google 过去在总体上虽然不怎么开源,但是却发表了很多相关的论文,比如说对于业界很重要的 MapReduce、BigTable 论文。并不是说 Google 不愿意开源,否则它也不会去发表这类论文,问题是在于开源需要太多的人力和物力了。随着 Google 的日益壮大,开始在开源社区担负起一定的责任。从 Google 开源的发展中可以看出,Google 最早期的贡献都是修复一些 bug。Google 总是最先发现和修复难以发现的 bug,因为这些 bug 只会在 Google 这样的规模中才会出现。到目前为止,Google 已经为 Linux 内核贡献了超过 5000 次补丁。其中有小的补丁也有大的子系统。当谈到 Google 自己的开源项目时,目前在 GitHub 中 Google 有超过 3000 个开源项目。随着开源项目的骤增,为了方便集中地对需要开源的代码进行审查,Google 组建了一个包含 6 个人的审查团队,主要任务是从法律层面审查 Google 内部使用开源项目和发布源码的合规性。

如何保持代码的合法性

为了保持整件事情的合法性,Google 将所有外部的开源代码存储在第三方。只有那些拥有 Google 能够接受的许可证的项目,Google 才允许在内部使用。一个 Google 不能接受的许可证的例子是 AGPL(Affero 通用公共许可证),这是一个互惠许可证,要求那些使用了其中的代码的项目需要提供一个项目源码的链接。相比于在一个较少限制的许可证下自己去书写代码重新实现,或者使用其他的方式,比保证 Google 面向外部的产品中没有任何 AGPL 代码的代价要小得多。对于那些向 Google 项目贡献代码的开发者,Google 要求他们同意贡献许可协议(CLA)。CLA 的主要目的是得 Google 能够对贡献的代码重新颁布许可证,以及 Google 对贡献的代码有专利许可。即,仍然保留开发者的代码的所有权,开发者只是另外给了 Google 一个许可证。

2016-09-01 19:003065
用户头像

发布了 32 篇内容, 共 19.1 次阅读, 收获喜欢 8 次。

关注

评论

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

Talent Plan 学习营初体验:交流+坚持 开源协作课程学习的不二路径

PingCAP

“开源之夏”活动火热报名中,丰厚奖金等你来拿!

云智慧AIOps社区

开源 活动 开源软件

NFT、GameFi、SocialFi、云存储,DFINITY 生态上最热赛道详解

TinTinLand

区块链

友好型公链Neo,助力开发者轻松掌握区块链智能合约

TinTinLand

区块链

手机摄像头芯片主要有哪些?

InfoQ IT百科

前三个月免费试用!博睿数据告警平台OneAlert火热大促进行中

博睿数据

从构建到治理,业内首本微服务治理技术白皮书正式发布(含免费下载链接)

阿里巴巴云原生

手机运存与内存有什么区别?

InfoQ IT百科

手机刷新率越高越好吗?

InfoQ IT百科

日志脱敏是什么意思?为什么要做日志脱敏?

行云管家

数据安全 日志脱敏

真正的量子计算机触手可及!英特尔宣布规模化生产硅量子比特

科技新消息

手机摄像头越多拍照效果越好吗?

InfoQ IT百科

射频芯片在手机上起到什么作用?

InfoQ IT百科

虎符交易所Hoo研究院|币海寻珠——四月上半月区块链投融事件Top20

区块链前沿News

区块链 投资 虎符研究院

Dubbo 编程之夏报名启动了

阿里巴巴云原生

开发者友好型公链Neo | 如何连接 Web2 开发者到 Web3 世界

TinTinLand

区块链

购买不同品牌的手机,怎么对比硬件配置?

InfoQ IT百科

最近几年,OPPO 、小米等手机厂商都开始走自研芯片之路,这条路能跑通吗?

InfoQ IT百科

CPU和GPU有什么区别?

InfoQ IT百科

如何写出有价值的竞品分析报告?

基调听云

竞品分析 基调听云

如何看待现阶段国内手机操作系统的竞争格局?

InfoQ IT百科

Android系统和iOS系统两大系统占据了手机操作系统98%的市场份额,国产手机操作系统还应该从哪些方面努力才能实现逆袭?

InfoQ IT百科

有研究显示,现在年轻人越来越不愿意换手机了。下一代智能手机在硬件上出现哪些更新,才会让你有换机的冲动?

InfoQ IT百科

OPLG:新一代云原生可观测最佳实践

阿里巴巴云原生

自动化测试的生命周期是什么?

禅道项目管理

自动化测试 生命周期

【Zeekr_Tech】ROS/ROS 2介绍

Zeekr_Tech

操作系统 机器人

量化系统开发,量化交易系统APP搭建

Geek_56201b

量化交易系统开发 量化交易源码 量化APP搭建

区块链招聘会完美收官,行业大咖教你如何 Get Web3高薪职位

TinTinLand

区块链

2019年华为鸿蒙加入手机系统阵营,如何看待鸿蒙这三年的发展?

InfoQ IT百科

摆脱 AI 生产“小作坊”:如何基于 Kubernetes 构建云原生 AI 平台

阿里巴巴云原生

银行为什么要上堡垒机?选择哪家好?有案例吗?

行云管家

运维 网络安全 银行 堡垒机

Google 的开源方法论_Google_百占辉_InfoQ精选文章