当前位置:Linux教程 - Linux文化 - Google开源“掌门”Dibona:如何管理开源代码

Google开源“掌门”Dibona:如何管理开源代码


  Google开源项目经理Chris DiBona在Google纽约系列演讲活动中发表了一场演讲,题目为“Google开源的一年(A Year of Open Source at Google)”。在他演讲之前,这个Google开源掌门接受了媒体的采访,谈论对开源的一系列问题的看法,诸如微软最近发表开源侵犯专利权的事件、 Google的开源开发贡献,以及GPLv3对Google的影响等等,以下是访谈内容。

Google开源项目经理:Chris DiBona

Google是如何使用开源软件的?

记者:你在Google纽约系列演讲活动中将演讲什么内容?

Dibona:我将对我的观点进行进一步的阐述,内容包括关于Google是如何使用开源技术、我们内部如何关注开源,还有我们所展现给外界的一些反馈开源社区的活动,诸如Google Summer of Code开源项目夏令营,我们以后将公开许多源代码到开源社区中。我将围绕这些问题进行讨论。

记者:你能谈一下在Google公司用于软件开发的开源组件吗?

Dibona:我讲演的内容之一就是关于我们所修正的一些开源项目,我们公司内部正在使用它们。这些包括诸如Linux内核、GNU编译器集、Python、Wine、Derby、Aspell、DSpace、Autoconf、MySQL等类似的东西。

记者:请谈一下在Google用于生产或部署的开源软件的情况。

Dibona:我们使用Linux内核。每次你使用Google的时候,你都使用了Google的一台安装了Linux的机器。我们在其上运行了一些常见的开源工具,在其上我们运行了专有软件来支持Google、Gmail和所有其他不同的服务。

记者:你提到的常用工具都是什么?

Dibona:像GNU binutils、如OpenSSL、OpenSSH、某些网络监视工具,一般是操作系统级别的工具。

Google Code项目进行如何?

记者:请问你参与了Google Code项目吗?

Dibona:是的,这是我们部门管理的网站之一。

记者:Google Code项目进行如何?有什么方法来评测进展情况吗?

Dibona: Google Code有两个方面对我们是非常重要的。其中一个是我们在其上放置了很多与Google无关的开源项目。这样我们成为继SourceForge后的第二大开源项目网站。这真的非常有意义。

另一件事情是,我们在其上放置了很多我们的应用程序编程接口API的文档。这使得Google以外的开发者和程序员可以从技术上更深入了解Google,以及更加清楚他们的程序如何从技术上与Google实现交互,这一方面已经做得非常成功,对于它的进展我们感到非常满意。

Google Summer of Code项目

记者:在你看来, Google Summer of Code项目所带来的影响是什么?

Dibona:SoC所带来的影响中有两个是最重要的,第一个是我们为2000名开发者约定了时间和地点来进行一次聚会交流。今年将有1000名开发者参加,去年是600名,而前年是400名。因此,总体来说,我们介绍了2000名开发者到开源软件开发者中来。

另一方面,通过这些开源项目,以及通过这种方式将更多的机会带到学生群体当中,这些开源项目现在已经非常容易接受新开发者的加入。因此如果你对比一下今天和三年前的这些项目的话,你会发现它们现在对没有经验的新手具有更大的吸引力和接纳力。我认为这对开源软件来说是一件非常强大和有益处的事情。因此从这两方面来说,这个项目是非常成功的。

记者:这也是我希望看到的事情,帮助把更多对计算机科学感兴趣的人带入到开源软件的世界中来。

Dibona:对,如果你认真想一下,在开源世界中有很多伟大的软件,但是让一个年轻人从一个开源用户转变成一个开源开发者并不是一件轻松的事情。因为他们的代码突然被外界的每一个人看到,他们不得不与自己的职业技能可能相差很远人来进行交流。我认为,Google Summer of Code是一个非常有用的方式。

Google给开源社区反馈了什么?

记者:对于Google反馈了多少开源软件给社区,你有什么数据吗?

Dibona:我们已经将我们的一百万行代码回报给开源社区。这是评测我们对开源社区共享的一个方法。这是一个非常不错的数字,它是令人印象深刻的,不是吗?但是我认为还有更重要的,假若你看一下每一个主流的开源软件项目,还有很多相对较小的开源项目,你会发现Google或者对其进行了修补,或者发布新的功能,或者发布了其代码,或者参与了这些项目。

