写点什么

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

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

关注

评论

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

仓库存储管理系统-贵金属(源码+文档+部署+讲解)

深圳亥时科技

昇思市场份额将达30%,权威机构对中国AI框架市场最新预测

Geek_2d6073

深入理解 HTTP 协议:从基础到实践全解析

不在线第一只蜗牛

网络协议 HTTP

AI口语考试APP的功能

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI口语练习

牛客网最新Java面试通关八股文手册,花点耐心每天刷上10道题,挑战一下年薪50W

采菊东篱下

编程 计算机 java面试

mes在造纸工厂数字化转型中的应用

万界星空科技

mes 万界星空科技 造纸行业 造纸mes 造纸厂

OCTC发布《BMC开放固件产业报告》,加速多元算力OpenBMC创新落地

财见

NFTScan | 12.09~12.15 NFT 市场热点汇总

NFT Research

NFT #Web3

2.5 亿美元融资加速升级,从子网到 Avalanche9000,Avalanche 想要改变什么

TechubNews

阿里内部Spring Cloud Alibaba 手册, 面面俱到,太全了!

Summer

Java 程序员 面试 架构师 大厂

阿里妈妈公布NeurIPS比赛结果并开源AuctionNet

新消费日报

仓库存储管理系统-综合管理系统(源码+文档+部署+讲解)

深圳亥时科技

WebGL开发中的代码优化

北京木奇移动技术有限公司

WebGL 数字孪生 软件外包公司

去哪儿秒级监控预警落地实践

Qunar技术沙龙

后端 预警监控

重磅首发!网易伏羲具身智能解决方案推动人形机器人产业新发展

网易伏羲

解决方案 网易伏羲 人形机器人 具身智能

QT客户端开发的代码优化

北京木奇移动技术有限公司

软件外包公司 QT外包开发 QT开发公司

耗时97天,终于把牛客网最火的Java面试八股文整理出来了

采菊东篱下

编程 计算机 java面试

反向代购新风尚:创业者出海的新蓝海

代码忍者

代购系统 跨境独立站 反向淘宝代购集运系统

WiFi 7 Components IPQ9574 with QCN9274/QCN6274 Comprehensive Analysis of the Performance

wifi6-yiyi

WiFi7 mlo

JavaScript是按顺序执行的吗?聊聊JavaScript中的变量提升

不在线第一只蜗牛

JavaScript

使用Python实现两组数据纵向排序

EquatorCoco

Python 算法

批量重命名--我用火语言RPA写了个EXE可执行文件

火语言RPA

RPA 高效办公 批量重命名软件

程序员面试必备的Java八股文,适合所有的Java求职者!

Summer

Java 程序员 面试 架构师 大厂

AI口语考试APP的技术难点

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI口语练习

仓库存储管理系统-生产行业版本(源码+文档+部署+讲解)

深圳亥时科技

又遇百度,能否 hold 住?

王中阳Go

Go 面试

为什么某些 batch size 会突然导致性能下降?

Baihai IDP

人工智能 深度学习 AI LLMs

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