17LAMP.NET

17LAMP,一起来开源,一起来生活

问答:Google的开源平衡行动
in

 

问答:Google的开源平衡行动

 

 Stephen Shankland  供稿

翻译:17LAMPNET JianXin

Chris DiBona的工作--Google的开源项目经理--是一个平衡行动。

Google为了它的高利润商业活动消费了很多开源软件。但是当他管理这个搜索巨人的开源工作时, DiBona 不得不保证公司的回报。它不能是只有付出没有回报的。

自由和开源软件拥护者可以是强有力的盟友--但是也是自由的畅所欲言的批评者。比如说,一些人已经因为它缺少对 Affero GPL 的许可而批评Google,这可以要求那些使用软件为了公共网络服务的用户分享他们对一个 AGPL软件项目的修改。

DiBona 认为Google打击了这个平衡,尽管提供它自己的修改给很多的开源项目,总体上拥护这种哲学,并且试着培育下一代的开源软件程序员。

DiBona已经步入开源软件行业十年多了。在他进入Google工作之前,他为 Slashdot工作,仍然是一个有影响力的实际的开源讨论的冷却器。 SlashdotLinux服务器制作者 VA Linux Systems 的一部分,它在1999年有一个引人注目的初始公共赠送行为,在一个剧烈的减少之后不久。

DiBona 将会在星期三的GoogleI/O会议上宣传开源主义--开源太好了以至于它不是真的而是一种魔法。根据日程安排--但是我提前与他一起坐下倾听他关于开源软件在Google的观点。

Google内部对于开源软件的观点

我文我自己,我正在试着向谁演讲?开源的商业世界?不是。开源的热心这的世界?也不是。我在于开源开发者一起工作。我们为我们的群体提出这些目标:总体上支持开源发展,这意味着支持开源的基础设施建设;支持开源的源代码的发放,从Google和总体上;并且产生更多的开源开发者,因为尤其是当我开始时,有一定比例的是Google从开源世界引进很多的人然后他们又离开了。这有一部分是真的,因为人们会来到这里说,喔,我一直都在为我的开源项目工作,并且我想要一个新的问题,我们有很多类型的新问题。所以他们相当一部分离开了。

那太糟糕了。我们作为一个公司最后想做的一件事是打击发放开源软件的源代码,因为我们认为这很重要。我们大量使用了它。我们发展的每一个工程师--他们想要使用多少的开源代码?我们有新的包并且一直有新的库加入到我们的公司。跟踪这些是我们这个群体的工作。当我们引进人员的时候,我们想要产生更多的开源开发者。所以我们发起了Google代码夏令营,并且现在我们也有了高校性质的这种活动。我认为我们已经在产生新的开源世界的人员方面制造了很大影响。

我对于在贡献回上游项目和保持你自己的内部分歧之间的平衡很好奇。你怎样完成那样的评估?
Google
认为一些项目比其他的更加重要。显然Linux内核很重要。每一次你使用Google,你都在使用一个在运行Linux内核的机器。我们有相当大的Linux内核开发团队,并且我们雇佣那些工作在Linux外部内核的人员。 Andrew Morton是一个很好的例子。我们尝试着确保那些人可以在任何时候呈交他们对于开源项目作出的修改。更加经常的是工程师的时间处于支配地位而不是他们对于我们的部分缺少兴趣。我总是希望我们可以发放更多,但是一个工程师需要时间来做这些事情。更大的努力,它会容易一些因为更多的人员工作在它上面。

同样的事情也会发生在我们的编译器上(一个软件翻译程序员的代码到电脑可以认识的命令)。我们的编译器群体最重要的事情是修补是他们工作的一部分。他们总是修补从我们内部编译的东西到外部的世界。我们最近发布了一个新的连接器,Gold-- Ian Lance Taylor 在我们的编译团队中为我们工作。他一直在GCC团队中。他过去曾在 Cygnus(一个开发GCC的公司)。我们有很多前 Cygnus公司的成员。

那是有一些Google人员只想为现存的项目打补丁。他们发现了一个漏洞,想添加一个特性。那一点也不费时间。我们的团队看了第一组一个工程师想要发送出去补丁,确定这个工程师知道他们正在为外部世界做什么,然后他们基本上会交出自由的控制权。他们让我们持续邮寄他们正在为什么打补丁。我们想要确保我们的代码尽可能快的送出因为项目一直在重复。如果你不把补丁加进去,它们就不会被接受,因为他们会变得陈旧或者不再合适。如果你得到一个补丁,很快从那里离开对我们来说更好的选择。因为那时项目在发展并且回到了公司,我们不再不得不重新使用一个补丁。

