谁说开源不创新?开源思想正在Jave社区、操作系统、脚本语言、安全、多媒体和通信等领域创造大量的新技术。
人们经常说开源没有创新,而是模仿。这肯定是专有软件行业希望你相信的。看一看目前企业中使用的一些最著名的开源项目中的活动,让你不由得不同意。
例如,尽管开源数据库令人难以置信地广泛用于各类关键任务应用,但不管是MySQL还是PostgreSQL,实际上没有做任何IBM、 Microsoft、Oracle和Sybase多年来没做过的事情。同样,OpenOffice.org生产力套件是一个给人留下深刻印象的社区驱动的开发的例子,但它惟一的真正目的是创建免费的、基于标准的Microsoft Office的克隆。甚至Linux自己也是作为免费软件改写Unix的尝试。但是,所有这些都不能否定开源开辟了一条属于自己的新路而非只是跟在别人后面的事实。Apache Web服务器就是最好的例子。Apache自1995年诞生国家超级计算应用中心的httpd后,就一直是用户的首选Web服务器。据网站与服务器监测机构Netcraft说,目前62%的Internet网站使用Apache,而使用Microsoft IIS(Internet信息服务器)的网站只有31%。
然而正如Microsoft的Internet Explorer所证明的,流行程度并不是惟一衡量性能的指标。Apache常常是安装在大多数Linux服务器上的缺省Web服务器,而它的成功并不只是由于人们熟悉它或缺少竞争对手。更确切地说,它具有稳定性、高性能、一流的安全纪录以及使它具有比商用竞争对手更多功能的各种特性与扩展程序。Apache实际上开辟了Web服务器软件市场并处于领先地位。5年后,IIS无疑将以这种或那种形式存在于市场上,但Apache仍将是领先产品,进一步拓展Web服务器的功能。
这类协作创新的例子在IT领域中比比皆是。在软件业中,无数的开发商、个人和公司在试验开源方式。理由之一是因为社区驱动的开发使软件产品能够有机地发展。正如Eric S. Raymond在其开创性的著作《大教堂与集市》中所说的:“每一个软件杰作都开始于满足某个开发人员的个人需要。”当一群开发员以开源方式协作时,每一位开发员都有着独特的个人需要,其结果是软件不断扩展,填补专有产品没有涉及的这些功能领域。
开源赋予Java生命
开源社区开发的工具巩固了Java在开发人员市场中的领先地位。
毫无疑问,开源使Java得到了巨大的实惠。Java语言和平台赖以发展的JCP(Java社区进程)似乎在以蜗牛的速度前进。委员会的审查和批准是个缓慢且需深思熟虑的过程,Java毕竟是领先企业应用平台,因此它应当缓慢演进,哪怕需求十分紧迫。为解决一些问题而造成另一些问题从来不是一种好的解决办法。
然而,与其相对的开源社区却一直在飞速前进,推出大量的重要创新。目前,企业Java基本工具全部是开源产品:Ant(用于开发应用程序)、 Hibernate(用于将数据保存在硬盘上)、JUnit(用于设备测试)和Maven(用于继续的集成),更不用说得到高度重视的Eclipse和 NetBeans开发环境和PMD源代码验证程序了。
Java开发人员还从几种开源框架中受益,如JSF(JavaServer Faces)、Spring和Struts。再有就是众多的容器(container):Apache Tomcat、Geronimo、Jetty、Jonas和Resin,更不要说很多用于嵌入式应用的小容器了。开源是Java世界想像力和生产力的巨大源泉。
在这两股河流——JCP与开源——之间站着3大企业Java技术提供商:BEA、IBM和Sun Microsystems。他们都是一只脚站在开源工具河流中,另一只脚站在非开源工具河流中。虽然很多IBM工具是专有的,但它一直是Java和开源社区的主要贡献者。BEA最近非常积极地实施其“混合”战略,积极支持开源产品。此外,BEA还向多个开源项目捐献代码和程序。
Sun有点特立独行。狂热的开源支持者一直逼迫Sun开放Java源代码,希望加速这种平台中的创新,但Sun却行动缓慢。这样做是有一定道理的:开放Java代码可能会将Java分裂为不同的版本,从而减少Java引以为荣的可移植性。但开源社区一直尖锐地攻击Sun的这种立场。
鉴于Sun对开源的长期贡献,这就将它置于一种奇怪的境地。Sun仍是惟一一家开放其操作系统和全部生产力套件源代码的公司。实际上,它开放了很多Java技术的源代码。因此,Sun在8月份举行的LinuxWorld上透露——也许有点勉强——除推出一个供开发人员跟踪其进展的社区网站外,它打算开放Java库和Java虚拟机。
从长期看,向开源发展的这股强大的力量能使Java受益吗?除了其缓慢的开发进展外,Java的一部分成功归功于Sun所起到的管家作用。通过开放Java源代码剥夺Sun的这一角色可能导致Java平台的大大加强,也可能最终伤害它。
Linux让设备受益
嵌入式系统开发商从开源操作系统中受益。
Linux的传统根据地在于服务器和工作站,而它正在这之外的非常小的设备上取得成功。对于嵌入式系统开发人员来说,Linux优于专有操作系统的优势除了低成本外,还在于其灵活性和开放性。
消费电子产品市场对新技术有着永不满足的需求,但是使用来自Microsoft和Symbian等公司的专有嵌入式平台的开发人员,必须受限于某一厂商提供的设备驱动程序和对最新硬件的支持。然而,他们的开源社区同行常常在技术刚一推出时就开始修补它们。他们开发的代码也许很糙,但开发过程很快,这反过来可以使他们更快地制造出原型产品,更早地上市以取得市场先机。
Linux还使开发复杂的嵌入式应用变得更容易。用于嵌入式设备的传统RTOS(实时操作系统)是在单处理器线程中运行单个任务的单用途平台。嵌入式Linux类似于它的重量级表兄,是设计用于运行多个应用的通用操作系统。这种通用性帮助开发人员满足客户日益复杂的基础需求。此外,没有复杂的专有许可条款为开发人员提供了定制各个层次应用的自由,他们可以选择他们需要的部件而忽视另一些。
厂商之间的竞争对于顾客肯定是件好事。在嵌入式Linux市场上,MontaVista和Wind River等顶级厂商不仅与专有操作系统厂商竞争,而且还相互竞争。此外,一些设备制造商还选择“单干”,独立于操作系统厂商生产自己风格的嵌入式 Linux。然而Linux是开源操作系统,每一种变种都成为由开发人员、客户和合作伙伴构成的大生态系统的一部分,都在为这个更大的整体做贡献。
这种“竞争式协作”仍给其他公司留出了利用额外的工具扩大Linux基础的空间。例如,Trolltech提供的Qtopia:一种迅速开发嵌入式Linux应用和用户界面的全面的环境。核心Qtopia技术可依据Gnu GPL(通用公共许可证)使用,从而为开发人员在Qtopia代码上带来了在Linux内核上所享受到的同样的可见性。同样,Nokia发布了自己的开源应用平台Maemo。该平台可以在Nokia 770 Internet Tablet等嵌入式设备上找到。
这些工具为开发人员带来了额外的优势:熟悉性。Qtopia是基于Trolltech历史悠久的桌面Linux系统Qt工具包的;Maemo 基于来自Gnome项目的类似技术。其结果不同于专有操作系统,应用开发人员可以利用自己已有的技能为嵌入式操作系统开发软件。
这些优势意味着阵营越来越庞大的Linux驱动的设备。从Sharp PDA到TiVo机顶盒,从Linksys无线路由器到Motorola手机,越来越多的公司将宝押在Linux上,把它作为在快速发展的、高度竞争的设备市场中取得成功的跳板。
开源社区推动脚本采用
现代脚本语言在开放上取得成功。
脚本语言,有时叫做“动态”语言,变得非常流行,其中一个原因是它们能让开发人员利用比较小的代码完成很多工作。这种“高相对价值”源于将更多的工作交给编译器和运行时间环境(如按变量值得到变量类型)去做的新方法——除了完成经常执行活动的特殊捷径外。
包括Perl、PHP和Python在内的脚本语言还有另一个共同点:它们几乎统统都是开源语言。在很多地方,开源与非开源之间的不同之处可能并不重要,但开源似乎在脚本语言中至关重要。奇怪的是,这点并不是由于开源在修补漏洞中的灵活性的原因,而是由于其创建社区的能力。
比较两种几乎同时问世的脚本语言Ruby和NetRexx的命运,是看到开源重要性的生动例子。NetRexx是由IBM设计、部分基于其成功的大型机脚本工具Rexx的。它以解释方式运行,也可以编译为Java字节代码。作为一种语言,NetRexx具有很高的生产力并易于学习掌握,提供大量的优雅的结构。由于它可编译为Java字节代码,从NetRexx中可以访问所有的Java库,此外,它享受着Java虚拟机的优秀性能。
另一方面,Ruby是纯解释语言,它没有虚拟机,因此运行速度慢。这种语言有它自己的优点,但主要优势来自采用部分起源于Perl缩略语法不直观的句法成分。NetRexx与Ruby还有另一个重要的共同之处:它们都是免费提供的。
那么,这两种语言中哪一个更成功呢?是快速、典雅的NetRexx,还是不直观、速度慢的Ruby呢?事实可能与你所料的正相反,今天的Ruby踌躇满志而NetRexx却濒临死亡。
关键原因在于Ruby是开源而NetRexx不是。结果是Ruby能够建立一个活跃的开发员社区——特别在它的诞生地日本,它已经流行了10 年。Ruby在David Heinemeier Hansson编写Web应用框架Ruby on Rails之前一直在积累发展动力。Rails是Ruby的杀手应用,它是设计典雅的典范,保证了Ruby发挥持久的作用。同时,尽管NetRexx有着巨大的价值,却蹒跚而行,无人理睬。如果IBM开放了NetRexx源代码,脚本技术今天可能是一番完全不同的景象。
仅凭开源本身肯定不能保证一种语言取得成功。实际上,现在有很多没有成功希望的开源语言。尽管开源并不是成功的充分条件,但却是必要条件。缺少它就是缺少Microsoft创建社区的资源。
“大开放”意味着更安全
专家们依靠得到源代码来减少威胁和防止漏洞利用。
几乎每一家安全专用设备厂商都有理由使用开源工具,而这与许可证没有什么关系。其中的绝大多数设备——从垃圾邮件与间谍件过滤器、网络扫描器到入侵检测与防御系统——不仅建立在像Linux或FreeBSD这样的开源平台上,而且还积极利用其他开源产品来完成任务。
在各种平台上,最流行的网络端口扫描器和操作系统特征识别应用是Nmap。作为开源工具的Nmap提供一种迅速、准确确定任何给定IP地址或子网上的开放端口的方法;它还可以通过分析IP包的构建方式确定设备所使用的操作系统。
另一个例子是开源安全漏洞扫描程序Nessus。Nessus可以利用Nmap扫描主机,但比Nmap走得更远:它尝试在目标系统上触发潜在的漏洞来验证系统的完整性。可供Nessus使用的插件数量达到了数千种,并且随着发现的漏洞而不断增加——这要再一次感谢开放源代码易于使用的事实。
广泛使用的IDS(入侵检测系统)Snort也很有名。它同Nessus一样作为商用软件包提供,但开源版仍很吃香。其他开源工具,如OpenSSH和OpenSSL,是应用在各个方面的行业标准,在几十种平台上被数千种不同产品所使用。
最后,还有操作系统层本身。虽然没有一种OS是真正安全的,但Windows平台上提供的安全工具由于基础操作系统详细记录的安全问题而令人怀疑。基于Linux、FreeBSD、NetBSD或OpenBSD的产品则具有更好的安全纪录(OpenBSD声称在8年多的时间里,在缺省安装环境中只发现了一个远程漏洞)。
对于缺少经验的人来说,开源的概念似乎与高度的安全性相悖。人们普遍的想法是公布源代码会让黑客和病毒编写者更加容易地利用代码中的漏洞。你只需看一看世界最坚定的专有软件厂商之一Microsoft,就会明白事实正好相反。
商业产品可能有一支十几人组成的QA(质量保证)团队,但大多数重要的开源项目——那些由社区支持的开源项目——实际上拥有由成千上万人组成的QA团队。其中的很多人对代码有着深入的了解,因为他们一直在为项目贡献代码。这只会使产品更加安全,因为补丁要经过比商业环境多得多的眼睛的审查,隐患迅速暴露。因此,很多安全专业人员认为开源代码比专有代码更安全,而这种印象最终将渗透到整个行业。
Snort入侵检测 协作开辟多媒体新边疆
无专利的音视频技术降低进入门槛,刺激创新。
人们很容易认为开源与多媒体是相互排斥的。对免费桌面Linux版本(如Ubuntu)的常见批评是它们缺少对播放多媒体的支持。但是,不要责怪这些版本的包装者们。经过很多年时间,多媒体周围包裹上了大量专利,这些专利覆盖播放和编码的各个方面,甚至MP3格式也受到与免费软件许可证要求相冲突的专利的限制。
但是,独立的开发人员并没有忽略多媒体,很多开源项目不仅设法绕过已有技术的限制,而且还改进它们。例如,Ogg Vorbis是一种开源“有损耗”音频压缩技术。同MP3一样,它不保留数据的每一比特,而是重现与原始信号听起来差不多的信号。不过,Vorbis利用高级心理声学模型,在同样的压缩水平上提供比MP3更好的音质。此外,它不存在专利限制,完全是免专利费的。
在视频方面,只要看看BBC Research赞助的Dirac项目就行了。虽然仍处于试验阶段,但Dirac采用子波压缩—— 一种理论上应当比当前方法提供更高质量视频的高级数字技术。BBC拥有Dirac代码的一些专利,但它向任何希望使用它们的人授予永久的免费许可。同样, On2 Technologies将永久的许可证授予其VP3压缩编解码器,这种编解码器已经成为另一个开源项目Theora的基础。
尽管开源多媒体技术开发进展迅速,但采用它们则是另一回事。Vorbis是一种具有超群性能的成熟的编解码器,但没有几家设备制造商支持它,尽管它不需要许可费。造成这一局面的问题是内容。硬件制造商将支持内容提供商提供的格式,而这越来越多地意味着支持DRM(数字版权管理)的格式。不幸的是,不管是Apple、Microsoft、Sony还是其他公司,专有DRM实际上使技术提供商成为整个多媒体栈的看门人。这也是开源能够解答的一个问题。
Sun赞助的Open Media Commons,是一次通过整个开源社区参与开发DRM技术的尝试。其核心是Sun想方设法确保不与任何已有DRM专利冲突的开源代码。人们希望一种完全开放的DRM方案将使顾客可以在来自不同厂商的大量互操作的软件和设备上,以认可的方式使用受DRM限制的内容。
所有这些项目的共同主题是合作与协作,这将加快数字音频和视频的采用速度,正如它推动技术向前发展那样。未来之路属于开源,专利限制和专有代码长期以来一直阻碍多媒体发展。
避开专有消息技术
开源电子邮件和协作服务器用灵活性满足未来的需要。
开源工具和电子邮件都有着悠久的历史。Exim、Postfix和Sendmail邮件服务器得到广泛的应用,更不用说从Mozilla Thunderbird到Pine的各种开源邮件客户程序了。但是,电子邮件并不是企业消息技术的最高目标。对于像群组日程安排、共享地址簿和IM集成等高级特性,企业客户通常有两种选择:IBM的Lotus Notes和Microsoft Exchange。这种情况已开始改变。尽管这两个企业消息技术巨头在可预见的未来可能仍占据统治地位,但众多的替代产品已经出现,尤其是针对中小企业的产品,其中很多都来自开源世界。
Open-Xchange也许是这类项目中最雄心勃勃的一个。它在开源软件包中重现传统群件服务器的功能。Open-Xchange集成多种开源工具,包括Apache Web服务器、Tomcat Java小服务程序引擎和PostgreSQL数据库等,通过一个基于Web的GUI提供全面的电子邮件、日程表和协作功能。商用添加件使Open-Xchange可以与Microsoft Outlook和Palm手持机互操作。
然而,其他开源消息服务器将互操作性又向前发展了一步。例如,Zimbra利用AJAX(异步java script和XML)技术将消息与外部数据源相集成。此外,Zimbra是从一开始就是作为一种由组件构成的互操作系统来设计的,其中的很多组件以Web服务示人。第三方开发商可以连接在这些组件的API上,直接访问Zimbra 日程表项、地址簿和电子邮件。
由于Zimbra是开源软件,因此开发商不必躲避专有陷阱。他们可以直插代码核心,直接集成自己的软件。开源消息系统也不强迫使用老通信接口。Open-Xchange和Zimbra利用包括WebDAV、LDAP、iCal和HTTP在内的开放标准套件,代替专有Microsoft Exchange协议。这种实现消息技术的开放方式意义重大。由于公司对作为基本业务工具的电子邮件的依赖程度非常高,因此至关重要的企业数据最终保存在电子邮件服务器上。当这些服务器基于专有软件时,公司在电子邮件的存储、恢复、搜索、归档、备份、集成和管理上受一家厂商的支配。基于开放协议和开放代码的消息系统能保证客户在需要时访问数据。此外,活跃的开发社区将日益使这些系统能够不仅在价格和可用性上,而且还在特性上,能与专有厂商竞争。
原文链接:http://www.enet.com.cn/article/2006/0918/A20060918199296.shtml