UDN-企业互联网技术人气社区

板块导航

浏览  : 1077
回复  : 0

[其它] Google 的开源方法论

[复制链接]
胭脂粉的头像 楼主
发表于 2016-9-5 15:01:12 | 显示全部楼层 |阅读模式
  没有开源,Google不会有今天的成功。在本周举行的北美Linux大会上,Google工程师Merlin从一个第三方视角概括了Google是如何使用和为开源做出贡献。自2002年以来,MarcMerlin一直担任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一个许可证。

文章来源:InfoQ
文章作者:百占辉

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部