【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

百度百舸 · AI 异构计算平台,加速自动驾驶模型迭代

百度Geek说

人工智能 自动驾驶 企业号 1 月 PK 榜

厉害了!天翼云位列中国医疗云基础设施服务市场榜首

天翼云开发者社区

IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)

JackJiang

网络编程 即时通讯 protobuf im开发

数据可视化图表系列解析——雷达图

Data 探险实验室

数据分析 可视化 数据可视化 图表 可视化数据

软件测试/测试开发 | 接口测试中,请求超时该怎么办?

测试人

软件测试 自动化测试 接口测试 测试开发

视觉大模型训练和推理加速

百度Geek说

人工智能 深度学习 transform 企业号 1 月 PK 榜

多活数据中心链路智能调度场景

智维数据

数据中心 DNS 智能运维 应用交付平台 可视化数据

复习前端:JavaScript 字符串操作方法

devpoint

JavaScript 前端开发 字符串处理

参加前端培训班哪个好

小谷哥

大公司为什么禁止SpringBoot项目使用Tomcat?

程序员大彬

Java springboot

明道云零代码应用治理分层分级指南与量表

明道云

架构5作业

梁山伯

再获认可!天翼云荣获“行业应用实践优秀合作伙伴”授牌

天翼云开发者社区

高效学 C++|函数参数的引用传递和函数重载

TiAmo

c++ 编程语言、

“天翼云杯”决赛收官!看看你pick的队伍战绩如何?

天翼云开发者社区

小令动态丨令牌云2022年度盘点

令牌云数字身份

盘点2022

如何打造一支有战斗力的团队?

石云升

极客时间 1月月更 技术领导力实战笔记

到底卡在了哪里,2023年再撒谎网慢就说不过去了

Yestodorrow

架构 可观测性 网站性能

重新思考边缘负载均衡

俞凡

架构 netflix 大厂实践

将混沌实验内建到持续交付过程中提升系统稳定性

QE_LAB

混沌工程 混沌测试 测试技术

如何减少网站卡顿的代码级别详细文章

Yestodorrow

丢掉丑陋的 toast,会动的 toast 更有趣!

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

北京有哪些java培训中心

小谷哥

大数据培训课程哪家比较好

小谷哥

web前端培训课程怎么选择

小谷哥

扪心自问,我们在用户旅程的投入有多匮乏?

Yestodorrow

零代码应用搭建规范建议

明道云

BSN祝全体技术工作者新春快乐!

BSN研习社

加速数字化转型,天翼云携手央国企积蓄发展新动能

天翼云开发者社区

培训学习前端开发技术好吗?

小谷哥

基于 std::variant 的运行时多态

SkyFire

c++ 多态

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