摘要:目前开源软件已经成为了各大互联网企业背后的支撑力量。在企业使用开源和贡献开源方面,Google一直是行业的典范。如果没有开源软件,Google也难以达到今日的成功。本文就来探讨Google背后的开源力量。

开源软件(Open source software)是一种源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高这款软件的质量。——维基百科

《全球著名互联网企业背后的开源力量》文章中可知,目前开源软件已经成为了各大互联网企业背后的支撑力量,并逐渐改变着世界软件开发的格局。

[企业开源系列]系列专注于全球著名企业(包括国内企业)中的开源现状,探讨开源软件的力量,以使更多的开发者了解开源、贡献开源,打造更加和谐的国内开源生态。

本期先来了解Google背后的开源力量。

在企业使用开源和贡献开源方面,Google一直是行业的典范。一直以来,Google都在极力推广和倡导开源,并发布了一系列开源项目。这是因为Google从开源软件中尝到了甜头,如果没有开源软件,Google也难以达到今日的成功。开源软件也是Google用来对抗桌面软件霸主微软的利器。

Google所使用的部分开源软件

Google可以说是构建在开源软件上的,其基础设施及大量产品中都使用了大量的开源软件。单单一个Chrome浏览器就使用了100多个开源软件,你可以在Chrome浏览器中输入chrome://credits/,即可看到Chrome所使用的开源软件列表。

此外,在Google基础设施及内部使用的部分开源软件如下:

  • Linux内核:广泛见于Google的服务器及Android操作系统。就连Linux界的二号人物、Linux内核主要的维护者、Linus Torvalds的得力助手Andrew Morton也加入了Google。
  • GCC编译器:广泛应用于Google的产品开发中。Google的很多员工也来自GCC开发团队。
  • Python:在Google内部Python是继C++和Java之后使用率排名第三的编程语言。Python创始人Guido Van Rossum 从2005年开始进入Google,去年年底离开。
  • MySQL:Google 是MySQL的最大的用户之一,Google还将其内部改进的MySQL版本开源。
  • OpenSSL和OpenSSH:用于各产品中的安全通信
  • 大量Apache库等等

Google分布式系统的三大核心技术——Google File System(GFS)Google MapReduceGoogle BigTable)尽管不开源,但是如今也有开源版的实现,比如HDFS(Hadoop Distributed File System)是GFS的开源实现,Hadoop MapReduce是Google MapReduce的开源实现,HBase是Google BigTable的开源实现。

使用开源软件的原因

开源软件具有开放、共享、自由等特性,这是很多企业和开发者选择它的主要原因,Google也不例外。

众多优秀、成熟的开源项目的存在,使得Google根本不需要重新发明轮子或购买昂贵的产品,使用最少的人力、物力就能很快构建出一个高性能的产品或系统来。

在Google上百万台服务器中,开源软件可以为其节省一大笔开支,并且在定制修改上更加灵活。而通过社区的力量,开源软件也更加稳定、安全性更高。

Google从开源中尝到了大量的甜头,比如Android,2007年以开源形式发布以来,其阵营呈现出了爆炸式增长。如今已经成为份额第一的移动操作系统。

Google的开源文化

Google有一个称为“创意休息时间(Innovation Time Off)”的政策,即允许工程师花20%的工作时间做自己想做的事情,以此来激励更多、更广泛的创新。因此,Google的工程师也有了足够的时间来参与开源贡献。比如Chrome浏览器的开发思路都来自Google的底层员工。

Google还成立了一个开源项目办公室,专门负责Google的开源项目以及Google与开源社区之间的关系。

此外,Google也一直在招募开源领域的牛人来为其工作。这样一来,Google在开源方面处于业界领头羊的位置就不足为怪了。

Google的开源项目

