Tim O’Reilly 著
洪峰 译
不久前,我与几个朋友在一起聊天,他们都没有计算机,他们都在考虑买一台能使用Amazon.com来买图书和光盘的计算机。注意,他们心目中的这种计算机不使用什么“Internet”,也不使用什么“Web”,而是使用“Amazon.com”。
现在,“绝顶应用程序”(Killer application)的经典定义是:一种好得让人去购买计算机的软件。
饶有趣味的是,现在绝顶应用程序已经不再是桌面办公应用程序,甚至连back-office这样企业级软件系统也算不上。真正的绝顶应用程序是一种个人web站点。而且,一旦你将Web站点看作是应用程序的话,那么你就会马上意识到它们代表了一种全新的品种,你可以将它称之为一种“信息应用程序”’或者说是“讯件”(infoware)。
信息应用程序当然可以完成许多计算任务,但是这些计算任务却不能按照老的计算模式来处理。几年前,如果你想搜寻一个包含了一百万册图书的数据库,那么你应该去请求图书馆管理员来帮忙,因为只有图书馆管理员才知道那些晦涩的计算机搜索工具的语法和命令,如果你的运气不坏的话,可能会找到你想要的图书。如果你想买书,那么去一家书店好了,通常书店里陈设的图书数量和品种都不太多,所以你可选择的范围不大。而现在的情况却是:每天都有好几万名从来没有得到什么专业化训练的人都能在线地从含有几百万条记录的数据库中搜索并在线地购买图书。
这里的秘密在于,计算机的工作方式向前提高了一步,它开始向人与人之间的交流方式靠拢。基于Web的应用程序使用简单的英语来构造它们的界面——图文并茂,而且没有任何那些只有在学习编程时才能掌握的控制符号。
传统软件在一些软件中嵌入了少量的信息,而讯件则是在一些信息中嵌入了少量软件。在讯件产品中用户需要完成的“动作”往往相当简单:作出一个选择,买进或者卖出,输入少量数据,然后得到一个反馈的经过定制的结果。
这些动作经常伴随着一些脚本,这些脚本中附加了使用CGI(普通网关接口,Common Gateway Interface)界面规范的超文本链。CGI定义了一种方式,它可以使Web服务器调用任何外部程序并且返回那个外部程序的输出作为Web的页面。CGI程序可能是仅仅完成计算器功能的小型脚本,也可以是连接到完全成熟的高端的数据库服务器。但是即使在站点的后面有重型的软件引擎工作,用户界面本身也不含有传统的软件。用户界面中含有的是Web的页面(这些页面可以由作家或者编辑人员建立,或者由非程序设计人员创作)。
信息界面通常是动态的。例如,Amazon.com表达图书的界面就由销售排行榜来驱动的。而且每个小时都在更新。顾客可以在线地对图书增加书评,并且迅速地对图书打分,而这些来自用户的信息会迅速地增加起来,并为购买者提供很多关键性的决策信息的界面。对于一个设计用来帮助某人联机买卖股票的站点来说,它不仅仅要表达出股票的当前价格和更新价格,还应该提供相应的最新新闻报道、场内交易的信息、分析家的建议、甚至为用户们开设讨论小组。这样一来,信息界面一般就混合地含有丰富的手工创作的文档资料、由程序生成的数据、连接到专用的应用程序服务器(例如邮件服务器、聊天服务器或者会议服务器)的链接。
与在原来纯粹的软件界面上处理任务相比,信息界面没有那么高的效率,但是它对于处理你很少遇到的任务或者每一次都不相同的任务则比原布的软件界面好得多。特别是,当你面对大量的信息而且要根据它们作出你的选择时,它们向你提供了非常好的界面。当你在Amazon.com上购买图书或者光盘时,或者在E*Trade上购买股票时,真正的需要你去做的行为只是整个交易过程中微不足道的一部分。界面上所提供的帮你决策的信息构成了与你交互的应用程序的实质。
1994年时,Microsoft公司得到了Web的思维观念,而从此以后,对我来说,Web改革整个计算模式变得更加清楚了,当时我与Microsoft公司的副总裁Craig Mundie都参加了出NTT公司在日本举办的一次活动,我和Mundie通过卫星同时出现在讲台上。Mundie演示的是Microsoft公司准备为“Tiger”服务器提供的界面,这种型号的服务器用来支持视频点播服务。它的界面模仿Windows,上面含有分级的菜单,可以响应某种虚拟的远程频道控制器。
非常明显,对于我们这些整天与Web打交道的人来说,Web可以为视频点播服务提供一个正确的界面,将来的视频点播服务如果能普及。走入大众的日常工作的话,那么它的用户界面应该是类似Web的信息界面。严格地讲,即使在当时,Microsoft公司已经具备了完美的视频点播所需要的界面:它有自己的基于CD-ROM的电影百科全书,即Cinemania。一般来说,你需要按照主题搜索电影名称、阅读一些评陀、观看一些电影片头、然后在完成家务活后,点击超文本链接播放电影,但是究竟怎样才能更好地选择要观看的电影呢?在上面所有的过程中,Cinemania几乎可以完成了所有所需要的步骤,只缺最后一步,也就是说它只有用一个超文本链接的产品与网络服务器相连时,它的真正威力才能表现出来。所以一夜之间,信息变得不再是最终出现的东西本身,而是变成了一种界面允许用户以一种远比传统软件应用程序复杂得多的方式控制应用程序空间。(Amazon.com很清楚这一点:他们购买了Internet Movie Database,它集中了用户评论和关于电影的其他信息,Amazon.com会把它们放到极高的位置上,不仅仅在线式地销售录像带,而且将它作为将来视频点播服务的网关。)
信息界面对于决策支持应用程序是极其适合的,同时对于处理一次性的任务也很完美。从某种意义上讲,软件或者软件包安装过程中使用的“精灵”(Wizards)也是这种趋势上的一个例子。
还有一些信息应用程序使用更简单的、更像软件的界面作为用户界面,但是提供了动态的信息输出。我喜欢的一个例子是几年前被认为是不可思议的东西:获得地图和方向。像maps.yahoo.com这样的地图站点可以让你输入两个地址,一个是出发地址,另一个是到达地址,然后你将得到一张地图,上面标明了你可以怎样从起点出发,经过一些路线到达终点的方向。
现在的问题是,这一切与开源软件有什么关系?
有一个显而易见的答案:使Web成为可能的大多数技术都是“开源”的(Open Source)。
Internet本身的大量特征,例如TCP/IP网络协议和其他基础性的网络要素,如域名系统(DNS)是通过开源过程开发的。无人会反对说,运行DNS而且公开了源代码的BIND(Berkeley Internet Name Daemon)程序——就是最关键的Internet应用程序之一。即使大多数浏览Web的任务是靠专有软件(例如Netscape的Navigator和Microsoft的Internet Explorer)来完成的,但是这两者都是以Tim Berners-Lee最初的开源Web实现版本和开放的协议规范为基础衍生出来的。根据Netcraft的web服务器自动调查的结果(http://www.netcraft.eo.uk/survey),世界上可以见到的Web站点中50%以上采用了开源的Apache Web服务器。基于Web的动态页面大多数都是靠开源的脚本语言,例如Perl、Python和Tel来生成的。
但是这些显而易见的答案还只是所有故事的一部分。首先需要弄明白的是,为什么Web是今天这个样子?而为什么专有软件不是将来网络化的信息应用程序的基础呢?
实际上,Microsoft公司比其他人更早地认识到在线多媒体的威力。1994年,当Web技术开始起飞时,Microsoft公司的CD-ROM产品,例如联机版本的百科全书Encarta,联机版本的电影参考书Cinemania等、在利用多种媒体方式提供在线超文本链接的文档方面要领先于Web。Microsoft公司甚至意识到通过联机网络提供信息资源是非常重要的。
Microsoft公司的Microsoft Network版本只有一个问题:入门的门槛太高。他们指望出版商使用具有专用版权的Microsoft产品,使用时要征得Microsoft公司的许可,并且在消费时还要付钱给Microsoft公司。相比之下,人人皆可以开发一个Web站点。你需要的软件是免费的。创建文档资料和动态内容的技术规范是简单的、开放的,而且清楚地写在文档中。
也许更加重要的是,技术和Internet伦理两者都使得从其他人的站点拷贝特性变得合理合法。用来在Web站点上完成各种特性的HTML(超文本标记语言)页面可以很容易地储存下来加以模仿。即使是用来创建动态页面内容的CGI脚本也可以拷贝。虽然传统的计算机语言,例如C运行得更快,但是Perl成了编写CGI的主流语言,因为它的可读性更好。当然Perl功能强大,拿它去编写大多数应用程序绰绰有余,不过即使是业余程序员也可以利用Perl语言编写完成某些特定任务的小型脚本。甚至更加重要的是,因为Perl不是编译型的语言,所以用在Web页面上的脚本可以由用户拿来浏览、拷贝和修改。除此之外,程序员们已经创造了大量的Perl脚本的档案,而且这些档案可以在Web开发人员之间自由地共享。由HTML+CGI+Perl组合建立起来的网站可以很容品地被其他人复制,这意味着,历史上第一次出现了可以由非程序员创造出功能强大的应用程序。
认识到这一点之后,如果我再指出软件工业界的一个事实,那就很有意思:第一次试图改进Web界而得到动态内容的技术,例如像浏览器端的Java小应用程序和Microsoft公司的ActiveX控件等,都没有成功,因为这些技术都是针对专业程序员开发的。由业余人员拷贝拿去建立Web并不容易。这些技术的开发商们是以软件的观点来看待Web的,他们没有理解Web不仅仅改变了创建应用程序本身所需要的东西,而且改变了创建人员所需要的工具。
工业分析家们这些年来一在预言Perl和CGI的市场将被更新的软件技术所侵蚀,但是即使今天,当主要的大型Web站点雇佣了大量职业化的程序员,并且采用了更新的技术(例如Microsoft公司的动态服务器页面ASP和Sun公司的Java servlet)在多项性能上超过了CGI时,Perl的流行程度却在继续不断上升。Perl和其他开源的脚本语言,例如Python和Tel,继续在大大小小的站点上发挥中心作用,原因何在?因为讯件应用程序从根本上是与软件应用程序不同的,而且需要不同的工具。
如果让我们看一眼像Yahoo!这样的大型Web站点,那么就会发现幕后的事实是,由管理员和程序员组成的军团在不断地重构产品,动态的内容不仅仅是自动地生成,而且还经常被手工剪裁,而且在绝大部分场合下,他们使用了一大把的快速而且邋遢的脚本工具。
Jeffrey Friedl是Mastering Regular Expression一书(O'Reilly公司出版)的作者,而且是Yahoo!公司的专职的Perl程序员,他说:“我们在Yahoo!不创建内容,我们有成千上万的信息源,但是这些信息源提供信息的格式却各不相同。我们需要对这些信息量巨大的反馈资源进行处理,清理出所需要的信息,并且找出应该把它们存放在Yahoo!的什么地方。”例如,为了将适当的新闻故事链接到quotes.yahoo.com的页面记号下,Friedl常要编写一个“名称辨别”的程序,用来搜索一万五千多家公司的名称。他运用了Perl的自由格式文本分析能力加上其强大的正则表达式处理能力出色地完成了这一任务。
在系统管理等用于保持站点内容新鲜和更新等基础性工作方面,Perl也是一个起中心作用的元件。数量巨大的Perl脚本正在不断地爬上了Yahoo!服务器和它们到外部站点的链接上。并且一旦一条URL不能返回所期望的结果时就通知工作人员。这些履带中最有名的称为“the Grim Reaper”。如果一条自动链接到URL连接多次不成功,而且连接次数超过了规定的次数,那么那一页面将从Yahoo!的目录中删除掉。
Amazon.com也是Perl的重量级用户。Amazon.com的创作环境展示了将Perl将毫不相干的工具联成一体的威力,可以说,Perl是一种极好的“胶水语言”。用户可以利用一张表格创作一个新的文档,而这份表格调用一个Perl程序,可以生成一种“夹生”的SGML文档,然后(根据用户的选择)利用Microaoft公司的Word,或者GNU Emacs显示出来,还可以集成CVS(Concurrent Versioning System)和Amazon.com自己开发的SGML工具。Amazon.com的SGML类用来生成Web页面的不同部分——例如,从同一个来源的基础上生成含有或者不含有图形的HTML。基于Perl的解析器将SGML赋形(render)进入HTML中,供作者提出修改之前批准。
Perl一直被称为“Internet的管道布带”(the duct tape of the Internet),与管道布带一样,它以一切始料未及的方式被使用着。像放映一场电影时,屏幕需要被管道布带悬挂起来,以便电影投影到屏幕上一样,Web站点的页面经常在一天之中被放上去或者被取下来,所以需要轻量级的工具,快速而且高效率的解决方案。
Microsoft没能利用ActiveX将讯件倒回到软件的失败,从根本上体现出了计算机工业的改朝换代。随着一个特定市场环节的成熟,现存的公司在原来的东西仍旧存在时,他们而临着广阔的兴趣和兴奋点。这使他们很难从所有的东西中看清真正的新事物,这容许——而且几乎需要——新的角色出现(用Philippe Kahn的话说是“the barbarians”),来创造这一新的市场。
Microsoft公司对计算机工业的影响,上升并且超过了IBM清楚地说明了上一次这一规律是如何起作用的。IBM将市场拱手让给了Microsoft是因为IBM根本没有看到这一次改朝换代的动力不仅仅是从玻璃房到桌面,而且是专有物到硬件,和从硬件到软件。
同样的道理。无论Microsoft公司试图进入各种不同类型的生意,它至今还是没有意识到——或者它如果意识到的话,就不是Microsoft了——Microsoft公司所知道的软件,已经不再是计算机工业界创新价值的中心驱动者了。
在IBM主宰市场的年代,硬件是国王,进入计算机工业的门槛是相当高的。大多数软件是由计算机硬件商开发的,或者是由他们所牢牢控制着的软件公司所开发的。
PC作为一种商品的平台出现后(同时它也是像Unix这样的开放系统的开发平台),游戏规则从根本上发生了变化。突然间,门槛变低了,所以冒出了像Lotus的Mitch Kapor和Microsoft的BillGates这样的人物。
如果你愿意重温Web往日的故事的话,你可以看到相似的模式。Microsoft在桌面软件市场上的垄断地位使得软件市场的门槛相当高,而且是惩罚性地高。而且,软件应用程序变得越来越复杂,Microsoft为它的竞争者在不断地抬高着门槛的高度。实际上,某个程序员不可能单枪匹马地在汽车修理房里(或者楼顶屋里)干出什么具有影响力的东西来了。
这也许是开源软件最重要的一点:它降低了进入软件市场的门槛和障碍。你可以免费地尝试新的产品——甚至,你还可以按照你自己的要求构建你自己的软件版本,同样也是免费的。大量独立的人员可以阅读程序的源代码,如果有人不喜欢某项特性,他们可以对原来的程序增加或者减少内容,或者重新构造。如果他们把他们的成果反馈给社团,那么软件可以迅速地被广泛采用。
还有,因为开发人员(至少是在刚开始时)并不试图与市场上的公司竞争,而是集中精力专注于解决真正的问题,因此他们可以在一个相对来说很宽松的环境下进行实验。正如人们经常所说的那样,开源软件“让你搔你自己的痒”。因为有了分布式的开放模式,随着用户增加新的特性,开源软件可以按照它们被设计的方式发展起来。
实际上,市场上的进化力量比起自然界“有意”不受市场障碍和捆绑销售的困扰进化将产生不仅仪只一个赢家,而且是百花齐放的一个局面。
我们可以再一次看看Perl,它的成功就可以为我们提供很多启迪。
Larry Wall发明Perl的初衷是自动地处理一些他所面临的重复性系统管理任务。当他向网络发布了软件之后,他发现Perl语言可以应用于许多其他的领域,随着语言的成熟,应用的方向经常是始料未及的。
Perl经常被描述成为一种“厨房sink语言”,因为它的特性似乎对于更“正交的”(orthogonal)的计算机语言的设计人员来说很混乱。但是混沌可以经常显示出丰富多彩的结构。混沌还可能是复杂的模式天生所需要的。人类的语言是极其复杂的,因为它们是现实世界的模型。正像Larry在这本文集的文章中所说的那样,“英语之所以有用,就是因为它是一个大杂烩,由于它兼容并蓄,它可以很好地反映到问题空间上去。而问题空间也是一个大杂烩......类似地,Perl也被设计成为一个大杂烩(虽然是以最漂亮的可能的方式设计的)。”
开源开发模式对于组织开发人员一起工作,来开发关键的特性是难以想象地高效率。新的软件开发的循环周期非常短,因为有用户需求,但是没有市场环境中产生的歪曲或者从上至下的采购决定。从下至上的软件开发模式对于解决从下至上的问题是很理想的。
像杨致远和David Filo这样的企业家正好使用了位于Web心脏的开源软件,以及它的更简单的开发模式。因Yahoo!成为世界上最大的而且是最成功的Web站点并不是一件偶然的事情,它是用大量自由的开源软件构建成功的:FreeBSD操作系统、Apache和Perl。
正像上一轮革新那样,计算机工业的下一个阶段实际上就是前一个阶段的commoditization。正像具有领导地位的Linux发行公司Red Hat公司的Bob Young所说的,他的目标不是要篡夺Microsoft公司在操作系统金字塔顶点的宝座,而是要缩小操作系统市场的含金量。
关键是开源软件不需要在它自己的游戏中与Microsoft竞争。取而代之的是它改变了游戏的本质。
可以肯定,在浩瀚的资本市场中,像Amazon.com和Yahoo!这样的信息应用提供商与Microsoft相比还是小巫见大巫。但是事实是无可辩驳的。人机交互的前沿领域、以前没有被计算机化的任务实现的机会,是在讯件中,而不是在软件中。
随后新的“绝顶应用程序”的出砚,软件的角色将上升成为讯件的启动者。在提供Web服务器、数据库后端产品和应用程序服务器方面存在着巨大的商业机会,网络编程语言例如Java,只要这些产品使自己能符合新的模式,而不是取代模式,就会有巨大的应用领域。注意,在从以硬件为中心向以软件为中心的计算机工业转变中,硬件行业并没有消失。IBM仍然是一个生意兴隆的公司(虽然它的大多数竞争者的经营规模已经缩小,或者已经翻船)。但是其他一些新出现的硬件公司都已经适应了新的规则:Dell、Compaq,特别是Intel。
Intel意识到,他们真正的机会不是赢得计算机系统之战的胜利,而是变成一个为交战各方提供武器的军火商。
对于开源软件真正的挑战不是它是否会取代Microsoft在桌面上取得的主导地位,而是在于它是否能够创造一个商业模式,这种商业模式将成为下一步计算机应用程序的“Intel Inside”。
不然的话,开源软件的先锋们将只能站在一旁耸耸肩膀而已,就像当年Digital Research在PC操作系统生意中被那个真正精确地知道当前机会在哪里的人一脚踢开。
但即使出现那种情况,开源软件已经创造了一大批精英分子。就像早期的微电脑先锋(在硬件和软件两方面)为今天的计算机工业开创了局面一样,开源软件正在为目前刚刚拉开序幕的戏剧开创新局面,而且将在今后的五到十年内导致计算机工业的面貌发生急剧的变化。
作者简介
Tim O’Reilly
Tim O’Reilly是O’Reilly & Associate公司的创始人和CEO,同时也是一个出版商,其出版的书被认为是在开源技术,诸如Perl、Linux、Apache和Internet架构方面的权威之作。Tim主持召开了第一届的“Open Source Summit”会议,该会议将所有主要的开源软件组织的领导人请到了一起,通过文章、演讲和会议,他积极地推动了开源运动。同时Tim也是Internet协会的一个托管人。
评论