写点什么

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

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

关注

评论

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

“精准测试” 在商家地址专项的探索 | 得物技术

得物技术

世界读书日特辑 | 华为阅读深耕精品书,让读书变得赏心“悦目”

最新动态

北大GPT解题有数学老师内味了,用人话讲难题,从高中数学到高数都能搞定

Openlab_cosmoplat

人工智能 开源社区

提交代码「前置处理」,向前一小步,效率提升「亿点点」

极狐GitLab

DevOps 极狐GitLab git hook lefthook 代码前置

MegEngine 使用小技巧:量化

MegEngineBot

量化 MegEngine

视频大文件传输的演变:从“卷轴男孩”到自动化

镭速

Nautilus Chain :基于模块化架构的Layer3正在走向成熟

股市老人

iOS MachineLearning 系列(4)—— 静态图像分析之物体识别与分类

珲少

手势识别:让你的手成为计算机的新界面

数据堂

向量嵌入:AutoGPT的幻觉解法?

OneFlow

Go RWMutex:高并发读多写少场景下的性能优化利器

陈明勇

Go golang 读写锁 三周年连更 RWMutex

乌合之众再次上演,打工人将被AI一键淘汰?

引迈信息

人工智能 AI 低代码 AIGC ChatGPT

中国垂直行业SaaS,这样走可能是新出路

ToB行业头条

如何开发一个小程序自定义组件

Onegun

小程序 前端 小程序组件

在企业内容城池边,它建立起一支保卫军

ToB行业头条

卷起来了!阿里最新出品“微服务全阶笔记”,涵盖微服务全部操作

收到请回复

架构 #编程 #微服务

烟雾弹?突然转变?如何看待微软发声:中国是主要的对手

加入高科技仿生人

人工智能 AI 数智化 ChatGPT

九科信息流程挖掘产品bit-Miner即将开放面向对象流程挖掘能力

九科Ninetech

流程挖掘

MobTech MobLink|引流统计一站式服务

MobTech袤博科技

深度分享 | API 测试经济学与 API First 践行

Apifox

程序员 前端 接口 后端 API

如何利用 Go 创建一个 Web 应用

宇宙之一粟

Go Web 服务端 客户端 三周年连更

Oracle EBS学习篇:Oracle EBS启用诊断功能

back_wang

面试还不懂JVM性能调优,看这篇文章就够了!

程序员小毕

程序员 面试 后端 JVM jvm调优

智慧园区数字转型下的移动App建设策略

Onegun

移动应用 智慧城市 智慧园区

把“ai模型+低代码”应用在项目管理中,效率翻了好几倍

优秀

AI 低代码

您有一份直播回放待查收!

BinTools图尔兹

直播回放 版本发布

走进社区客户端测试 | 得物技术

得物技术

测试

让 AI 更简单 人工智能平台 SEAL 携手龙蜥落地达摩院算法能力 | 龙蜥案例

OpenAnolis小助手

开源 操作系统 SEAL 达摩院 龙蜥案例

一文带你了解 TypeScript 泛型

程序员海军

typescript 三周年连更

HarmonyOS Codelabs最新参考

坚果

OpenHarmony 三周年连更

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