大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

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

关注

评论

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

国外低代码平台趟过那些坑,对国内低代码企业有哪些启示?

DT极客

这道面试题,出错率90%

田维常

面试

有没有听说过通达快递?

escray

极客时间 极客大学 课程作业 大作业 架构师训练营第 1 期

对冲基金的子基金模式vs集中管理

9527

我参与阿里巴巴 ASoC-Seata 的一些感悟

阿里巴巴云原生

阿里云 开发者 云原生 感悟 seata

Linux进程知识干货|收藏

赖猫

c++ Linux 后台开发 运维

电商平台如何激发内容生态

马踏飞机747

内容 内容分发网络 电商

云原生2.0时代,华为云DevOps立体运维实践

华为云开发者联盟

DevOps 运维 云原生 华为云

程序员修炼之路:你该知道的 7 个必经阶段

阿里巴巴云原生

阿里云 程序员 云原生 自我思考 成长笔记

智慧公安防控管理平台搭建,重点人员管控系统解决方案

t13823115967

智慧公安

架构师训练营 - 大作业二

Pudding

Flink SQL 实战:双流 join 场景应用

Apache Flink

flink 流计算

敏捷团队的质量保障赋能

BY林子

质量保障 质量赋能 敏捷测试

区块链数字货币交易所开发的简介

漫画 | 带你领略前端发展史的江湖恩怨情仇

苏南

程序员 大前端 漫画 时代发展

数字货币交易所开发的功能与特点

2020年11期券商App行情刷新及交易体验评测报告

博睿数据

APM 数据 AIOPS 证券

Python的GIL

yunson

Python GIL

纵观 ActiveX 平台的兴衰史,看开发控件的技术演变

葡萄城技术团队

SpreadJS activex

获奖名单|七日更挑战成功!

InfoQ写作社区官方

奖品 七日更 热门活动

软件测试--中间件介绍

测试人生路

软件测试 中间件

测开之函数进阶· 第7篇《装饰器装饰类,通用装饰器,有啥区别呢?》

清菡软件测试

测试

区块链app开发要多少钱?如何根据项目需求了解价格?

千里公路建设尽收眼底,3D可视化监测管养运,领导都惊呆了

一只数据鲸鱼

物联网 数据可视化 3D可视化 公路建设 智慧交通

7 天开发后台系统技术小结

老魚

程序员 全栈 建站

智慧社区管理平台建设,智慧平安小区整体解决方案

t13823115967

智慧社区安防系统平台开发

LINUX SHELL脚本攻略

田维常

深度解析!滴滴内部开源Spring IoC和AOP源码小册

Java架构追梦

Java spring 架构 aop ioc

四年三次获奖,PostgreSQL再度荣获“年度数据库”桂冠!

PostgreSQLChina

数据库 postgresql 开源

OpenKruise 2021 规划曝光:More than workloads

阿里巴巴云原生

阿里云 开源 容器 云原生 调度器

如何防止短信验证码接口被恶意调用攻击?

香芋味的猫丶

短信 短信防刷 接口安全 验证码

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