一个很好的例子是我们最近刚刚发布的一些让人们更好的使用MySQL的工具。因此这些都是非常有意义的事情。我们已经发布了各种各样的工具,从一些难以让人注意的微小修改到让人难以相信的大的事情,例如Google Web工具集就是完全开源的。因此我们认为,作为一个公司与外界分享我们的创新成果,这是一个非常好的道路。

记者:有什么Google技术正在变为开源吗?

Dibona:你知道,我们从来不讨论我们还没有发布的事情。顺便说一下,我们不这么做的理由是我们喜欢确信当我们发布某个消息或项目的时候,它已经完成了发布的准备工作。不过可以告诉你,我们将努力在5月31日的Google开发者日推出一些有趣的东西。

GPLv3对Google有什么影响吗?

记者:GPLv3对Google有什么影响吗?

Dibona:如果你是在9个月前问我这个问题,我会说它意味着我们将不能够采用一些GPL 3程序,这是因为在最初版中的一些ASP规定限制。不过,那时候我说过,也是我现在想说的,那不是世界末日。我们不用必须使用外界的每一个开源软件。

但是最近的GPLv3已经去掉了那些规定,因此我们可以很轻松地说,我们欢迎采用GPLv3。

然而在以前,假若人们选择在开源软件中加入那种限制,我们只有在产品中不使用它而且不能使它公开给终端用户。

因此,无论它们基于什么规定,对我们来说都无所谓,因为我们非常善于管理进入到公司中的代码。因此这实际上从来不是一个真正的问题。

最新版的GPLv3实际上是非常不错的。

微软的“专利侵权”论和Java开源

记者:对于微软最近声称的开源软件侵犯了其大量专利的说法,你有什么看法?

Dibona:是的,我们也看到了这件事情。和大多数人一样,我们更希望看到微软能真正列举出哪些专利权被侵犯。这个事情还要进一步观察。抛出这样的说法是一件很容易的事情,而是否有进一步的具体行动是另一回事。

记者:Sun的开源Java举动会对Google产生一定影响吗?比如Google会考虑将Java看作一个开发平台?

Dibona:这不会改变我们对Sun和Java的看法,但是这可能会增加我们对一些Java工具的使用。在Sun作为GPL发布Java以前,我们就已经与它们签订了源代码合作协议。按照这个协议,我们能够给它们提供补丁、漏洞和所有其他事情,因为我们拥有很高级的Java开发技术。我们拥有像Joshua Bloch这样的著名Java开发者,他对Java社区中占有举足轻重的地位。

因此,我们一直可以获得补丁和一些开发的功能,这对于我们是非常不错的。不过对于Java的开源,在很多方面对我们是很有利的,因为我们可以通过以前不可能的方式来访问某些特定的代码部分。我们可以修正它们,并且可以很简单地提交这些修正补丁。我们可以说,这是一个开源项目,因此我们可以发布这些内容。对我们来说这是一种难以让人相信的解脱。因此我们很高兴看到Java走向GPL。

Google如何管理开源代码?

记者:你是否对你们的代码进行过类似Black Duck或Palamida的软件兼容测试?

Dibona:没有,原因是我们对进入公司的代码实行了非常严密的控制。而且我们非常非常善于培训我们的工程师。这么和你说吧,我可以查看公司内的任何代码,而且我能告诉你在其中使用了什么开源软件,这是因为我们管理代码的方式非常完善。

因此这类工具在收购过程中非常有趣,而我们通常不谈论关于收购中的具体细节,它们不会引起我们内部的兴趣。我也认为这些代码工具会比较有用。现在我还不能确信它们对我们会多么有用。但是,它们是非常好的项目。

记者:既然你说你们有一些专有代码运行在由开源组件构成的组合之上,我比较好奇你们如何分清哪些是开源哪些是专有代码?

Dibona:值得指出的是,这就像你在Linux上运行一个应用程序一样。按照同样的方式,我们挑选用来运行我们的Web服务器和我们的Web应用程序。而且我们将Linux做一个内核和一个底层的操作系统。

当我们使用一个开源库的时候,我们将代码纳入公司的方式是严格控制的。Google公司有很多纪律来规范代码的进入。

明确的说,当创建了一些代码并将其提交,在其进入代码库前,另一个Google人员会对你的代码进行代码审查,假若一个人突然出来提交了25000行代码,那么这可能是值得怀疑的。我们有很多方法来有效地处理这种事情。我们告诉人们你需要将代码归入一个目录,你需要明确的标记代码,以便我们更能跟踪分析它们。因此我们在管理代码进入方面是非常容易做到的。