什么是你摄取的最重要的开源项目内核,编译器--GCCPython解释器。Python对我们来说是非常重要的。Google App Engine--是一个Python主系统。Java对我们来说也很重要,并且那已经变成开源的了。我们有很多优秀的Java开发人员为我们工作--Josh Block, Neil Gafter  --他们已经很好的掌握了这项技术。

一旦你经过了这三个项目--编译器,语言,内核--你就进入到了库中。对我们来说那是 OpenSSL, zlib, PCRE.  MySQL随我们非常重要。那之后,它开始停止我们最重要的部分。

Java的开源对你来说有什么改变吗?

没有什么影响。我认为这对于外部世界的影响大于对我们的影响。Java现在已经是一个非常成熟的语言。我们一直在使用它。之前,是JCP Java Community Process掌控Java的未来)--它周围有一个开放的标题。它从来就没有那样的开放。有一些关于开源对于Java来说意味着什么问题,尤其是J2MEJava的移动版本比如说手机)和TCK(技术可移植工具)。

 

你们是否在使用一个定制的Linux内核,或者你们是一个很普通的用户呢?

我不认为有这样的东西作为一个定制的Linux内核。内核是相当灵活的。它有所有这些不同的架构。我认为Linux内核本身就是一种定制的事物。

 

但是你们是否有一些组织内部的习惯呢?

不是太多。Google在其余世界前对于一些有趣的硬件是暴露的。所以在内部我们会测试一些那些硬件上的示例代码,那就是定制的职员。但最后会进入外部世界。我们和 Berkeley的一个叫做Xorp的团体投资了一个工作把一个高速的Broadcom 网络芯片应用到Linux. 我们独自控制这项工作不符合我们的利益。那时定制吗?确实是。但是它是完全的定制吗?我不认为它是完全定制的如果你可能那样认为。

 

你还在使用2.4内核是真的吗?

在某些地方是这样。

 

那么对于核心的搜索产品怎么样呢?.

 我不知道它是怎样被分出来的。当你提起Google,你会静态的认为搜索是在内核的顶端。但并不总是那样。在数据中心就不是这样。尽管我认为2.6占支配地位。

 

一直都有关于回报的讨论。当GPL版本3推出时,自由软件基金倾销 Affero违反了GPLv3的条款并且把它分裂成了分离的许可。 Eben Moglen (自由软件法律中心的联合创建者和那时的自由软件基金的法律顾问)说,解释说,如果Google也开始变得寄生性了,然后我们会重新评估它。你会多么的担心如果你消极的感知到你使用的比你贡献的多呢?

我确实会担心这些事情。我认为总体上这不是一种正确的感知。你总是可以贡献更多,也总会有一些永远不会满足的人。我们能够被回报的更多吗?当然。我改善那个问题的方法是通过像代码夏令营的方式。Google每年都在发布,不是计数机器人或者真正大型的开源项目比如GWT,一个新的项目没两至三个星期。或者一个月中为大量的项目打补丁。我保守的估计我们的公司正在以每年100万行代码的量在发布代码。

 

如果你与开源开发者--那些在项目上工作的人--交谈,我想他们会懂得那些。这回到了谁是我们想要联系的对象的问题上。我一直认为热心者社区最终会明白这一点,并且我认为那是真的。有一些对我们感到不安的人因为我们没有接纳 Affero类型的GPL,但是这么做对于我们来说并不实际。当他们在GPLv3中有了一个 Affero类型的条款,我告诉 Eben的是,听着,你可以接受任何你想接受的事物。我们会尽可能持续的支持 FSF SFLC,但是那意味着我们将不能再在内部使用那个许可证,因为这么做随我们来说并不实际。我认为那是非常实际的反应。 Affero GPL就在那里。对于使用它的人来说那是很好的。只是不是我们。

 

那就是关于的自由软件的事情。你没有被强迫去使用它们。在公司内部,对于我们不使用我们不想用的东西,我们有足够的控制权。

 

你偏爱的许可是什么?

我们大体上在 Apache License--Apache 2   发布.我们认为它有最好的语言。并且GPL需要很多的管理--比我们在这个许可下开发一个项目的时间多--补丁和所有的那些。Apache 2 鼓励人们去获取东西并且运行它。那是当我们发布代码是追逐的目标,无论它是否是让人们接受我们喜欢的技术,比如说API。也就是说,我们已经在GPLLGPLGPLv3BSD下发布了代码。我们的默认选择是 Apache许可。

 

