acm-header
登录

ACM通信

观点

历史反思:软件的未来会是开源的吗?


问号插图

插图:西莉亚·约翰逊

如果要预测当今软件的未来,开放源码软件(OSS)很可能会在大多数预测中占据显著位置。事实上,开源的狂热者可能期望看到开源软件无处不在,“创新网络”比比皆是,微软一败涂地,Linux出现在每个桌面。就我个人而言,我不敢打赌。

历史学家对预测未来持谨慎态度,这是有充分理由的。他们知道,当技术专家凝视水晶球时,他们通常推断得很好,但却无法发现那些可以改变一项技术的不连续点。这本书就是未来学的一个尝试软件的未来,出版于1995年。一个这本书收录了该领域主要专家的著述。他们正确地推断,个人电脑将变得更强大、数量更多、无处不在,软件将激增,以填补应用程序的真空。这在某种程度上是正确的,但他们对新的软件开发方法和技术的集体看法却偏离了目标。一位贡献者预测,普通用户的可视化编程将预示着“软件贵族的没落”。另一个预言软件工厂将走向成熟,我们的“工艺工业”将转变为“福特式的大规模生产”。另一位贡献者希望看到自然语言接口的惊人进步。任何贡献者都没有预见到,甚至没有提及开源软件和开发技术的影响。就在他们做出预测的时候,Linux就在他们的鼻子底下,但他们却看不见它。

开源软件的想法可以追溯到计算的初期,当时大型计算机在20世纪50年代初建立起来。在当时以及之后的许多年里,IBM和其他计算机制造商将他们的软件免费提供,软件在很大程度上被视为一种使他们的硬件更畅销的营销举措。软件以源代码和目标代码两种形式提供,因为有些人发现源代码很有用,没有理由不让他们使用。当制造商的规定不足时,合作用户组,如IBM的SHARE,协调程序的编写和免费分发。当涉及到应用程序时,计算机用户自己编写或雇佣“软件承包商”,如计算机科学公司或电子数据系统公司,为他们编写软件。

1964年,随着IBM系统/360计算机的推出,软件界发生了彻底的转变。360第一次创造了一个标准的计算机平台,它极大地扩大了计算机群体,特别是在中型企业中。大多数新的电脑拥有者没有资源雇用程序员或购买软件承包商的服务。因此,第一批软件产品公司填补了应用领域的真空。这些公司为特定的行业(如保险或建筑行业)编写程序,或为通用的、跨行业的功能(如工资或库存控制)编写程序。单个软件产品的销售相当有限:如果一个产品有100个左右的客户,它就被认为是相当成功的。软件产品价格很高,通常在5万美元以上。这不仅是因为销量低,还因为软件编写是非常资本密集型的。经营软件业务的唯一方法是雇佣一个程序员团队和一台大型计算机,并让他们工作。每年至少要花费100万美元(以今天的货币计算,接近1000万美元)。

最初的软件产品通常以源代码和目标代码的形式提供。这是必要的,因为定制软件是一种鲜为人知的技术,大多数用户通过修改源代码和重新编译来配置他们的应用软件。软件产品公司自然会担心公开源代码,因为如果源代码落入竞争对手手中,他们就可以很容易地生产出与之竞争的产品。在一个有点令人不安的妥协中,付费客户收到了源代码的副本,但受许可条款的约束,有一个商业保密条款要求他们不能将源代码或文档透露给第三方。

20世纪70年代末,个人电脑的出现催生了一个新的软件产业,改写了软件制造和销售的规则。计算机能力的成本直线下降,计算机数量猛增,软件公司的数量呈指数级增长。然而,尽管软件制作的硬件成本壁垒已经降低,但代码开发仍然需要一个有纪律的环境,由在办公时间在同一物理位置工作的拿薪水的程序员组成。尽管计算机网络在20世纪80年代就已经存在了,但它们既缓慢又不切实际,软件开发仍然是一种同步、同步、协同的活动。PC软件产品相对便宜(通常低于500美元),但这只是因为与大型机软件相比,其销量较高。软件编写仍然是一项昂贵的、高度资本化的活动。