开源的精神是开放、共享、自由,使用开源软件,当然也要回馈社区。Google目前已经发布了2千万行的代码,超过900个项目。其中一些知名的项目如下:

  • Android:全球份额第一的移动操作系统。
  • Chromium:Chrome和ChromeOS背后的开源项目。
  • Closure Tools:Google内部的JavaScript开发工具,使用它开发的产品包括Search、Gmail、Docs、Maps、Google+等。
  • Go:Google推出的编译型、并发型编程语言。
  • Google Web ToolkitGWT):Google的开发工具包,用于构建和优化复杂的基于浏览器的应用程序。
  • Native Client:使本地代码运行于Web应用程序中的开源技术。
  • Tesseract OCR:目前最准确的免费OCR引擎。
  • V8 JavaScript引擎:Google的开源、高效的JavaScript引擎,使用C++编写,用于Chrome浏览器。
  • WebM:高质量的、可与H.264抗衡的视频压缩技术

Google开源项目全部列表:http://code.google.com/hosting/search?q=label:google

Google支持的开源组织

开发者很少能够从其开源软件中赚到钱,而捐助可能是他们的主要资金来源。Google在使用开源软件赚得盆满钵满的同时,也一直在资助各大开源社区。比如:

详细信息:https://developers.google.com/open-source/organizations?hl=zh-CN

Goolge的开源服务、活动

1.  Google Code开源项目托管平台

Google Code是Google利用自身服务器资源提供的开发人员主页,最初目的是为Google自身的开源软件提供开发平台,以及协助开发者扩展Google产品的功能。随着托管项目的增多,Google Code正在成为一个开放的项目托管平台,并提供了类似于Sourceforge的版本控制、问题跟踪、Wiki、下载托管和其他有用的工具。

目前该平台托管项目已经超过250,000个。

2.  Google Summer of Code

Google的Summer of Code(代码夏令营)是一个全球性的计划,每年夏季举办。该项活动的目的是帮助在校的开发者在暑期完成学术挑战。Google提供了开发者奖金,参与的开发者可以在世界各地指导机构的帮助下为各种开源项目编写代码,并可以赢得奖金。

Google对开源的支持

Google在今年年初宣布了一项举措《Open Patent Non-Assertion (OPN) Pledge(开放专利不主张承诺)》,承诺不会因部分专利起诉开源软件的开发人员、经销商或者使用者,除非Google自己先受到起诉。

Google希望它的这项承诺能够起到带头作用,促使更多的专利持有人加入到该阵营中,共同构建一个能够保护真正的创新的开放的互联网,并持续提供优质的产品和服务。

Google开源的一些“副作用”

当然,Google过度倡导开源也带来了一些“副作用”。

1.  Android的碎片化

自从Android以开源形式发布以来,发展速度极快,导致目前连Google也难以控制。随着各大设备厂商的加入,Android生态系统逐渐呈现碎片化。由于各大厂商基于各自设备定制的Android版本无法通用,使得用户的系统升级严重滞后于Google官方发布的版本。目前Android 5.0即将发布,而4年前发布的Android 1.5版本仍然存在。不仅如此,各种硬件配置、分辨率大小,使得开发者在开发应用后需要做大量的测试工作,大大增加了成本。

2.  大量产品被关闭

Google极力倡导开源,又给出了员工20%的时间来从事自己喜欢的工作,再加上Google内部在开源项目上的审批周期非常短,导致越来越多的项目迅速诞生。目前Google的产品线估计多到连他们自己都数不清。

尽管大部分产品都很优秀,但不意味着Google都能运营好。由于缺少人员维护,不断有一些产品被关闭。如今Google每年都要进行几次大扫除,清理掉一些边缘化产品以及一些与主推产品功能类似的产品。近两年,Google已经累计关闭和合并了40多个产品,包括曾推出了众多创新产品的Google实验室。而这些产品的用户只能被迫转到其他类似产品上。

无法制造利润也是这些产品被关闭的原因之一。Google如今已经被其他互联网企业(如Facebook)赶上,使得它不得不开始削减产品,集中力量发展主要产品,并开始追逐利润。目前,App Engine平台上的开发费用被提高,部分已免费数年的API也开始收费等等。

最后

可见,开源成就了Google。与此类似,另一个互联网巨头Facebook也在开源软件的基础上获取了空前的成功,同时,Facebook也推出了大量的开源产品。但据悉,Facebook内部的开源氛围似乎比Google更为浓厚。下一篇,我们将继续带来Facebook背后的开源力量,看该巨头如何通过开源软件赶超Google。