你补贴倡导者坐在一起工作在重要的项目上到什么程度?

我们已经得到了像 Jeremy Allison Andrew Morton和一些Guido时代的人。他一直都很精心的工作在 Google App Engine Mondrian上。更加平常的是我们尝试着把开源作为我们工作的一部分,所以他们一直在为他们使用的库打补丁。我们认为那更加的健康比起让那些人只是致力于一个开源项目的工作上。

 

在内部你们使用了大量的开源。你们是否有些知识产权审查或者检查在你们使用它们之前?

我们会的。我们有两种方法做这件事。当某些人想要从外部世界引进一些代码的时候--开源的或者商业的--你必须把它放进一个特别的我们称之为第三团体的字典中。他们被要求放进一个被叫做 readme.google的文件,这个文件描述这个软件的来源,它如何被授权,这种授权的类型。我们寻找那些明显的事情。有一些项目有令人怀疑的知识产权来源,我们知道那些,并且我们知道运行它们的人们,我们就不会再使用那些软件。

 

自从Google不再发布大量软件后,我们把它变得比那些销售软件和硬件的公司容易了一些。我们在一些情况那确实会发生-- Google Search Appliance,一些刻下载的组件。那得到少量额外的注意。相似的,当我们有了更大的项目比如说 Google Android,我们有了一个更高的典礼--没两个星期我们聚集在一起并且看一下是否许可的情况有变化。

 

跟踪模型工作的很好。在创建工具中,我们有工具写下一个程序经理或者一个发布经理在哪里可以某一个层级的警告并且它会告诉他们拥有什么样的开源软件和他们怎样照着它来作。在那一点上,当他们快要发布的时候我们为他们建立了一面镜子。

 

这是我们跟踪事物的地一种方法。第二种方法是无论何时一个Google成员加进一个变化列表--这是我们正在开始做的事情--我们在因特网上用我们的 Code Search 产品把它和所有存在的开源代码作比较。我们把来自于平均的Google工程师的变化列表中的代码和代码数据库中有交集的代码做比较。当我们找到交集的时候,我们会检查看是否是一个完全的拷贝。如果是的话,我们会保证这是在正确的说明中并且它被适当的标记了。如果没有的话我们会叫来这位工程师并且确保它被适当的标记了,我们就可以在许可下做正确的事情了。

 

这个工具还在它的婴儿期。我们正在尝试着找出一个方法使它自动的完成工作。但是它很伟大因为有规划地销售,我们团队的目标是不要打断扩展或者停止发展。这是为了让开发者能够使用尽可能多的开源。我们认为这很健康,因为那样他们就不用再写那些代码,他们可以些其他的代码。

 

你是否会为了专利或者版权检查代码?

不会。在我们的列表里都是合法的人。我们有两个主要的列表来跟踪这些事情。引进代码的开源许可和发布开源代码。这一切都是合法的。专利是很欺骗人的。

 

是否会变得容易一些被Google雇佣如果你有维护你自己的开源产品或补丁的经历?

如果你在开源领域里有一定名声,这当然会有所帮助。如果你有一个健康的项目在开源领域,我相信那一定会有所帮助。我看的一件事情在招聘职员的时候是什么时候你有的开源经历,这非常重要。你可以仅仅看一些这些历史。面试很重要,但那不会很深刻,它只有45分钟的时间,所以你怎么能得知一个人是否在编程或者计算机科学上有专长?

Or at social relations, for that matter.

开源经历真的会令人难以置信的快速显示出一个人的能力。你可以看他们编写的代码,在邮件列表上观察他们的活动,他们怎样和生活中的人处理矛盾,和真正的用户的问题。那是一个难以置信的来源。

 

代码夏令营不是一个真正的招聘活动。如果它是的话,它真是昂贵的一个。去年900个参加活动的学生编写了200万行的开源代码。可能三分之一的人继续致力于他们的项目,因为剩下的人不得不回到学校。

 

我们有很多的学生在这个活动中已经两年或者三年了。这一切的重点是在夏令营中至此孩子们所以他们可以进步、编程并且不会进入其他领域工作出了计算机科学。这是我们第四年作这件事了。今年我们有1109位来自95个国家的学生。

 

Reserved by www.17LAMP.net