更新时间:2024-09-21 12:09
该书分析了开放源代码现象不断发展的经济基础。给出了九种开放源代码开发的可发展模型,其中两种是不盈利的,七种是盈利的。发展了一种定性的理论,说明什么时候封闭代码在经济上是合理的。考察了当市场上发明的几种新颖的开放源代码开发的盈利方法学最后做出了结论,试着对将来做了一些预测。
我们可以预料到在未来,随着自由软件所带来的强大竞争力,某个软件的最终命运将不是走向灭亡就是成为开放构件系统的一部分。虽然这对于那些打算永远从封闭软件中赚取利润的软件企业来说的确是个坏消息,但是软件产业作为一个整体仍然是一种产业,那时新的高层应用软件将不断开放,私有化的智力资源垄断某个软件将只有一个有限的生命周期,最终将纷纷转化为自由软件。
《魔法大锅炉》(The Magic Cauldron)一文是国际自由软件知名人士Eric Raymond在1999年夏天发表的一篇重要著作。xiaobo曾经把Richard Stallman比喻为自由软件王国的教皇、Linus则为掌管大权的国王、而Raymond则被比喻为一个兢兢业业的宰相。这个比喻很有意思,也挺形象。Eric Raymond总是在努力的推动着自由软件的发展,他的文章如:《黑客文化简史》《如何成为一名黑客》《大教堂和市集》《开拓智域》等总是具有震撼的力量,所以当iasc第一次向我介绍了这篇新作时,我就感觉到应该把这篇文章翻译成中文,以让更多的国内计算机爱好者来领略其中的力量。在我粗览了全文后,翻译的决心更大了,但是面对内容如此丰富、内涵如此深邃、引用非常广泛的巨著,我又有些畏缩了。幸而得到了iasc, merlin等朋友的热情鼓励与合作,同时又先后获得了wclee, liyuhang, sto, ly_hust, kiwi, lilly, wl_wan等网友的支持与帮助,才得以让这篇中文译稿面市,欣慰的同时也对上面所有参加翻译的朋友表示最诚挚的谢意。
本文分析了开放源代码现象不断发展的经济基础。首先推翻了一些流行的关于程序开发资金和软件价格结构的神话。给出了一个关于开放源代码协作稳定性的搏弈论分析。给出了九种开放源代码开发的可发展模型,其中两种是不盈利的,七种是盈利的。接着发展了一种定性的理论,说明什么时候封闭代码在经济上是合理的。然后考察了当前市场上发明的几种新颖的开放源代码开发的盈利方法学,包括赞助系统和任务市场的引入。最后做出了结论,试着对将来做了一些预测。
Eric Raymond (1999年六月)
[AKA]rover HansB iasc等翻译
目录
==========================
1.近乎魔法
2.超越高手的天赋
3.制造业的错觉
5.驳斥公用悲剧说
6.封闭源码的原因
7.使用价值集资模型
7.1 Apache案例:成本分担
7.2 Cisco案例:风险分散
8.为何销售价值存在问题
9.间接的销售价值模型
9.1 失败的领导者/市场定位者
9.2 糖霜策略
9.3 奉送食谱,开办饭店
9.4 衍生物
9.5 现在收费,未来免费
9.6 软件免费,卖标准
9.7 软件免费,卖内容
10.何时开放,何时封闭
10.1 靠什么盈利?
10.2 他们如何互相作用?
10.3 Doom:一个学习的案例
10.4 知道何时该放手
11.开放原代码的商业运作
12.成功的复制
13.开放研发和二次开发
14.由此及彼
15.结论:自由软件变革之后
16.参考文献和致谢
17.附录:为何封闭驱动程序损失卖主金钱
18.本文档修订记录
在威尔士的神话中,Ceridwen女神有一口巨大的锅,当女神念动只有她自己知道的咒语时,那口锅就变出奇妙的食物。在现代科学中,Buckminster Fuller 提出了一种“短暂化”的概念,认为在早期的物理资源投资越来越多的被信息内容所代替的情况下,技术会变得越来越有效和廉价。Arthur C. Clarke指出“任何足够高级的技术都与魔法别无二致”,从而把二者联系起来。对很多人来说,开放源代码社区的成功看来就象难以置信的魔法。高质量的软件变得免费,在充满竞争而且资源稀缺的现实世界,这似乎不能继续下去,但是它进行的还不错。要点在哪?Ceridwen的大锅只是一个小诡计吗?如果不是,在这种情况下,“短暂化”是怎么工作的——女神究竟念动了什么咒语?
开放源代码文化的经验肯定使许多学习过软件开发的人们感到困惑。“大教 堂和市集”一文描述了分散协作软件开发是怎样有效的推翻了Brooks的定律,产生了使一个独立的工程具有空前可靠性和质量的开发方式。“开拓智域”一文揭示了市集模式开发风格中的社会动力学,这应该用人类学家所谓的“赠与文化”的术语而不是常规的交换经济术语来理解,在这种文化中,成员在做出贡献大小方面竞争。本文中我们将开始推翻一些流行的关于软件生产经济学的神话;然后对“大教堂和市集”和“开拓智域”两篇文章进行经济学、搏弈论和商业模型领域的分析,发展一种新的概念工具,来理解开放源代码开发者的赠与文化在交换经济里也可以继续下去的理由。
因此,我们现在将(从整个资源匮乏经济学领域)思考维持开放源码开发的协作和交换模式。在分析的过程中,通过深入剖析和列举实例,我们同时也就回答了那个非常实际的问题:“我如何通过开放源码来赚钱?”。不过,这个问题是根据与软件开发本质相悖的普遍软件开发经济模型而提出的,首先我们需要展示一下隐藏在这个问题之后的许多思维误区。
(在展开分析之前还有最后一个需要说明的是:本文中对开放源码开发模式的讨论和提倡,不能被理解为对封闭源码模式的彻底否定,也没有反对现有的软件知识产权
我们需要注意的是计算机程序和其他类型的工具和资本货物一样,都有两种经济价值:使用价值和销售价值.
程序的使用价值就是它作为工具的经济价值;销售价值是它作为作为商品的价值.(用经济学的专业说法,销售价值是产品最终价值,使用价值是产品中间价值)
1.大多数开发者的劳动由销售价值的收入来支付
2.软件的销售价值与开发成本(例如,功能复制所需的资源花费)和使用价值成一定比例.
换句话说,人们有很强的思维惯性去假定软件具有标准工业品的特性。但是这两个假设都错了。
首先,编写用于出售的代码只是编程行业的冰山一角.在微机世界前期,大家普遍认为世界上90%的代码在银行和保险公司内部编写.这虽然已经不再是事实--现在其他行业也越来越加大了软件开发的力度,金融行业所占的比例从而下降--但是短期内我们仍将会看到大约95%的代码是公司内部编写.
这些代码包括大多数为中等或大规模公司所定制的MIS,金融和数据库软件.包括象设备驱动这样的专业技术代码(几乎没有人靠卖设备驱动赚钱,这一点我们将会在后面讨论);包括日益增长的数控机器的各种嵌入式代码--从机械工具和喷气客机、汽车、微波炉甚至烤面包炉.
大多数这种内部代码与其环境集成在一起,复制和再利用十分困难(不论环境是商业办公室的程序套件还是联合收割机的加油系统)。因而一旦环境变化,需要做许多工作使软件与之同步.
我强烈的希望读者试试浏览本地报纸的招聘信息,看看编程.数据处理,和包含软件开发工作的软件工程项目等等.将这些工作按照其目的是使用还是销售进行分类,你将深受启发.
(当我在技术讨论会上演讲时,我经常由讨论两个问题开始:听众为写软件付多少钱,和有多少薪水是依赖于软件的销售价值的.第一个问题应者甚众,而第二个问题则寥寥无几,大而且量的听众对这个问题十分诧异)
其次,经过对实际客户行为的调查,软件销售价值与其开发和升级成本相关的理论很容易被推翻.开发和升级成本相关的商品(对打折之前来说)占很大比例--食品,汽车,机械工具,甚至有许多无形的产品--例如,音乐、地图或数据库资料的复制权.这产品在生产者倒闭后仍然能保持甚至增加其销售价值.
与上述形成鲜明对比的是.当一个软件产品生产者歇业时(或者如果产品开发被终止),几乎没有客户愿意为其花钱,而不管它理论上的使用价值或同样功能产品的开发费用有多高.(要检验这个说法,去你附近的软件商店打折柜台看看吧:-)
在生产者失败时,零售商的行为很有启示.他们知道一些生产者不知道的东东.他们深知:客户愿意花费的价格在很大程度上由卖主未来可以提供的服务决定.(这里的'服务'被广义的理解为完善,升级和后续产品).
换句话说,软件主要是一个稳定的服务性行业,认为它是制造性行业是没有理由的错觉.
另外,检查一下我们为什么会有这些惯性思维也很有益处.它们也许来自于软件生产者大力宣传的销售类产品,这些是的软件业一小部分,也是宣传的唯一的一部分,大多数明显和重头的广告宣传的产品是昙花一现的短期产品,就像游戏,他们几乎不需要提供后续服务(合同规定的除外)
另外,值得注意的是,制造业错觉所倡导的价格体系事实上会越过保持开发预算不崩溃的底线.既然(像一般认为地)超过典型软件产品周期花费的75%在维护,调试和扩展上,那么通常的那种只采用高额售价,极低相关服务费用的定价策略,只会导致各方面都差的服务.
用户的损失在于,即使软件是服务性行业,工厂模式促使生产者减低服务质量.如果生产者靠出卖比特挣钱,大量的努力是制造比特并将它们推销出门;帮助服务部分,因为不是利润的中心,将会成为只付出的一点点努力和资源,为了避免激怒用户所设的垃圾站.
另一方面是大多数生产者使用这种工厂模式会导致长远的失败. 为满足无限的售后服务和技术支持需要的固定价格产品提供资金,只有在那些膨胀足够迅速的市场里 --其过去的销售和未来的收入能够满足支持和生存周期的花费--才能存活.一旦市场成熟和销量下降,维持生计,大多数生产者除了消减单独产品的开支之外没有别的选择.
不管是直接(废止产品)还是间接(支持很差),都会把客户推给竞争对手(因为这些行为损害了依附于服务产品的期望值).短期来看,可以通过将修订过bug的版本发布为新产品避免这个陷阱.而长远来看,避免陷阱的唯一可能是对行业进行有效的市场垄断.最终,只有唯一的幸存.
事实上,我们一再的看到这种缺乏支持的模式害死一些市场环境中很强大的竞争者,(这种模式对那些那些经历过计算机发展史幸存下来的人尤其深刻,包括个人操作系统,字处理,通用财务程序或商业软件).这种不正确的动机来自于工厂模式导致的赢家通吃的态势,而且最后即使你是赢家的客户也会遭殃.
其实你只要考虑一下诸如藏宝图,瑞士银行的账号口令,或计算机服务的确认口令,等等信息的价值,就很容易看破这个神话.即使这些确认信息可以不用任何花费的复制,但是被其确认的对象无法复制.也就是说,非零的边缘成本由被那些确认信息继承下来.
提到这个神话的主要目的是声明它与开放源码的经济价值的讨论无关;就象我们在后面将会看到的,即使假设软件是符合制造业产品(非零)价值结构,仍是如此.所以我们没必要钻软件是否应该免费的牛角尖.
质疑主流模式,看看我们是否能建立另一种模式----对是支撑起开放源码协作的原 因作出有力的经济学解释.
这个问题需要从两个不同的方面考查.一个方面是我们要解释那些为开放源码作出 贡献的人士的个体行为;另一方面,我们需要理解那种支撑象Linux和Apache这样的 开放源码项目的经济力量.
Hardin的著名寓言告诉我们:设想一个乡村农夫们拥有一片公用绿地.他们在那里放牧牲畜.但是放牧使公用性退化,撕裂草皮,留下泥泞,很难恢复.如果没有对分配放牧的权利达成协议(或约定)以防止过度放牧;所有牧主都还会赞成尽可能快的增加牲畜数量,以便在公共绿地变成泥潭之前榨取最大的利润.
大多数人使用象这样的直觉的合作模式.这事实上并不是对开放源码--他们是(供不应求的)自由骑士,而不是(被过度使用的)过剩的公共货物--经济问题的正确判断,不过,我在大多数未充分考虑的反对声后面都听到过类似的看法.
公共拥有的悲剧预言只会出现三种结果.一种是泥潭;一种是为了村民的利益,强制性的使用某种分配协定(共产主义的解决方案);第三种是公用被打破,村民各筑藩篱,保护自己的一小块草地(私有制的解决方案).
当人们本能的的将这种模式应用于开放源码合作时,因此预计它只有很不稳定的短暂的半衰期.因为没有明显的方法去强制在互联网上工作的程序员执行工作时间分配策略,这种模式就断言公用将会打破,结果是出现各种各样的封闭代码软件和反馈给公用的工作量迅速减少.
答案的一部分正是建立在软件使用并不降低其价值的事实基础之上.实际上,对开放源码软件来说,当用户被其修正和特性(代码补丁)把握之后,软件的广泛使用还会增加其价值.公用悲剧被颠覆了,越放牧,草长得越高.
这条路不管走多远都是好的.但是,这只是在黑客写了补丁并公布了这个补丁后的事后诸葛亮式解释.我们需要的另一半答案是对为何JRH最初会写这个补丁,而不是为拥有销售回报的封闭源码程序工作.作出经济解释.到底什么商业模式创造了开放源码开发繁荣发展的环境呢?
在给开放源码经营模式分类之前, 我们应该先大致地考虑一下封闭的代价.当我们封闭源码时,我们究竟在保护什么?
比方说你雇了某人来编写和组织一个(不妨说)为你的生意专用的结算软件,那么和开放源码比起来,封闭源码一点也不会有助于解决问题. 如果你想封闭源码, 唯一合理的理由就是你想把这个软件卖给别人, 或者不让你的竞争者使用它.
比较明显的原因是你在保护销售价值, 但是对95%的供内部使用的软件来说这没意义.那么封闭还有别的什么好处吗?
第二个原因(保持竞争优势)还有待检验. 假如说你把那个结算软件开放源码了,它流行起来, 并且从社会上得到了改进. 现在, 你的竞争者也开始使用它了,他没有花开发费用就得到了好处, 而且影响了你的生意. 这是不是一种反对开放源码的理由呢?
可能是--也可能不是. 真正的问题在于你从分散开发负担中得到的好处是否多于由那些不劳而获的人带来的竞争损失. 许多人倾向于为这类交易作苍白的辩解,方法是: (a)避而不谈从额外的开发帮助中得到的功能上的改进. (b) 不认为开发费用是降低了, 而是假定你无论如何也是要承担这些开发费用的, 所以把它们作为开放源码(如果你这么选择的话)的代价是错误的.
还有别的许多封闭源码的根本就是荒谬的理由. 举例说, 你可能误以为封闭源码可以使你的商用系统更加安全, 不容易被破解或闯入. 如果是这样, 我建议你立刻找一个密码专家来诊断一下你的系统. 真正的猜疑心很重的人都知道不能相信封闭源码程序的安全性, 因为这是他们是从惨痛的教训中学到的.安全性是可靠性的一个方面; 只有那些被彻底检查过的算法和代码实现才可能被相信是安全的.
使用价值与销售价值之间的差别让我们注意到的一个基本事实是只有销售价值本身受到了来自从封闭原码到开放原码这个转变的威胁;使用价值并没有。
如果使用价值,而不是交换价值,的确是软件发展的根本驱动力;而且开放原代码的发展的确是比原代码封闭要更加有影响力和更加有效率,那么我们应该期待着去寻找一种环境,在这种环境中光是使用价值已能够完全地促使 开放原代码向前发展。
实际上,这样的几个环境模型并不难以找到。在这样的模型中,开放原代码的全职开发者的生存完全可以由(开放原代码的)使用价值来实现。
7.1 Aapache的个案:(价值分享)
假如你在为一个拥有高效性高可靠性网络服务器的商业公司服务。也许这个服务器是用来为电子商务服务的,也许是作为一个出售广告的高可视性的媒体输出装置,也许只是用来构建一个门户站点。你需要一天7小时的在线时间,你需要速度,还有规范性。
那么你该如何做呢?这里有些基本的策略可以供你参考:
购买一个私有的网络服务器,这样,你是在冒险相信卖方的宣传与你的需求是一致的,你在冒险相信卖方的技术竞争力能给提供完善的保障。即使假设这两个方面是有保障的,网络服务器本身也会由于缺乏规范的服务而出现问题。你只能通过卖方的经过挑选提供的几种工具来维护的你的服务器。这种购买私有的服务器的路子并非一个很大众化的方法!
自己做一个!做一个自己的网络服务器在目前还是不可忽略的一种调剂办法;网络服务器并不太复杂,当然比浏览器要简单。一个专门用途的网络服务器可以做得功能专一但很好用。走这条路的话,你能得到你所需要的各种特性和自己的规范,尽管在其升级的过程中你要付出很多。或许你的公司在你离开或退休后,还会发现这个服务器有了这样或那样的问题。
参加Apache小组!Apache服务器是有一个通过Internet交流的小组写出来的--小组成员都是系统管理员,他们相信比较明智的做法是将他们的能力集合起来去写,并提高一个单一方向的代码集而不是去花费时间各自同时写完全不相关的代码。这样做的结果是他们能够同时发挥“自己做一个”和大范围大规模测试代码的优势。
选择Apache小组的优势很明显。到底有多明显,可以根据Netcraft 的每周回顾来判断一下。Netcraft上说Apache服务器从其诞生起一直在稳定地夺取其他私有服务器的市场份额。1999年6月,Apache 的各种版本占有了61%的市场份额,没有合法的拥有者,没有组织机构,也根本没有合同制约的组织形式在背后操纵。
总的说起来,Apache的故事提供了一个模式:软件使用者通过支持开放原代码计划而发现了这个模式,他们发现这样做能以最小的代价给他们带来越来越好的软件,比其他任何方法都要有效。
7.2 Cisco的各案:风险均摊
一些年以前,两个Cisco(网络产品制造厂家)的程序员被分配来写一个分布式的打印系统的程式代码用做Cisco的合作网络的应用。这个项目的挑战性很大。这个系统要使任意一个用户能在这个网络上的任意一台打印机上打印东西(而用户和打印机可能只是隔壁或者相隔几千公里),当打印机没有纸了或其他紧急情况系统要能够将任务导向另一台附近的打印机。系统还要能够将这一个突发时间报告给打印机管理员。
他们两个对Unix上的打印软件做了一些很不错的修改,加上一些包的原语言,就做成了那项工作,但接着问题就来了。
问题是两个程序员都不愿意在Cisco永远呆下去。结果两名程序员都将离开,而软件也会无人维护而“腐烂”(就是无法满足实际应用中不断变化的要求而失去其应用)。没有任何一个人愿意看到这样的情况在他自己或工作上发生,那两个程序员也认为他们已经做了Cisco公司要求他们做的事情,其他的问题已经不是他们的工作范围了。
于是他们跑到他们的经理那里要求将这个打印软件的原代码开放。他们认为这样的话Cisco不仅不会失去什么反而会得到更多。通过协作鼓励用户和软件开发合作者的组织的发展,Cisco能够弥补因为软件原创人员的离开所带来的损失。
Cisco的故事引出另一个模式:原代码开放使开发一个软件的风险被众多协作者分摊了而且投资分花费很小。所有的团体都发现原代码的开放,以及一个成员各自独立却互相协作的社区的存在将提供一个无风险的开发环境,而且这个环境是有商业价值的----它能够自己赚钱养活自己!
开放源码使得直接获取软件销售利润非常困难。困难并不是来自技术方面的,因为源代码和可执行代码一样易于拷贝,并且版权法和许可证法的约束不同使得通过开放源码软件来获取销售利润比封闭源码软件难。
真正的困难来自维护开放源码发展的许可证本身。因为三个相互推动的原因,大多数的开放源码许可证禁止对用户使用、分发、修改软件的权利进行限制,以此避免有人利用开放源码软件牟取直接利润。为了更好的理解这些原因,我们有必要对这些许可证所涉及的社会背景——黑客文化
原因与对市场的敌视无关,虽然这样的误解在黑客圈外至今广为流传。不排除有小部分的黑客确实一直对商业动机抱有敌意,但大部分的黑客还是愿意与一些以盈利为目的Linux集成商(如RED HAT、SUSE、Caldera)合作的。这也表明只要符合他们的意愿,大多数的黑客会乐意和商家合作的。如此看来,黑客们敌视以获取直接利润为目的的许可证的真正原因非常微妙也非常有趣。
原因之一,对等原则。大多数开放源码的开发者允许别人利用他们的成果来获取利益,还有许多开放源码的开发者同时还规定不允许某一方(有时源码的开发者除外)出于特权地位来牟取利润。只要黑客们自己潜意识里打算从他们开发的软件或补丁中赢利,他们一般也愿意别人来与他合作,共同赢利。
原因之二,意想不到的后果。黑客们发现在许可证中对软件的商业应用与销售进行限制和收费(为获得销售利润而通常采用的做法)会使得人际关系变得淡漠。其中一个特例就是所谓的“盗版光盘”,这本来应该鼓励的,但现在却被认为是违法和不道德的。总的来说,对用户使用、销售、修改、分发软件的权力(以及版权协议中其他复杂权利)进行限制会导致人们循规蹈矩,时时刻刻担心自己会犯法(这种担心会随着人们使用的软件包的增加而愈演愈烈)。这无疑是非常不妙的,因此简化许可证,解除许可证中的各项限制已成为大势所趋。
黑客群体对于对等原则还是有所妥协的,所以他们能够容忍一些象Netscape的NPL(NPL明确规定不允许非公开源码的产品使用开放源码的Mozilla代码)一样给予源码创作者一些特权的许可证。对于第二条原因,妥协的就少一些。而对第三条原因极少会作出让步(这也是Sun公司的JAVA and Jini Community License计划遭到黑客们广泛反对的原因)。
上述原因解释了开放源码定义中的各项条款。这些条款从一些典型的自由软件版权协议(如GPL协议,BSD协议,MIT协议以及Artistic协议)的细微特征中表达了黑客群体的思想,它们(虽然不是有意的,但客观上)使得获取直接利润极为困难。
然而,还是有办法来开拓与软件服务相关的市场,从而获得间接销售价值。有五种已知的和两种正在探索的模式(未来可能会发展出更多的新发展模式)。
在这种模式中,利用开放源代码软件为直接产生收入的专有软件来创造或维持一种市场位置。在大多数普遍的情形中,开放源代码的客户端软件带动了服务器软件的销售,或者可增加了门户网站的访问量/广告收入。
网景公司(Netscape)在1998年开放了Mozilla浏览器的源代码时,就是使用了这种策略。他们浏览器端的商业收入只占总收入的13%,而且在Microsoft开始发布Internet Explorer后市场份额还在下降。IE强大的市场营销(及其捆绑策略后来成为反托拉斯案的核心问题)迅速的吞噬了Netscape浏览器的市场份额,造成了Microsoft试图垄断浏览器市场,并利用微软强加给用户的HTML的“标准”,形成逐步把Netscape 赶出服务器市场的态势。
通过开放仍然流行的Netscape浏览器的源代码,Netscape有效的阻止了Microsoft垄断浏览器的可能性。他们期望开放源代码协作会加速浏览器的开发和测试,并希望能降低Microsoft的IE的发展速度,阻止它独自定义HTML标准。
这个策略生效了。在1998年11月,Netscape实际上开始从IE那里夺回市场份额。在1999年初Netscape被AOL收购时,保持Mozilla所取得的竞争优势是很明显的,这一点可以从AOL的行动中显而易见,AOL首先对外的承诺的就是继续支持Mozilla计划,虽然她还处在alpha测试阶段。
这种模式是针对硬件制造商的(这里的硬件包括从以太网或其他外部设备直到计算机系统的所有东西)。市场压力迫使硬件公司书写和维护软件(从设备驱动程序、配置工具直到整个操作系统的级别),但是软件本身并不是利润中心。它是一项开支——通常是一项重要开支。
在这种情况下,开放源代码是一种很好的策略。由于没有赢利上的损失,所以没有负面影响。销售商获得的是奇迹般膨胀的开发人员队伍,对用户需求获得更加快速、灵活的反应能力,并且通过同行检查而获得的更好的可靠性。而且可以免费得到了其他系统的移植。这种做法还可在很大程度上提高客户对公司的信任度,因为客户的技术人员可以花费了更多的时间根据自己的需要定制代码。
有一些经常被销售商提出的反对开放硬件驱动程序源代码的理由。为了不把它们和这里的更加一般的问题搅在一起,我在附录里专门讨论了这个问题。
开放源代码的“将来获益”的效果在糖霜策略中体现的尤其强烈。硬件产品有一个有限的制造和支持的生命周期,在那以后,用户就自己照顾自己了。但如果他们可以获得驱动程序的源代码,并可根据需要加以修改的话,他们就更可能高高兴兴的成为同一公司的回头客。
糖霜模式的一个非常戏剧性的例子是苹果公司在1999年三月中旬决定开放它们的MacOSX服务器的操作系统“Darwin”的代码。
在这种模式中,开放源代码软件建立了一种市场定位,并不是为了象在失败的领导者/市场定位者模式中一样针对封闭源代码软件,而是针对服务。
(我曾经把这种模式称为“奉送剃刀,销售刀片”,但是软件和服务二者的关联并不如剃刀/刀片所类比的那么紧密。)
这是红帽和其他Linux发行商所采用的模式。他们卖的其实并不是软件代码本身,而是通过组合和测试一个能转的操作系统产生的附加价值,这个操作系统被担保有销路并与同一品牌的操作系统兼容。构成他们的价值的其他元素包括免费安装和提供可选的持续技术支持合同。
开放源代码的创造市场的能力极为强大,尤其是对那些天生就作服务的公司来说更是如此。进来一个非常有教育意义的例子是Digital Creations公司,它是一个创建于1998年的web站点设计机构,专长于复杂的数据库和事务站点的开发。他们的主要工具,公司的知识财产——皇冠上的明珠,是一个对象发布系统,它曾经有过几个名字,现在被称为Zope。
Zope的一个负责人曾经非常公开的确认了他们的开放源代码策略“开启了许多其它方式无法开启的门”。潜在的客户确实反应了这种情况——所以Digital Creations公司迅速发展起来。
另一个很近的例子是e-smith公司,这个公司出售定制的开放源代码的Linux的Internet安全服务器。他们的一个负责人描述了e-smith迅速扩展的免费下载服务,他说“大多数公司都要考虑软件盗版问题,而我们把它看作一个自由市场。”
在这种模式中,我们出售开放源代码的附加产品。在低端市场,出 售杯子和T恤衫;在高端市场上,出售专门编辑并出版的文档和书籍。
O'Reilly集团是一个附加产品公司的很好的例子,他出版了很多优秀的开放源代码软件的参考资料。O'Reilly实际上雇用和支持了一些著名的开放源代码黑客(例如Larry Wall和Brain Behlendorf),并以次提高它在市场上的声望。
在这种模式下,我们以封闭的许可证发布软件的可执行文件和源代码,但是包含一个有关封闭条款的期限。比如,我们可以写一个许可证,允许免费的散发软件,禁止不付报酬的商业应用,并保证发布一年以后或开发商终止开发后软件将在GPL保护之下。
在这种模式下,客户可以保证产品能够根据他们的需要定制,因为他们可以得到源代码。产品的将来也是得到保证的——许可证保证了如果始创公司失败后,开放源代码社区仍能够接管该产品。
因为销售价格和数量是依赖于客户对产品的期望值,始创公司可以享受到比以封闭源代码许可证发行的软件更优厚的收入。而且,因为老的代码是在GPL保护下的,所以它可以得到同行认真的检查、排错和添加其他小功能,这样可以为原创者减轻75%的维护负担。
这种模式被Aladdin公司成功的采用了,它创造了流行的Ghostscript程序(一个PostScript解释器,它可以把PostScript翻译成许多打印机的内部语言)。
这种模式的主要缺点是那些封闭的条款倾向于抑制产品开发早期的同行检查和参与,而那时是最需要的大家的参与的时候。
这还是一个试探性的商业模式。我们开放一项软件技术,保留测试包或一套兼容性标准,然后卖给用户一个品牌认证,保证他们对这种技术的实现和其他具有这种品牌的产品相互兼容。
(这是Sun公司应该对待Java和Jini的方式。)
这时另一种试探性的商业模式。想象一些象股票信息订阅的服务。价值既不在客户端软件也不再服务器商,而在于提供客观的的可靠的信息。因此我们开放所有的软件,出售内容订阅。当黑客们把客户端移植到新的平台上或者以不同方式扩展它时,我们的市场自动扩展了。
(这是为什么AOL应该开放它的客户端软件。)
在考察了支持开放源代码软件开发的几种商业模型之后,我们可以来讨论一下何时开放源代码、何时封闭源代码才有经济意义这样的一般性问题了。首先,我们必须弄清楚每种策略如何盈利。
封闭源代码的方式让你可以从秘密的比特中收取利润;另一方面,它阻止了其他同行对代码进行检验的可能性。开放源代码方式为其他同行检验创造了条件,而且你也不能从秘密的比特中获得利润。
从秘密的比特中盈利很好理解;传统的软件商业模型就是围绕着它建立的。但是直到近来,其他同行检验代码的价值还未被很好的理解。然而,Linux操作系统使得我们对问题的认识更加清晰,这些认识我们本应在几年前从Internet核心软件和其他软件工程分支的发展历史中就应该学到——开放源代码的同行检验是得到高可靠性和高质量的软件的唯一可伸缩的方法。
因此,在一个竞争的市场上,寻找高可靠性和高质量软件的客户会给那些开放源代码软件开发人员以回报,是他们探索出怎样在服务、附加值和与软件相关的辅助市场中维持一个稳定的收支循环。这种现象正是Linux令人惊讶的成功背后的原因,Linux在1996年的一片空白发展到1998年末的商业服务器市场的17%,而且似乎会在两年之内占领这个市场(1999年初,IDC 预测Linux将在2003年成长的比所有其它操作系统的总和还要快)。
当从秘密比特得到的回报比从开放源码高的时候,从经济意义上说应该封闭源代码。当从开放源代码得到的收益比从秘密比特高的时候,那么无疑开放源代码更有意义。
从表面上看,这是一个很普通的想法。但是当我们注意到开放源代码的回报比秘密比特更加难以度量和预计时,就是说回报常常被低估而不是被高估,这一点就不那么平淡无奇了。实际上,直到1998年初业界主流开始重新考虑遵从Mozilla发行源代码的前提时,开放源代码的回报一直被普遍错误的认为是零。
那么我们怎样评价开放源代码的回报呢?一般的说这是一个困难的问题,但是我们可以象处理其他任何一个预言性问题一样来处理它。我们可以从观察开放源代码成功和失败的案例开始。试着抽象出一个模型,至少给出一个定性的感觉,在什么情况下开放源代码对投资者或追求最大回报的商业操能产生净收益。然后我们再用数据来细化这个模型。
在应用程序领域,我们看到开放源代码底层软件创造了信任和平等的结果,随着时间的推移,一定会吸引到更多的客户,从而胜过封闭源代码底层软件;在这个迅速扩张的市场上占有较小的份额常常比在封闭的和迟缓的市场上占有较大份额还要好。因此,对于基础结构软件,开放源代码的方式比利用知识产权得到收益的封闭源代码方式会得到更高的长期回报。
实际上,潜在用户根据发行商的策略推知它的将来发展能力,同时他们有不愿接受一个垄断供货商的本能,因为这将意味着要处处受到约束;除非已经有了一个压倒性的市场力量,否则你可以选择一个开放源代码的方式也可以选择一个从封闭代码直接受益的方式——但是不可能同时选择二者。(在别的地方可以看到类似的情况,举例来说,在电子市场上用户常常拒绝购买单独货源的设计。)这种情况的消极性可以消除一些:在网络占支配地位的地方,开放源代码似乎是正确的选择。
我们可以总结一下这种逻辑:在(d) 创建一个公共计算和通讯的底层结构时,开放源代码软件似乎可以比封闭源代码软件成功的获得更大的回报。
最后,我们注意到,相对于核心算法和基础知识已被很好理解的服务提供商,提供唯一或独特服务的商家更加担心竞争对手会模仿他们的方法。因此,在(e) 核心方法(或功能)是公有知识一部分时,开放源代码更加可能取胜。
实现了Internet核心软件,Apache, 和ANSI标准的Unix API的Linux系统是上面分析的五个标准的典型样板。在十五年建造自己的封闭协议(如DECNET,XNS,IPX等等)帝国的尝试失败之后,90年代中期数据网络重又向TCP/IP集中,这生动的印证了这种市场向开放源代码演化的道路。
另一方面,开放源代码对拥有自己独特的创造价值的软件资产的公司没有太多意义(强烈满足条件(e)),下面这些情况也不太适用与开放源码,比如软件(a) 对失效相对不敏感,(b) 可以用同行检验以外的方式来验证,不是(c) 关键事务的,并且不是主要从(d) 网络作用或普遍使用上获得价值的。
作为一个极端的例子,1999年初由一家公司问我“我们是否应该开放源代码?”,这家公司为锯木机编写计算切割模式的软件,可以从原木中获得最大的板材。我的结论是“不”。他们唯一接近满足的条件是(c);但是在紧要关头一个熟练的操作员可以手工的决定切割模式。
值得指出的是,满足这些条件的特定产品或技术会随时间发生变化,从下文的案例中我们会看到这一点。
总而言之,下面的条件宜于采用开放源代码模式:
(a) 可靠性/稳定性/可扩充性非常关键时
(b) 设计和实现的正确性不能很容易的用其他同行检验以外的方法验证时
(c) 软件对用户控制他/她的事务非常关键时
(d) 软件用来创建一个公共计算和通讯基础结构时
(e) 关键方法(或等价功能)是公共工程知识的一部分时
id 软件公司卖得最火的游戏Doom的历史展示了市场压力和产品演化怎样改变了封闭源代码软件相对于开放源代码的收益数量。
当Doom在1993年末第一次发布时,它的主观视角,实时动画是极为独特的(条件(e)的对立面)。不仅因为它那令人叫绝的视觉效果,而且在很长一段时间内没人知道他们是怎样在低级的处理器上实现这些效果。这些秘密的比特可以获得非常重要的收益。而且,开放源代码的潜在收益很低。作为一个单独的游戏,这个软件(a) 它的故障的代价很小,(b) 不是非常难于验证,(c) 对任何一个用户来说都不是至关重要的,(d) 并不得益于网络。所以Doom成为封闭源代码在经济上是很合理的。
然而,Doom周围的市场不是静止的。竞争对手发明了它的动画技术的等价功能,其他的“主观射击”游戏比如毁灭公爵(Duke Nukem)等开始出现。当这些游戏侵蚀Doom的市场份额时,秘密比特的收益开始下降。
所有这些趋势都提升了开放源代码的回报。在某一点回报曲线交叉,开放源代码成为id公司在经济上合理的选择,他们可以从诸如游戏扩展选集等第二市场上获益。在这一点之后的某个时间,事情确实发生了。 1997年末Doom的完整源代码被公开发行。
Doom是一个有趣的案例,因为它既不是一个操作系统也不是一个通讯/网络软件;因此这远离了开放源代码的通常的明显的例子。确实,Doom的生命周期,包括交叉点,可以作为今天的代码生态中应用软件的典型——在这个生态环境中,通讯和分布计算软件要求较高健壮性/可靠性/可扩充性、只能通过同行检验来验证,并且常常超越技术环境和竞争者之间的界限(包含信任和平等)。
Doom从一个单机游戏演化到deathmatch模式。网络计算越来越重要。同样的趋势可以从最重要的商业应用程序,如ERP系统看到。商务网络把供应商和客户更加紧密的联系在一起——当然,它们包含在整个万维网的体系结构之中。这种情况到处可见,开放源代码的回报稳步增加。
如果当前的趋势继续下去的话,下个世纪软件技术和产品管理的核心挑战将是知晓应该何时放手——何时把封闭源代码转变为开放源代码体系结构,从而得到同行检验的好处,并从服务和其他第二市场上得到更高的回报。
大家很明显都不想在任何一个方向上离交叉点太远。除了这个,等待太长时间面临着严重的风险——你可能会被一个走向开放源代码的同一市场上的竞争对手铲平。
这个问题之所以严重的原因是,可以被吸引到某类产品的开放源代码合作者的用户群和专家群是有限的,而且这些人很难于转移。如果两个功能基本相同的竞争代码一先一后开放源代码,那么先开放的更加可能吸引更多数的用户和更多数的最激情的合作开发人员;后开放的则不得不吃剩饭。吸引来的人员难以转移,因为用户对软件已经熟悉,而开发人员已经在代码上投资了很多的时间。
在开放式原代码的社区中,通常是以一种倾向于增强开放式原代码生产效益的方式来组织其自身的商业活动的。尤其在LINUX的世界里,存在着一个具有重要经济意义的事实,那就是存在有许多相互竞争的发行商,而他们形成了一个与开发团体相分离的、独立的层次。
开发人员写原代码,并且使得这些原代码在互连网上是可以被下载的。每个发行商都从这些可下载的原代码中选取一些,并将它们进行综合,包装,并且注册商标,最后将其买给顾客。用户可以选择发行商的产品,也可以通过直接从开发商的网站下载原代码而增补其自己已安装的发行版。
这一分化出来由发行商形成的层的作用是为创造了一个非常易于改变、可对产品不断完善的内在市场。开发人员为了吸引更多的发行商和顾客的注意力,在他们软件的质量上彼此竞争。而发行商则为了从用户那里赚得更多的钱,互相在他们选择原代码的策略以及他们给软件带来的附加价值上竞争。
公用的悲剧也许并不在于他们对现如今存在的开放式原代码商业模式发展的适应性,但这并不意味着不存在任何理由去怀疑开放式原代码社区内目前的状况是否能持续下去。主要的参与者是否会随着风险的进一步增大而背叛共同的合作?
对这一问题的研究将导致我们对一些问题有趣的思考,譬如现如今真实世界中开放式原代码软件的经济状况,以及什么才是未来软件业中真正的软件服务行业中的典范。
也许就目前来说,以一种与法律相结合的形式来表达LINUX社区准则的软件许可证制度正积极主动的阻止了RED HAT对他们的基于开放源码产品的垄断。他们唯一能卖的就是一个品牌、服务以及与那些自愿付给他们钱的用户之间的技术支持关系。这不会让压倒性的垄断局面出现有太大的的可能性。
投资者向开放源码世界投资的另一个原因就是要改变他。开发者逐渐感觉到他们可以从他们想干的事情中获得报酬,而不是用自己的正式工作的收入来维持他们对开放源码运动的爱好。象Red Hat, O'Reilly Associates和VA Linux System这样的公司正在探索通过雇佣并维持稳定且能干的开放源码程序员来建立半独立的研发机构需要多大的投入。
这种方式只有在公司通过迅速扩大市场所带来的收入能够足够用于支付那种研究实验室时才是经济上可行的。O'Reilly之所以能够负担Perl和Apache的主要作者来完成他们的工作是因为经过努力公司能够出售和Perl以及Apache相关的书;VA Linux System能够让实验室有足够的经费来源的原因是随着Linux的繁荣,他们可以卖掉更多的工作站和服务器;Red Hat可以负担他的高级研发实验室也是由于实验室可以不断提升公司的Linux产品的价值并吸引更多的用户。
在向自由软件形式过渡完成之后,整个软件产业将会是什么样子呢?
为了回答这个问题,有必要根据软件所需要为用户提供的服务程度将软件分分类,服务体现了软件的开放性,这种划分又是与软件所业服务的市场化程度紧密相关的。这个提法的精髓恰好与我们日常所说的三个名词相似:应用程序(基本没有商品化的服务,没有或缺少开放的技术标准)、构件(服务商品化、标准性很强)、中间件(需要一些商品化的服务、有技术标准但是不完善)。当前(1999年)对于上面三种软件的典型例子就是字处理软件(应用程序)、TCP/IP协议包(构件)和数据库引擎(中间件)。
最后,我们要看到这种从封闭到开放的变革还是主要要由软件产品的用户来推动才能不断发展。越来越多的高质量软件将被创造出来并得到长期使用,而不是被某些人藏在密室里得不到发展。这种奇迹用Ceridwen的魔锅来比喻还不够恰当,因为魔锅变出来的食品如果不吃就会逐渐腐烂掉,而自由软件世界中的软件将是取之不尽的宝藏。在自由软件中你拥有最自由的自由,无论你是打算提供商业服务还是打算为他作出贡献,自由软件世界将向所有人提供一个不断积累、取之不竭的宝贵财富。
[DL] De Marco and Lister, Peopleware 合著的 Productive Projects and Teams (New York; Dorset House, 1987; ISBN 0-932633-05-6)
[SH] Shawn Hargreaves 写过的一篇关于如何将开放源码和游戏制作相结合的佳作 Playing the Open Source Game
在完成本文的过程中,通过与David D. Friendman的几次激烈讨论帮我进一步提炼了介绍如何加强开放源码团体合作的“翻身的平民”一 章。感谢Marshall van Alstyne为我指出了“热门信息产品”的确切含义,我欠了他一个人情。Indiana组织的Ray Ontko给了我许多有益的批评。还有许许多多在我今年6月发表演讲时的热心听众也给了我很多帮助,如果你是听众中的一员,你就会明白我指的是谁。
在我公布这篇文章以后,我还通过电子邮件收到了许多关于自由软件发展模式的材料,这些材料不断充实了这篇文章的内容。Lloyd Wood指出了“将来获益”自由软件发展模式的重要性;Doug Dante提醒我注意“未来免费”这种商业模式;Lionel Oliviera Gresse帮我给一个商业运作模式起了一个更好听的名字;Stephen Turnbull对于无视自由骑士现象给了我当头一棒。
为何封闭驱动程序源码的硬件厂商会浪费投资商的金钱外围设备开发商,象网卡、硬盘驱动器或显卡的制造商,他们的传统作法就是将驱动程序的源代码封闭起来。但是这种现象现在已经有所改变,比如Adaptec公司和Cyclades公司已经习惯于将他们的各种板卡的驱动程序源代码和相应文档公开化。不过要想让开放源代码成为一种普遍的作法还是有不少困难的。在本附录中我们就是打算澄清在商业领域中仍然维持封闭源代码体系的一些错误观念。
假定你是一个硬件制造商,你也许会担心将驱动程序代码的开放会泄露你硬件如何工作的许多重要秘密,从而让你的竞争对手可以通过分析你的源代码来给你造成一种不公平的竞争环境。这种想法在三、五年才会将产品更新换代的时代里也许还站得住脚;但是今天即使将源代码开放,你的竞争对手也将不得不花费占整个产品更新周期的一大部分来琢磨你已经公开了的代码,因为现在产品更新的周期大大的缩短了,你的竞争对手将没有足够的时间来好好思考和革新他们自己的产品。所以说他们去研究你开放的源代码的时刻实际上已经钻进了你的圈套。
坚持走封闭的路线是一条死胡同,你的秘密将不可避免的被逐步暴露,你将无法得到自由程序员的帮助,也没有什么愚蠢的竞争对手会去花时间模仿你的设计。更重要的是你如果及早采纳开放的思想本来可以获得更广阔的发展空间,但是你却遗憾的错过了。由于你的设备太保守、缺少资料和固步自封,并且不能认识到你自己的错误,因此互连网上大部分的网络管理员和超过17%的商业数据中心所形成的巨大市场将把你的硬件设备从他们的采购清单中删除,而把目光转向其他开放的硬件厂商中去。
你现在看到的是本文档的1.14版
在下面的列表中,一些微小的修订和印刷版就不再列出了。
1999年5月20日,1.1版 -- 草稿
1999年6月18日,1.2版 -- 第一用于私下交流的版本
1999年6月24日,1.5版 -- 对外公布的第一个版本
1999年6月24日,1.6版 -- 作了一些小改动,给出了'hacker'的定义。
1999年6月24日,1.7版 -- 澄清了一些标准
1999年6月24日,1.9版 -- 增加了关于“将来获益”、“未来免费”发展模式的讨论和关于封闭的代价的章节
1999年6月24日,1.10版 -- 给“刀片”模式取了一个更好的标题
1999年6月25日,1.13版 -- 更正了关于Netscape公司13%收入的问题,增加了关于自由骑士的分析,更正了封闭网络协议的列表。
1999年6月25日,1.14版 -- 增加了e-smith公司的例子
1999年7月9日,1.15版 -- 更新了关于硬件驱动附录的内容,并在Rich Morin的帮助下给了“热门货”一个更好的解释。
埃里克·斯蒂芬·雷蒙(Eric Steven Raymond)是《大教堂与市集》的作者、《新黑客词典》的维护人、著名黑客。作为《新黑客词典》的主要编撰人以及维护者,Eri c Raymond很早就被认为是黑客文化的历史学家以及人类学家。但是在1997年以后,Eric Raymond被广泛公认为是开放源代码运动的主要领导者之一,并且是最为大众所知道(并最具争议性)的黑客。1957年,雷蒙德出生于美国马萨诸塞州的波士顿,正好就是黑客文化发源地MIT的所在,也是斯托尔曼发动自由软件运动的大本营。但雷蒙德从小就跟随父母在世界各地东奔西走,13岁之前已经忘掉了两种语言。1971年,他回到美国宾夕法尼亚州,1976年起开始接触黑客文化,1982年完成第一个开放源代码软件项目。雷蒙德不是光说不练的笔杆子,他INTERCAL编程语言的主要创作者之一,曾经为EMACS编辑器作出贡献。雷蒙德还是著名的Fetchmail程序的作者。
他以他姓名的缩写,ESR作为黑客代号。雷蒙管理着30多个开源软件以及10多个主要的FAQ。他还是重要的作家和weblogger。他是INTERCAL编程语言的主要创作者之一,还曾经为EMACS编辑器的发展作出贡献。雷蒙还是Fetchmail程序的作者。
雷蒙的名言,“足够多的眼睛,就可让所有问题浮现。”(Given enough eyeballs, all bugs are shallow),对开放源代码运动影响很大,这亦即是著名的林纳斯定律。