阅读更多

23顶
0踩

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

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

本期先来了解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 Toolkit(GWT):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。
  • 大小: 34.9 KB
  • 大小: 36.6 KB
23
0
评论 共 4 条 请登录后发表评论
4 楼 cl1154781231 2013-09-30 12:22
android加油啊!!!
3 楼 yeaha 2013-08-19 09:33
Kevin12 写道
Go语言怎么样?有发展前景吗?

没啥前途,你就不要浪费时间了,让我这种人学学就好了
2 楼 Kevin12 2013-08-14 10:05
Go语言怎么样?有发展前景吗?
1 楼 wen866595 2013-08-13 15:04
引用
Go:Google的Web开发语言。
Dart ?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • linux命令nt,全网最详细的Linux命令系列-cd命令

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧。命令格式: cd [目录名]命令功能: 切换当前目录至dirName常用范例例一:进入系统根目录命令:cd /输出:[root@localhost ~]# cd /说明:进入系统根目录,上面命令执行完后拿ls...

  • linux中设置NTP(服务端、客户端)时间同步

    NTP同步时间校准

  • Linux配置ntp时间服务器(全)

    ntp

  • nt服务器 linux,Linux下用Samba构建虚拟NT域服务器

    ZDNetChina服务器站 服务器操作系统技巧一、修改配置文件workgroup = ccgd.com //#构建的域名netbios name = ccgdsecurity = user //#共享的安全级别encrypt passwords = yes //#使用加密过后密码smb passwd file = /etc/samba/smbpasswd //#加密密码存放的位置;domain ...

  • nt是linux指令吗,linux shell 指令 诸如-d, -f, -e之类的判断表达式简介

    一、文件比较运算符1. e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ]2. -d filename 如果 filename为目录,则为真 如: [ -d /tmp/mydir ]3. -f filename 如果 filename为常规文件,则为真 如: [ -f /usr/bin/grep ]4. -L filename 如果 fil...

  • Linux NTP服务详解

    今天继续给大家介绍Linux运维相关内容,本文主要内容是NTP服务。 一、NTP服务简介 NTP服务,即用来同步系统时间的服务,虽然服务器内部会通过晶振自动计算时间,但是在系统长时间运行下,服务器内部时间与实际时间总会有细微的偏差,长时间的积累会导致这种偏差越来越大。在内网架构中,有些业务对时间的要求比较严苛,这就要求我们内网设备中的时间保持一致,而这一点就可以使用NTP服务实现。 二、NTP服务使用 (一)NTP+cron定时任务 NTP服务可以采用YUM的方式进行安装,命令如下: yum install

  • Linux、Unix和Windows NT体系结构的比较

    1. Linux系统结构     与Unix系统相似,Linux系统大致可分为三层:靠近硬件的底层是内核,即Linux操作系统常驻内存部分;中间层是内核之外的Shell层,亦即操作系统的系统程序部分;最高层是应用层,即用户程序部分,包括各种正文处理程序、语言编译程序以及游戏程序等。如图1所示。   图1 Linux系统结构     内核是Linux操作系统的主要部分

  • unix与linux,windowsNT的区别

    Linux与Windows XX的总体比较 Linux何以备受青睐,致使除微软以外,国际上有名的硬、软件厂商都毫无例外地与之结盟、捆绑。甚至连世界IT的龙头老大“蓝后巨人”IBM也要“全面拥抱Linux”呢? 首先,Linux作为自由软件有两个特点:一是它免费提供源码,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上。这就吸引了世界各地的操作系统高手为...

  • nt和linux内核,急!比较Windows NT 和Unix ?

    比较WindowsNT和Unix中在主要调用接口上的异同点?|tmd,我真够贱的。又来回帖。1内核(1)内核的弹性Linux的内核表现出了高度的可配置性和独立性,主要是完成:IO驱动设备管理,TCP/IP,以及任务调度.Linux的标准内核发布版本有40~50MB,而我现在在一些评估板上试验的嵌入式Linux系统(使用Arm或M68K系列的CPU)只用到了2MB,同样实现了网络功能和完整...

  • NT兼容系统——NT On Linux(NTOL)

    NTOL操作系统是Libresoft实验室的第一个项目,主要目的是将NT内核

  • linux内核 和nt内核,NT内核代码分析

    某种意义上nt内核用irql解决了一切,这正是由于它有一个基本的,核心的支撑。这就是它的抽象中断框架---IRQL。在linux中,我们知道,如 果我要知道能否调用schedule进行调度,那么我必须知道还有什么数据结构处在临界区,这个时候是否适合抢占,等等,当然内核的数据结构已经做得很好,我们做开发的不用考虑那么多,比如用spin_lock啦,用preempt_disable啦,但是当你读到这些...

  • Linux学习笔记之基本的操作命令

    1、文件系统 目录结构 文件类型(-普通文件,d目录文件,l链接文件,p管道文件,c,b设备文件,s套接字文件) 文件权限: chomd u+x my.sh(r:4 w:2 x:1 _:0) Chomd 742 my.sh (属主 属组 其他用户) 2、命令 文件:cp rm mv mkdir rmdir(删除空文件夹)...

  • 请问GRUB是什么?怎么区分各个分区?怎么在menu.lst里确定该用(hd0,1)还是(hd1,0)?

    GRUB是一个引导程序,它被安装在MBR(Master Boot Record即“主引导记录”)用于在启动时告诉电脑该启动哪一个OS(Operation System即“操作系统”),具体请看这里: http://zh.wikipedia.org/w/index.php?tit

  • linux文件权限在Windows有效,WindowsNT和Linux的文件权限一个区别(转)

    WindowsNT和Linux的文件权限一个区别(转)[@more@]   先说说大家熟悉的Windows,对于WindowsNT,只要你对某个文件设置了所有人不可写的安全属性(也就是文件权限咯),无论在哪个文件夹中都是不可以删除的,不管他所在的文件夹的安全属性是什么。当大家习惯了Windows的安全属性设置后,形成一个观念,文件是否可以删除是取决于这个文件的安全属性。我本来也有这个概念。然后我们...

  • windows nt和linux,WindowsNT和Linux文件系统的异同.docx

    WindowsNT和Linux文件系统的异同Windows NT和Linux文件系统的异同摘要:Windows NT 与 Linux是当前两大主流操作系统。为了比较两者文件系统的设计差异,本文首先介绍Windows NT的文件系统NTFS 和Linux的文件系统Ext2的运行原理, 然后分析两种文件系统的相同点与不同点,进而使读者对文件系统有较全面的认识。关键词:文件系统;NTFS;Ext2Abs...

  • Unix, Linux以及NT内核和它们各自衍生的系统关系图

    转载于:https://www.cnblogs.com/bbqzsl/p/5925921.html

  • asp代码ASP基于WEB个人博客网页设计(源代码+论文+答辩)

    asp代码ASP基于WEB个人博客网页设计(源代码+论文+答辩)本资源系百度网盘分享地址

Global site tag (gtag.js) - Google Analytics