在新的PC环境下,有成千上万的软件公司和数百万的用户,软件公司向用户提供他们的源代码不再可行,否则他们的产品将被迅速复制。微软、Lotus和WordPerfect等公司已经在软件开发上投入了数亿美元;公开他们的软件无异于把祖传的珠宝拱手相让。当然,软件有一些通过版权法的法律保护,但这并不能保护数据结构和算法,这些数据结构和算法会因访问源代码而暴露出来。到20世纪80年代中期,源代码公开几乎在1983年完全停止,IBM是在所谓的OCO(仅限目标代码)政策中停止公开源代码的最后几家大公司之一。竞争对手和用户都反对OCO政策,但IBM非常坚决,所做的不比业界其他公司多或少。到20世纪80年代中期,商业保密在软件产品行业已经很流行。

20世纪90年代早期互联网的崛起开始了软件开发的另一场彻底变革。廉价的网络访问消除了受薪程序员在专用设施中一起工作的限制。现在程序员可以通过互联网进行软件开发合作,无论他们是拿薪水的人员还是志愿者,无论他们是训练有素的计算机专业人员还是有才华的业余爱好者。这就是今天开源社区的诞生。Linux是社区的定义产品,开源原则也负责互联网基础设施的很大一部分。除了支持新的开源开发方案之外,互联网还消除了软件分发的障碍。现有的软件产品行业使用零售渠道,只能销售有限范围的产品,或者使用(昂贵的)销售队伍,而开源产品可以从互联网上免费下载。开源程序很快出现在许多已建立的软件类别中。


开源软件的想法可以追溯到计算机诞生之初,那时大型计算机刚刚建立。


在20世纪90年代中期对开源的最初狂热中,似乎未来的软件将是“免费”的:对消费者免费,并且有免费的源代码。然而,十年过去了,事情变得很清楚,事情没有那么简单。从根本上说,开源是一种新的开发方法。传统上,代码开发占软件产品成本的10% - 15%。其余的成本用于营销、包装和售后支持(例如,电话帮助热线)等活动。对用户来说,软件也只是TCO(总拥有成本)的一小部分,TCO包括计算机和基础设施成本以及技术支持。今天,有许多公司提供开源产品,他们的成本结构与传统软件公司相比并没有太大的不同。他们将收入的10% - 15%用于代码开发,其余用于市场营销和售后支持等活动。由于采用开源开发方法,他们的产品很可能比他们的专有产品更好、更便宜,但对大多数用户来说,他们的总信息处理成本并没有显著改变。

因此,如果一个人试图窥探当今软件的未来,他或她会预测什么?这样的预测有两个方面:第一,可预测的外推;第二,可能发生的不可知的范式转变。可以预见的是,我们可以预期开源范式会越来越强大,并越来越多地被传统软件行业所采用,并且在行业的两个方面将会有一些融合。但在未来的10年或15年里,肯定会出现意料之外的技术间断,堪比上世纪60年代IBM System/360的推出、70年代末个人电脑的推出以及90年代的开源运动。


最初的软件产品通常以源代码和目标代码的形式提供。


历史告诉我们,当今最受欢迎的软件开发方法总是在当代的技术和经济限制条件下,特别是计算机所有权、编程人员和数据通信的成本,似乎是最有效的。下一个范式转变很可能是目前被大肆宣传的SaaS(软件即服务)软件在互联网上作为服务交付,而不是作为安装在本地计算机上的产品。SaaS似乎提供了一种技术前景,私有软件和开源软件都可以蓬勃发展。但至少有同样可能的是,一些其他的技术发展可能已经在这里,并等待着创造一个软件的未来,这是目前无法想象的。这就是历史学家不愿意预测软件未来的根本原因。

回到顶部

作者

马丁Campbell-Kelly(M.Campbell-Kelly@warwick.ac.uk)是华威大学计算机科学系教授,专攻计算机史。

回到顶部

脚注

a.李伯特,d。软件的未来。麻省理工学院出版社,剑桥,麻州,1995年。

DOI: http://doi.acm.org/10.1145/1400181.1400189


©2008 acm 0001-0782/08/1000 $5.00

允许为个人或课堂使用本作品的全部或部分制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。

数字图书馆是由计算机协会出版的。版权所有©2008 ACM, Inc.


登录为完全访问
»忘记密码? »创建ACM Web帐号
文章内容:
Baidu
map