第四章 魔法大锅炉

来源:互联网 发布:文明5 mac 不能用mod 编辑:程序博客网 时间:2024/04/23 20:56
前言 ————————————————

  本文分析了正在不断发展的开放源代码现象的经济基础。我们首先推翻了一些流行的关于软件开发中投资和软件价格结构的神话,给出了一个关于开放源代码协作稳定性的游戏规则分析。我们给出了九种开放源代码开发的可发展模型,其中两种是不盈利的,七种是盈利的。接着我们发展了一种定性的理论,说明什么时候封闭代码在经济上是合理的。然后我们考察了当前市场上发明的几种新颖的开放源代码开发的盈利方法学,包括赞助系统和任务市场的引入。我们最后做出了结论,试着对将来做了一些预测。


目录

[编辑] ==============

1. 近乎魔法 2. 超越高手的天赋 3. 制造业的错觉 4. “信息需要免费”的神话 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. 本文档修订记录


1. 近乎魔法

  在威尔士的神话中,Ceridwen女神有一口巨大的锅,当女神念动只有她自己知道的咒语时,那口锅就变出奇妙的食物。在现代科学中, Buckminster Fuller提出了一种“短暂化”的概念,认为在早期的物理资源投资越来越多的被信息内容所代替的情况下,技术会变得越来越有效和廉价。Arthur C. Clarke指出“任何足够高级的技术都与魔法别无二致”,从而把二者联系起来。对很多人来说,开放源代码社区的成功看来就象难以置信的魔法。高质量的软件变得免费,在充满竞争而且资源稀缺的现实世界,这似乎不能继续下去,但是它进行的还不错。要点在哪?Ceridwen的大锅只是一个小诡计吗?如果不是,在这种情况下,“短暂化”是怎么工作的——女神究竟念动了什么咒语?


2. 超越高手的才能

  开放源代码文化的经验肯定使许多学习过软件开发的人们感到困惑。“大教堂和市集”一文描述了分散协作软件开发是怎样有效的推翻了Brooks 的定律,产生了使一个独立的工程具有空前可靠性和质量的开发方式。“开拓智域”一文揭示了市集模式开发风格中的社会动力学,这应该用人类学家所谓的“赠与文化”的术语而不是常规的交换经济术语来理解,在这种文化中,成员在做出贡献大小方面竞争。本文中我们将开始推翻一些流行的关于软件生产经济学的神话;然后对“大教堂和市集”和“开拓智域”两篇文章进行经济学、搏弈论和商业模型领域的分析,发展一种新的概念工具,来理解开放源代码开发者的赠与文化在交换经济里也可以继续下去的理由。

  先不岔开话题,沿着上面的线索分析,我们需要抛弃(至少要暂时忽略)在“赠于文化”层次上的分析。“开拓智域”中赠于文化的存在是基于生存所需要的物质资料极大的丰富,以至于社会交换已经不很重要的环境里;这种分析虽然在纯粹的精神世界中非常有说服力,但针对现实生活中大多数开放源码开发者实际所处的综合经济环境来说,这种解释则显得有些无力。对许多人来说,社会交换仍然是他们努力工作的驱动力,但是已经渐渐失去了吸引力。必须在资源匮乏的经济学中为他们的行为找到足够的理由,才能使这些行为在物质资料丰富的赠于文化中得以立足。

  因此,我们现在将(从整个资源匮乏经济学领域)思考维持开放源码开发的协作和交换模式。在分析的过程中,通过深入剖析和列举实例,我们同时也就回答了那个非常实际的问题:“我如何通过开放源码来赚钱?”。不过,这个问题是根据与软件开发本质相悖的普遍软件开发经济模型而提出的,首先我们需要展示一下隐藏在这个问题之后的许多思维误区。

  (在展开分析之前还有最后一个需要说明的是:本文中对开放源码开发模式的讨论和提倡,不能被理解为对封闭源码模式的彻底否定,也没有反对现有的软件知识产权体系,更不是对“共享”的无私呼吁。虽然开发源码开发团体中的一些人仍然热衷于这些讨论,但从“大教堂和市集”发表以来,经验已经清楚的表明这些争论没有必要的。重要的是开放源码的开发模式和经济效益能够制造出质量更好、可靠性更高、成本更低、可以选择的方案更多的好产品来。)


3. 制造业的错觉

  我们需要注意的是计算机程序和其他类型的工具和资本货物一样,都有两种经济价值:使用价值和销售价值。

  程序的使用价值就是它作为工具的经济价值;销售价值是它作为作为商品的价值。(用经济学的专业说法,销售价值是产品最终价值,使用价值是产品中间价值)

  当大多数人说到软件产业时,总是按照拥有下列特性的“工厂模式”经济来分析:

  1. 大多数开发者的劳动由销售价值的收入来支付  2. 软件的销售价值与开发成本(例如,功能复制所需的资源花费)和使用价值成一定比例

  换句话说,人们有很强的思维惯性去假定软件具有标准工业品的特性。但是这两个假设都错了。

  首先,编写用于出售的代码只是编程行业的冰山一角。在微机世界前期,大家普遍认为世界上90%的代码在银行和保险公司内部编写。这虽然已经不再是事实——现在其他行业也越来越加大了软件开发的力度,金融行业所占的比例从而下降——但是短期内我们仍将会看到大约95%的代码是公司内部编写。

  这些代码包括大多数为中等或大规模公司所定制的MIS,金融和数据库软件。包括象设备驱动这样的专业技术代码(几乎没有人靠卖设备驱动赚钱,这一点我们将会在后面讨论);包括日益增长的数控机器的各种嵌入式代码——从机械工具和喷气客机、汽车、微波炉甚至烤面包炉。

  大多数这种内部代码与其环境集成在一起,复制和再利用十分困难(不论环境是商业办公室的程序套件还是联合收割机的加油系统)。因而一旦环境变化,需要做许多工作使软件与之同步。

  这种工作称为“维护”。任何软件工程师或系统分析员都会告诉你这就是程序员的大部分工资的来源(超过75%)。因此,大多数程序员工时花费在编写和维护更本不能卖的内部代码上(当然大多数程序员以此为生)——读者们也许乐意去查查报纸上的“诚聘信息”部分的编程工作列表检验一下。

  我强烈的希望读者试试浏览本地报纸的招聘信息,看看编程,数据处理,和包含软件开发工作的软件工程项目等等。将这些工作按照其目的是使用还是销售进行分类,你将深受启发。

  很明显,即使为“销售”定义了最大范围,20人中还是至少有19个由使用价值资助(作为产品中间价值)。这就是为什么我们认为软件工业中以销售价值驱动的部分只占5%原因。注意,本文中其他部分的分析并非完全倚赖于这个数;即使这个数字达到15%甚至20%,在经济上的推论结果仍然八九不离十。

  (当我在技术讨论会上演讲时,我经常由讨论两个问题开始:听众为写软件付多少钱,和有多少薪水是依赖于软件的销售价值的。第一个问题应者甚众,而第二个问题则寥寥无几,大而且量的听众对这个问题十分诧异)

  其次,经过对实际客户行为的调查,软件销售价值与其开发和升级成本相关的理论很容易被推翻。开发和升级成本相关的商品(对打折之前来说)占很大比例——食品,汽车,机械工具,甚至有许多无形的产品——例如,音乐、地图或数据库资料的复制权,这产品在生产者倒闭后仍然能保持甚至增加其销售价值。

  与上述形成鲜明对比的是。当一个软件产品生产者歇业时(或者如果产品开发被终止),几乎没有客户愿意为其花钱,而不管它理论上的使用价值或同样功能产品的开发费用有多高。(要检验这个说法,去你附近的软件商店打折柜台看看吧:-))

  在生产者失败时,零售商的行为很有启示。他们知道一些生产者不知道的东东。他们深知:客户愿意花费的价格在很大程度上由卖主未来可以提供的服务决定。(这里的“服务”被广义的理解为完善,升级和后续产品)

  换句话说,软件主要是一个稳定的服务性行业,认为它是制造性行业是没有理由的错觉。

  另外,检查一下我们为什么会有这些惯性思维也很有益处。它们也许来自于软件生产者大力宣传的销售类产品,这些是的软件业一小部分,也是宣传的唯一的一部分,大多数明显和重头的广告宣传的产品是昙花一现的短期产品,就像游戏,他们几乎不需要提供后续服务(合同规定的除外)。

  另外,值得注意的是,制造业错觉所倡导的价格体系事实上会越过保持开发预算不崩溃的底线。既然(像一般认为地)超过典型软件产品周期花费的75%在维护,调试和扩展上,那么通常的那种只采用高额售价,极低相关服务费用的定价策略,只会导致各方面都差的服务。

  用户的损失在于,即使软件是服务性行业,工厂模式促使生产者减低服务质量。如果生产者靠出卖比特挣钱,大量的努力是制造比特并将它们推销出门;帮助服务部分,因为不是利润的中心,将会成为只付出的一点点努力和资源,为了避免激怒用户所设的垃圾站。

  另一方面是大多数生产者使用这种工厂模式会导致长远的失败。为满足无限的售后服务和技术支持需要的固定价格产品提供资金,只有在那些膨胀足够迅速的市场里——其过去的销售和未来的收入能够满足支持和生存周期的花费——才能存活。一旦市场成熟和销量下降,维持生计,大多数生产者除了消减单独产品的开支之外没有别的选择。

  不管是直接(废止产品)还是间接(支持很差),都会把客户推给竞争对手(因为这些行为损害了依附于服务产品的期望值)。短期来看,可以通过将修正过bug的版本发布为新产品避免这个陷阱。而长远来看,避免陷阱的唯一可能是对行业进行有效的市场垄断。最终,只有唯一的幸存者。

  事实上,我们一再的看到这种缺乏支持的模式害死一些市场环境中很强大的竞争者(这种模式对那些那些经历过计算机发展史幸存下来的人尤其深刻,包括个人操作系统,字处理,通用财务程序或商业软件)。这种不正确的动机来自于工厂模式导致的赢家通吃的态势,而且最后即使你是赢家的客户也会遭殃。

  如果不是工厂模式,那又是什么?为了有效的控制软件生存周期真实的花费体系(同时在经济学和非正式场合的意义上的“有效”),我们需要一个建立于服务合同,合约,和买卖双方持续交易基础上的价格体系。所以,在以效益为目的的自由市场条件下,我们能管窥大多数成熟的软件工业最终遵循的价格体系。

  为什么说开放源码软件的地位日益增长,不仅仅是技术,也是经济上对主流秩序的挑战?上述内容给我们一些启示。软件开发的“free”,会将我们推向以服务支配的世界,同时暴露出一直依赖销售封闭源码产品的方式有多脆弱。

  “free”的概念很容易被误解为其他含义。降低产品花费会导致支撑软件业的整个基础投入增长,而不是降低。只有汽车的价格降低时,汽车的需求才会上升——这也是为什么在开放源码世界中,另外那5%的根据销售价值付酬的程序员不好受的原因。在free的变革中,有损失的不是程序员而是那些没看清形势而将赌注押在封闭源码策略上的投资者。


4. “信息应该免费”的神话

  与工厂模式错觉相呼应的是,思考开放源码经济的人们还常常被另外一个神话搞糊涂。那就是“信息应该免费”。这常常以数字信息产品的复制边际成本几乎为零来解释,这个解释暗示了其价格似乎就应该为零。

  其实你只要考虑一下诸如藏宝图,瑞士银行的账号口令,或计算机服务的确认口令,等等信息的价值,就很容易看破这个神话。即使这些确认信息可以不用任何花费的复制,但是被其确认的对象无法复制。也就是说,非零的边缘成本由被那些确认信息继承下来。

  提到这个神话的主要目的是声明它与开放源码的经济价值的讨论无关;就象我们在后面将会看到的,即使假设软件是符合制造业产品(非零)价值结构,仍是如此。所以我们没必要钻软件是否应该免费的牛角尖。


5. 驳斥公用悲剧说

  质疑主流模式,看看我们是否能建立另一种模式——对是支撑起开放源码协作的原 因作出有力的经济学解释。

  这个问题需要从两个不同的方面考查。一个方面是我们要解释那些为开放源码作出贡献的人士的个体行为;另一方面,我们需要理解那种支撑象Linux和Apache这样的开放源码项目的经济力量。

  Hardin的著名寓言告诉我们:设想一个乡村农夫们拥有一片公用绿地。他们在那里放牧牲畜。但是放牧使公用性退化,撕裂草皮,留下泥泞,很难恢复。如果没有对分配放牧的权利达成协议(或约定)以防止过度放牧;所有牧主都还会赞成尽可能快的增加牲畜数量,以便在公共绿地变成泥潭之前榨取最大的利润。

  大多数人使用象这样的直觉的合作模式。这事实上并不是对开放源码——他们是(供不应求的)自由骑士,而不是(被过度使用的)过剩的公共货物——经济问题的正确判断,不过,我在大多数未充分考虑的反对声后面都听到过类似的看法。

  公共拥有的悲剧预言只会出现三种结果。一种是泥潭;一种是为了村民的利益,强制性的使用某种分配协定(共产主义的解决方案);第三种是公用被打破,村民各筑藩篱,保护自己的一小块草地(私有制的解决方案)。

  当人们本能的的将这种模式应用于开放源码合作时,因此预计它只有很不稳定的短暂的半衰期。因为没有明显的方法去强制在互联网上工作的程序员执行工作时间分配策略,这种模式就断言公用将会打破,结果是出现各种各样的封闭代码软件和反馈给公用的工作量迅速减少。

  事实上,经验清楚的显示出了与之相反的趋势。开放源码开发的广度和深度(由Matalab和freshmeat.net的每日宣布的数据统计)在稳定增加。很明显,这些都得出“公用悲剧”模式无法描述事态的发展。

  答案的一部分正是建立在软件使用并不降低其价值的事实基础之上。实际上,对开放源码软件来说,当用户被其修正和特性(代码补丁)把握之后,软件的广泛使用还会增加其价值。公用悲剧被颠覆了,越放牧,草长得越高。

  答案的另一部分是基于很难收取那些为公用源码基础所作的小补丁的市场价值。假设我为一个恼人的bug写了个修正,而且有人认为这个修正值钱;我如何才能从那些人手里拿到钱?对于这种小额的,通常也是适当的付款,常规的付费体系如此昂贵竟成为真正的问题。

  比起价钱不仅仅很难收取,也许如何定价还要难得多。让我们想一想,假设互联网上已经拥有理论上完美的小额付费系统——即安全,方便,又不需要更多手续费。而你写了个补丁叫做“Linux内核的某某修正”。你该要价多少?在潜在购买者还没看到补丁时,他们又该如何判断值不值得为它付费呢?

  我们的问题就像F.A.Hayek的“计算问题”在哈哈镜中的变形——它就象个超市,即要估价补丁的功能值多少,又要相信定价是合理的以促进交易。

  不幸的是,超市方式有一系列的不足,所以补丁的作者——打补丁的黑客有两种选择:躺在补丁上收钱,或免费扔出去。第一种选择将一无所获。第二种也可能如此,不过或者它会促使其他人提供互惠的给予,以解决上面那位黑客所头疼的问题。第二种明显无私的选择,在这种游戏情况中,竞然事实上是自私的。

  在分析这种合作时,自由软件的开发所面临的问题会很重要(他们可能会工作在清贫,或没有足够的回报的情况下),这并不是由最终用户的数量决定的。开放源码项目的复杂性和沟通所带来的成本几乎完全和参与的开发者的数量成函数关系;拥有更多的几乎从不看源码的最终用户对此似乎没有任何益处。这只会增加在项目邮件列表中无聊问题出现频率,但是建立一个相关的常用问题列表,不理睬那些显然不读FAQ的人(事实上这已经是通用做法),可以很容易解决这个问题。

  开放源码软件的真正最重要的自由软件开发问题是提交补丁功能时的磨合成本。可能的贡献者在声望上小有收获(见《开拓智域》一文),而没有金钱上的补偿,想着“根本不值得提交这个修订,因为我不得不打补丁,写修改记录,在FSF任务文件上署名...”。因为这个原因,拥有大量贡献者(其次才是成功)的项目很强壮。与之相反的是,每个有许多相互有制约关系的项目都需要有从始到终的贡献者。这种磨合成本就像政治一样呆板。总之,自由软件项目本身可以向你解释为何松散,无组织的Linux文化,比紧密组织且集中管理的BSD项目的努力,更能吸引合作能量的意向;以及为何自由软件基金会,也在Linux 崛起时重要性相对的减弱。

  这条路不管走多远都是好的。但是,这只是在黑客写了补丁并公布了这个补丁后的事后诸葛式解释。我们需要的另一半答案是对为何JRH最初会写这个补丁,而不是为拥有销售回报的封闭源码程序工作。作出经济解释。到底什么商业模式创造了开放源码开发繁荣发展的环境呢?


6. 封闭源码的原因

  在给开放源码经营模式分类之前,我们应该先大致地考虑一下封闭的代价。当我们封闭源码时,我们究竟在保护什么?

  比方说你雇了某人来编写和组织一个(不妨说)为你的生意专用的结算软件,那么和开放源码比起来,封闭源码一点也不会有助于解决问题。如果你想封闭源码,唯一合理的理由就是你想把这个软件卖给别人,或者不让你的竞争者使用它。

  比较明显的原因是你在保护销售价值,但是对95%的供内部使用的软件来说这没意义。那么封闭还有别的什么好处吗?

  第二个原因(保持竞争优势)还有待检验。假如说你把那个结算软件开放源码了,它流行起来,并且从社会上得到了改进。现在,你的竞争者也开始使用它了,他没有花开发费用就得到了好处,而且影响了你的生意。这是不是一种反对开放源码的理由呢?

  可能是——也可能不是。真正的问题在于你从分散开发负担中得到的好处是否多于由那些不劳而获的人带来的竞争损失。许多人倾向于为这类交易作苍白的辩解,方法是:(a)避而不谈从额外的开发帮助中得到的功能上的改进。(b)不认为开发费用是降低了,而是假定你无论如何也是要承担这些开发费用的,所以把它们作为开放源码(如果你这么选择的话)的代价是错误的。

  还有别的许多封闭源码的根本就是荒谬的理由。举例说,你可能误以为封闭源码可以使你的商用系统更加安全,不容易被破解或闯入。如果是这样,我建议你立刻找一个密码专家来诊断一下你的系统。真正的猜疑心很重的人都知道不能相信封闭源码程序的安全性,因为这是他们是从惨痛的教训中学到的。安全性是可靠性的一个方面;只有那些被彻底检查过的算法和代码实现才可能被相信是安全的。


7.使用价值集资模型

  使用价值与销售价值之间的差别让我们注意到的一个基本事实是只有销售价值本身受到了来自从封闭原码到开放原码这个转变的威胁;使用价值并没有。

  如果使用价值,而不是交换价值,的确是软件发展的根本驱动力;而且开放原代码的发展的确是比原代码封闭要更加有影响力和更加有效率,那么我们应该期待着去寻找一种环境,在这种环境中光是使用价值已能够完全地促使开放原代码向前发展。

  实际上,这样的几个环境模型并不难以找到。在这样的模型中,开放原代码的全职开发者的生存完全可以由(开放原代码的)使用价值来实现。

  7.1 Aapache的个案:(价值分享)

  假如你在为一个拥有高效性高可靠性网络服务器的商业公司服务。也许这个服务器是用来为电子商务服务的,也许是作为一个出售广告的高可视性的媒体输出装置,也许只是用来构建一个门户站点。你需要一天7小时的在线时间,你需要速度,还有规范性。

  那么你该如何做呢?这里有些基本的策略可以供你参考:

  购买一个私有的网络服务器,这样,你是在冒险相信卖方的宣传与你的需求是一致的,你在冒险相信卖方的技术竞争力能给提供完善的保障。即使假设这两个方面是有保障的,网络服务器本身也会由于缺乏规范的服务而出现问题。你只能通过卖方的经过挑选提供的几种工具来维护的你的服务器。这种购买私有的服务器的路子并非一个很大众化的方法!

  自己做一个!做一个自己的网络服务器在目前还是不可忽略的一种调剂办法;网络服务器并不太复杂,当然比浏览器要简单。一个专门用途的网络服务器可以做得功能专一但很好用。走这条路的话,你能得到你所需要的各种特性和自己的规范,尽管在其升级的过程中你要付出很多。或许你的公司在你离开或退休后,还会发现这个服务器有了这样或那样的问题。

  参加Apache小组!Apache服务器是有一个通过Internet交流的小组写出来的——小组成员都是系统管理员,他们相信比较明智的做法是将他们的能力集合起来去写,并提高一个单一方向的代码集而不是去花费时间各自同时写完全不相关的代码。这样做的结果是他们能够同时发挥“自己做一个”和大范围大规模测试代码的优势。

  选择Apache小组的优势很明显。到底有多明显,可以根据Netcraft的每周回顾来判断一下。Netcraft上说Apache服务器从其诞生起一直在稳定地夺取其他私有服务器的市场份额。1999年6月,Apache的各种版本占有了61%的市场份额<http: //www.netcraft.com/survey>;——没有合法的拥有者,没有组织机构,也根本没有合同制约的组织形式在背后操纵。

  总的说起来,Apache的故事提供了一个模式:软件使用者通过支持开放原代码计划而发现了这个模式,他们发现这样做能以最小的代价给他们带来越来越好的软件,比其他任何方法都要有效。

  7.2 Cisco的个案:风险均摊

  一些年以前,两个Cisco(网络产品制造厂家)的程序员被分配来写一个分布式的打印系统的程式代码用做Cisco的合作网络的应用。这个项目的挑战性很大。这个系统要使任意一个用户能在这个网络上的任意一台打印机上打印东西(而用户和打印机可能只是隔壁或者相隔几千公里),当打印机没有纸了或其他紧急情况系统要能够将任务导向另一台附近的打印机。系统还要能够将这一个突发时间报告给打印机管理员。

  他们两个对Unix上的打印软件做了一些很不错的修改,加上一些包的原语言,就做成了那项工作,但接着问题就来了。

  问题是两个程序员都不愿意在Cisco永远呆下去。结果两名程序员都将离开,而软件也会无人维护而“腐烂”(就是无法满足实际应用中不断变化的要求而失去其应用)。没有任何一个人愿意看到这样的情况在他自己或工作上发生,那两个程序员也认为他们已经做了Cisco公司要求他们做的事情,其他的问题已经不是他们的工作范围了。

  于是他们跑到他们的经理那里要求将这个打印软件的源代码开放。他们认为这样的话Cisco不仅不会失去什么反而会得到更多。通过协作鼓励用户和软件开发合作者的组织的发展,Cisco能够弥补因为软件原创人员的离开所带来的损失。

  Cisco的故事引出另一个模式:源代码开放使开发一个软件的风险被众多协作者分摊了而且投资分花费很小。所有的团体都发现原代码的开放,以及一个成员各自独立却互相协作的社区的存在将提供一个无风险的开发环境,而且这个环境是有商业价值的——它能够自己赚钱养活自己!


8. 为何销售价值存在问题

  开放源码使得直接获取软件销售利润非常困难。困难并不是来自技术方面的,因为源代码和可执行代码一样易于拷贝,并且版权法和许可证法的约束不同使得通过开放源码软件来获取销售利润比封闭源码软件难。

  真正的困难来自维护开放源码发展的许可证本身。因为三个相互推动的原因,大多数的开放源码许可证禁止对用户使用、分发、修改软件的权利进行限制,以此避免有人利用开放源码软件牟取直接利润。为了更好的理解这些原因,我们有必要对这些许可证所涉及的社会背景——黑客文化(可以访问以下网址: http://www.tuxedo.org/~esr/faqs/hacker-howto.html>)做一番探讨。

  原因与对市场的敌视无关,虽然这样的误解在黑客圈外至今广为流传。不排除有小部分的黑客确实一直对商业动机抱有敌意,但大部分的黑客还是愿意与一些以盈利为目的Linux集成商(如REDHAT、SUSE、Caldera)合作的。这也表明只要符合他们的意愿,大多数的黑客会乐意和商家合作的。如此看来,黑客们敌视以获取直接利润为目的的许可证的真正原因非常微妙也非常有趣。

  原因之一,对等原则。大多数开放源码的开发者允许别人利用他们的成果来获取利益,还有许多开放源码的开发者同时还规定不允许某一方(有时源码的开发者除外)出于特权地位来牟取利润。只要黑客们自己潜意识里打算从他们开发的软件或补丁中赢利,他们一般也愿意别人来与他合作,共同赢利。

  原因之二,意想不到的后果。黑客们发现在许可证中对软件的商业应用与销售进行限制和收费(为获得销售利润而通常采用的做法)会使得人际关系变得淡漠。其中一个特例就是所谓的“盗版光盘”,这本来应该鼓励的,但现在却被认为是违法和不道德的。总的来说,对用户使用、销售、修改、分发软件的权力(以及版权协议中其他复杂权利)进行限制会导致人们循规蹈矩,时时刻刻担心自己会犯法(这种担心会随着人们使用的软件包的增加而愈演愈烈)。这无疑是非常不妙的,因此简化许可证,解除许可证中的各项限制已成为大势所趋。

  原因之三,也是最关键的一个原因,就是代码共享。这种赠与文化在《开拓智域》一文中有生动的描述。某些许可证体系中用来保护知识产权或者限制直接获取销售利润的各项规定使得人们不能合法的实现代码共享,(如Sun公司的Jini Java“社区资源”许可证)。然而代码共享却被认为是最后一根救命“稻草”(《开拓智域》一文中大段大段的解释了这个问题),当软件维护者无力承担或者放弃对代码的维护时(比方说是一个非常封闭的许可证),代码共享就非常关键了。

  黑客群体对于对等原则还是有所妥协的,所以他们能够容忍一些象Netscape的NPL(NPL明确规定不允许非公开源码的产品使用开放源码的Mozilla代码)一样给予源码创作者一些特权的许可证。对于第二条原因,妥协的就少一些。而对第三条原因极少会作出让步(这也是Sun公司的 JAVA and Jini Community License计划遭到黑客们广泛反对的原因)。

  上述原因解释了开放源码定义中的各项条款。这些条款从一些典型的自由软件版权协议(如GPL协议,BSD协议,MIT协议以及Artistic协议)的细微特征中表达了黑客群体的思想,它们(虽然不是有意的,但客观上)使得获取直接利润极为困难。


9. 间接销售价值模式

  然而,还是有办法来开拓与软件服务相关的市场,从而获得间接销售价值。有五种已知的和两种正在探索的模式(未来可能会发展出更多的新发展模式)。

  9.1 失败的领导者/市场定位者

  在这种模式中,利用开放源代码软件为直接产生收入的专有软件来创造或维持一种市场位置。在大多数普遍的情形中,开放源代码的客户端软件带动了服务器软件的销售,或者可增加了门户网站的访问量/广告收入。

  网景公司(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测试阶段。

  9.2 糖霜策略

  这种模式是针对硬件制造商的(这里的硬件包括从以太网或其他外部设备直到计算机系统的所有东西)。市场压力迫使硬件公司书写和维护软件(从设备驱动程序、配置工具直到整个操作系统的级别),但是软件本身并不是利润中心。它是一项开支——通常是一项重要开支。

  在这种情况下,开放源代码是一种很好的策略。由于没有赢利上的损失,所以没有负面影响。销售商获得的是奇迹般膨胀的开发人员队伍,对用户需求获得更加快速、灵活的反应能力,并且通过同行检查而获得的更好的可靠性。而且可以免费得到了其他系统的移植。这种做法还可在很大程度上提高客户对公司的信任度,因为客户的技术人员可以花费了更多的时间根据自己的需要定制代码。

  有一些经常被销售商提出的反对开放硬件驱动程序源代码的理由。为了不把它们和这里的更加一般的问题搅在一起,我在附录里专门讨论了这个问题。

  开放源代码的“将来获益”的效果在糖霜策略中体现的尤其强烈。硬件产品有一个有限的制造和支持的生命周期,在那以后,用户就自己照顾自己了。但如果他们可以获得驱动程序的源代码,并可根据需要加以修改的话,他们就更可能高高兴兴的成为同一公司的回头客。

  糖霜模式的一个非常戏剧性的例子是苹果公司在1999年三月中旬决定开放它们的Mac OS X服务器的操作系统“Darwin”的代码。

  9.3 奉送食谱,开办饭店

  在这种模式中,开放源代码软件建立了一种市场定位,并不是为了象在失败的领导者/市场定位者模式中一样针对封闭源代码软件,而是针对服务。

  (我曾经把这种模式称为“奉送剃刀,销售刀片”,但是软件和服务二者的关联并不如剃刀/刀片所类比的那么紧密。)

  这是红帽和其他Linux发行商所采用的模式。他们卖的其实并不是软件代码本身,而是通过组合和测试一个能转的操作系统产生的附加价值,这个操作系统被担保有销路并与同一品牌的操作系统兼容。构成他们的价值的其他元素包括免费安装和提供可选的持续技术支持合同。

  开放源代码的创造市场的能力极为强大,尤其是对那些天生就作服务的公司来说更是如此。进来一个非常有教育意义的例子是Digital Creations公司,它是一个创建于1998年的web站点设计机构,专长于复杂的数据库和事务站点的开发。他们的主要工具,公司的知识财产——皇冠上的明珠,是一个对象发布系统,它曾经有过几个名字,现在被称为Zope。

  当Digital Creations的人寻找风险投资时,风险投资商仔细的估计了他们的预期市场份额,他们的人力资源和那套工具后,就建议Digital Creations开放Zope的源代码。

  从传统的软件工业标准来看,这看起来绝对是一个疯狂的举动。常规的商业学校认为象Zope这种核心知识财富是一个公司的掌上明珠,是在任何情况下也不能放弃的。但是那位风险投资商从两个相互关联的角度来考虑问题,一个是Zope的真实核心资产实际上是它的人员的大脑和技术;第二个是Zope作为一个创造新市场的标准而不仅仅是一个秘密武器会产生更多的价值。

  为了看清这一点,请比较两种情况。在通常情况下,Zope保留为Digital Creations的秘密武器。让我们假定它是一个很有效的武器。结果,公司可以在很短的时间内交付高质量的软件——但是没人知道这个秘密武器。满足客户是容易的,但是建造一个客户群体是困难的。

  然而那个风险投资商看到了对Zope系统开放源码可以为Digital Creations的真正财富——它的技术员工产生巨大的广告效应。他期望使用Zope的客户会认为雇用象Digital Creations这样的专家会比自己开发自己的Zope技术更加高效。

  Zope的一个负责人曾经非常公开的确认了他们的开放源代码策略“开启了许多其它方式无法开启的门”。潜在的客户确实反应了这种情况——所以Digital Creations公司迅速发展起来。

  另一个很近的例子是e-smith公司<http://www.e-smith.net>。这个公司出售定制的开放源代码的 Linux的Internet安全服务器。他们的一个负责人描述了e-smith迅速扩展的免费下载服务,他说“大多数公司都要考虑软件盗版问题,而我们把它看作一个自由市场。”<http: //www.globetechnology.com/gam/News/19990625/BAND.html>

  9.4 附加产品

  在这种模式中,我们出售开放源代码的附加产品。在低端市场,出售杯子和T恤衫;在高端市场上,出售专门编辑并出版的文档和书籍。

  O'Reilly集团是一个附加产品公司的很好的例子,他出版了很多优秀的开放源代码软件的参考资料。O'Reilly实际上雇用和支持了一些著名的开放源代码黑客(例如Larry Wall和Brain Behlendorf),并以次提高它在市场上的声望。

  9.5 未来免费,出售现在

  在这种模式下,我们以封闭的许可证发布软件的可执行文件和源代码,但是包含一个有关封闭条款的期限。比如,我们可以写一个许可证,允许免费的散发软件,禁止不付报酬的商业应用,并保证发布一年以后或开发商终止开发后软件将在GPL保护之下。

  在这种模式下,客户可以保证产品能够根据他们的需要定制,因为他们可以得到源代码。产品的将来也是得到保证的——许可证保证了如果始创公司失败后,开放源代码社区仍能够接管该产品。

  因为销售价格和数量是依赖于客户对产品的期望值,始创公司可以享受到比以封闭源代码许可证发行的软件更优厚的收入。而且,因为老的代码是在GPL保护下的,所以它可以得到同行认真的检查、排错和添加其他小功能,这样可以为原创者减轻75%的维护负担。

  这种模式被Aladdin公司成功的采用了,它创造了流行的Ghostscript程序(一个PostScript解释器,它可以把PostScript翻译成许多打印机的内部语言)。

  这种模式的主要缺点是那些封闭的条款倾向于抑制产品开发早期的同行检查和参与,而那时是最需要的大家的参与的时候。

  9.6 软件免费,销售品牌

  这还是一个试探性的商业模式。我们开放一项软件技术,保留测试包或一套兼容性标准,然后卖给用户一个品牌认证,保证他们对这种技术的实现和其他具有这种品牌的产品相互兼容。  (这是Sun公司应该对待Java和Jini的方式。)

  9.7 软件免费,销售内容

  这时另一种试探性的商业模式。想象一些象股票信息订阅的服务。价值既不在客户端软件也不再服务器商,而在于提供客观的的可靠的信息。因此我们开放所有的软件,出售内容订阅。当黑客们把客户端移植到新的平台上或者以不同方式扩展它时,我们的市场自动扩展了。  (这是为什么AOL应该开放它的客户端软件。)


10. 何时开放,何时封闭

  在考察了支持开放源代码软件开发的几种商业模型之后,我们可以来讨论一下何时开放源代码、何时封闭源代码才有经济意义这样的一般性问题了。首先,我们必须弄清楚每种策略如何盈利。

  10.1 靠什么盈利?

  封闭源代码的方式让你可以从秘密的比特中收取利润;另一方面,它阻止了其他同行对代码进行检验的可能性。开放源代码方式为其他同行检验创造了条件,而且你也不能从秘密的比特中获得利润。

  从秘密的比特中盈利很好理解;传统的软件商业模型就是围绕着它建立的。但是直到近来,其他同行检验代码的价值还未被很好的理解。然而, Linux操作系统使得我们对问题的认识更加清晰,这些认识我们本应在几年前从Internet核心软件和其他软件工程分支的发展历史中就应该学到——开放源代码的同行检验是得到高可靠性和高质量的软件的唯一可伸缩的方法。

  因此,在一个竞争的市场上,寻找高可靠性和高质量软件的客户会给那些开放源代码软件开发人员以回报,是他们探索出怎样在服务、附加值和与软件相关的辅助市场中维持一个稳定的收支循环。这种现象正是Linux令人惊讶的成功背后的原因,Linux在1996年的一片空白发展到1998年末的商业服务器市场的17%,而且似乎会在两年之内占领这个市场(1999年初,IDC预测Linux将在2003年成长的比所有其它操作系统的总和还要快)。

  开放源代码的一个几乎同样重要的作用是作为一种传播开放标准,围绕它建立市场的手段作用。Internet的戏剧性增长得益于没人拥有TCP/IP;没人有权封锁Internet的核心协议。

  TCP/IP和Linux成功的所造就的互连网络对世界的影响是显而易见的,开放的系统最终减少了信任和平等的问题——如果大家都能够看到底层结构是怎样工作的话,他们就会理所当然的更加信任它;人们更加喜欢一个所有人都是平等的底层结构,而不是一个某一方具有获利的特权并可以施加控制的底层结构。

  然而,其实为了向软件用户说明平等的重要性时,我们不必非要强调网络的影响力。没有哪个软件用户在质量和功能类似的开放源代码软件存在的条件下放弃开放源码软件,而去选择封闭源代码软件,非要让自己被某个供应商垄断控制才高兴。软件对消费者的事务越重要,这个问题就越突出——它越重要,消费者就越不能容忍自己被另外一方控制。

  最后,和信任问题相关的开放源代码的重要优势就是它的光明前景。如果源代码是开放的,即使发行者垮掉了,客户还是能掌握一些资源。这对于糖霜策略尤其重要,因为硬件趋向于较短的生命周期,但是作用更加普遍,并转换成开放源代码的增长价值。

  10.2 它们怎样相互作用?

  当从秘密比特得到的回报比从开放源码高的时候,从经济意义上说应该封闭源代码。当从开放源代码得到的收益比从秘密比特高的时候,那么无疑开放源代码更有意义。

  从表面上看,这是一个很普通的想法。但是当我们注意到开放源代码的回报比秘密比特更加难以度量和预计时,就是说回报常常被低估而不是被高估,这一点就不那么平淡无奇了。实际上,直到1998年初业界主流开始重新考虑遵从Mozilla发行源代码的前提时,开放源代码的回报一直被普遍错误的认为是零。

  那么我们怎样评价开放源代码的回报呢?一般的说这是一个困难的问题,但是我们可以象处理其他任何一个预言性问题一样来处理它。我们可以从观察开放源代码成功和失败的案例开始。试着抽象出一个模型,至少给出一个定性的感觉,在什么情况下开放源代码对投资者或追求最大回报的商业操能产生净收益。然后我们再用数据来细化这个模型。

  从《大教堂和市集》一文的分析中,我们可以得到开放源代码在(a)可靠性/稳定性/可扩展性至关重要时,和(b)设计和实现的正确性除了采用其他同行检验的办法外难以验证时具有高的投资回报。(在实践中多数重要程序都符合第二个标准。)

  当软件对一个消费者至关重要时,消费者为避免被一个垄断的供应商所控制的愿望提升了他对开放源代码的兴趣(也因此提升了开放源代码厂商的市场竞争力)。因此,另一个标准(c)当软件是一项非常重要的资产时(例如,很多企业中的MIS部门),封闭源码会把用户推向开放源代码一方。

  在应用程序领域,我们看到开放源代码底层软件创造了信任和平等的结果,随着时间的推移,一定会吸引到更多的客户,从而胜过封闭源代码底层软件;在这个迅速扩张的市场上占有较小的份额常常比在封闭的和迟缓的市场上占有较大份额还要好。因此,对于基础结构软件,开放源代码的方式比利用知识产权得到收益的封闭源代码方式会得到更高的长期回报。

  实际上,潜在用户根据发行商的策略推知它的将来发展能力,同时他们有不愿接受一个垄断供货商的本能,因为这将意味着要处处受到约束;除非已经有了一个压倒性的市场力量,否则你可以选择一个开放源代码的方式也可以选择一个从封闭代码直接受益的方式——但是不可能同时选择二者。(在别的地方可以看到类似的情况,举例来说,在电子市场上用户常常拒绝购买单独货源的设计。)这种情况的消极性可以消除一些:在网络占支配地位的地方,开放源代码似乎是正确的选择。

  我们可以总结一下这种逻辑:在(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)关键方法(或等价功能)是公共工程知识的一部分时

  10.3 Doom:一个案例

  id软件公司卖得最火的游戏Doom的历史展示了市场压力和产品演化怎样改变了封闭源代码软件相对于开放源代码的收益数量。

  当Doom在1993年末第一次发布时,它的主观视角,实时动画是极为独特的(条件(e)的对立面)。不仅因为它那令人叫绝的视觉效果,而且在很长一段时间内没人知道他们是怎样在低级的处理器上实现这些效果。这些秘密的比特可以获得非常重要的收益。而且,开放源代码的潜在收益很低。作为一个单独的游戏,这个软件(a)它的故障的代价很小,(b)不是非常难于验证,(c)对任何一个用户来说都不是至关重要的,(d)并不得益于网络。所以Doom 成为封闭源代码在经济上是很合理的。

  然而,Doom周围的市场不是静止的。竞争对手发明了它的动画技术的等价功能,其他的“主观射击”游戏比如毁灭公爵(Duke Nukem)等开始出现。当这些游戏侵蚀Doom的市场份额时,秘密比特的收益开始下降。

  另一方面,扩展市场份额的努力带来了新的技术挑战——更好的可靠性,更多的游戏特色,更大的用户群,和跨平台。随着“death match”的多人游戏模式和Doom游戏服务的出现,市场开始显示出对网络的依赖。所有这些需求都要求id公司在下面版本的游戏中花费更多的精力。

  所有这些趋势都提升了开放源代码的回报。在某一点回报曲线交叉,开放源代码成为id公司在经济上合理的选择,他们可以从诸如游戏扩展选集等第二市场上获益。在这一点之后的某个时间,事情确实发生了。1997年末Doom的完整源代码被公开发行。

  10.4 知晓何时放手

  Doom是一个有趣的案例,因为它既不是一个操作系统也不是一个通讯/网络软件;因此这远离了开放源代码的通常的明显的例子。确实,Doom 的生命周期,包括交叉点,可以作为今天的代码生态中应用软件的典型——在这个生态环境中,通讯和分布计算软件要求较高健壮性/可靠性/可扩充性、只能通过同行检验来验证,并且常常超越技术环境和竞争者之间的界限(包含信任和平等)。

  Doom从一个单机游戏演化到death match模式。网络计算越来越重要。同样的趋势可以从最重要的商业应用程序,如ERP系统看到。商务网络把供应商和客户更加紧密的联系在一起——当然,它们包含在整个万维网的体系结构之中。这种情况到处可见,开放源代码的回报稳步增加。

  如果当前的趋势继续下去的话,下个世纪软件技术和产品管理的核心挑战将是知晓应该何时放手——何时把封闭源代码转变为开放源代码体系结构,从而得到同行检验的好处,并从服务和其他第二市场上得到更高的回报。

  大家很明显都不想在任何一个方向上离交叉点太远。除了这个,等待太长时间面临着严重的风险——你可能会被一个走向开放源代码的同一市场上的竞争对手铲平。

  这个问题之所以严重的原因是,可以被吸引到某类产品的开放源代码合作者的用户群和专家群是有限的,而且这些人很难于转移。如果两个功能基本相同的竞争代码一先一后开放源代码,那么先开放的更加可能吸引更多数的用户和更多数的最激情的合作开发人员;后开放的则不得不吃剩饭。吸引来的人员难以转移,因为用户对软件已经熟悉,而开发人员已经在代码上投资了很多的时间。


11. 开放原代码的商业运作

  在开放式原代码的社区中,通常是以一种倾向于增强开放式原代码生产效益的方式来组织其自身的商业活动的。尤其在Linux的世界里,存在着一个具有重要经济意义的事实,那就是存在有许多相互竞争的发行商,而他们形成了一个与开发团体相分离的、独立的层次。

  开发人员写原代码,并且使得这些原代码在互连网上是可以被下载的。每个发行商都从这些可下载的原代码中选取一些,并将它们进行综合,包装,并且注册商标,最后将其买给顾客。用户可以选择发行商的产品,也可以通过直接从开发商的网站下载原代码而增补其自己已安装的发行版。

  这一分化出来由发行商形成的层的作用是为创造了一个非常易于改变、可对产品不断完善的内在市场。开发人员为了吸引更多的发行商和顾客的注意力,在他们软件的质量上彼此竞争。而发行商则为了从用户那里赚得更多的钱,互相在他们选择原代码的策略以及他们给软件带来的附加价值上竞争。

  内在市场结构中的第一特征就是网络中没有什么原代码是不可缺少的。开发商可能倒闭,即使他们的那部分底层代码没有直接被其他开发者所用,为吸引更多注意力而导致的竞争将倾向于尽快产生一个在功能上可替代的产品。发行商可能在没有破坏或修改开放原代码的情况下就破产了。整个开放式原代码的商业系统作为一个整体,与任何一个独立的封闭原代码的操作系统的发行商相比较而言,对市场需求有着更快的反应,并且在抑制巨大的波动及自我创新方面有着更强的能力。

  开放源码另一个重要的特征就是通过分工降低成本,提高了效率。开发商不愿经受传统的封闭原代码项目中那种例行公事般的压力,而是象这样来工作:没有来自市场方面的那些不得要领、分散注意力的表单;没有要求他们使用不适合的而且已过时的语言或开发环境的强制命令;没有打着突出产品的特性和保护知识产权的幌子要求用一种新的,不兼容的方式重新设计“轮胎”的命令;而且最重要的是没有项目完成最后期限的约束。这样,公司就不会在产品还没有做好以前,就匆匆忙忙地推出一个1.0版本,正如Demarco和Lister在从对“做完了再喊我”管理模式的讨论中所作出的评论(见《开发队伍与产品》一文)那样,这种模式通常不仅会有益于质量的提高,而且实际上有助于一项真正的研究成果以最快的速度进行传播。

  另一方面,发行商们可以专门从事他们能高效完成的事情。这样,他们就可以集中精力在系统的综和一体化,包装,质量保证及服务方面,而不用去考虑所需要的大量的资金问题以及使正在进行的软件开发保持其竞争力的问题。

  通过作为开放式原代码商业模式中不可缺少的一部分,即来自于用户的不断的信息反馈和监督,无论是发行商还是开发商都会比较诚实一些。


12. 成功的复制

  公用的悲剧也许并不在于他们对现如今存在的开放式原代码商业模式发展的适应性,但这并不意味着不存在任何理由去怀疑开放式原代码社区内目前的状况是否能持续下去。主要的参与者是否会随着风险的进一步增大而背叛共同的合作?

  这一问题可以从几种不同的层次来提出。我们的那个与“成功的公用”相反的故事是基于这样一种论断的,那就是个人对开放式原代码的贡献价值很难以量化的方式来衡量。但是这一论断对于像Linux的发行商那些已经拥有一部分与开放式原代码相连系的收入的公司来说,就没有太大的影响力了。而且,他们每天的贡献价值已经量化了。但是,现在这种合作角色稳固吗?

  对这一问题的研究将导致我们对一些问题有趣的思考,譬如现如今真实世界中开放式原代码软件的经济状况,以及什么才是未来软件业中真正的软件服务行业中的典范。

  从实际的角度来讲,适用于现存的开放式原代码社区的这一问题通常可以用两种不同的方式来提出。一种Linux将分裂吗?另一种是与第一个相反的,Linux将发展成为一个处于支配地位,类似于垄断性的产品?

  当暗示Linux将分裂时,我们不能不联想到20世纪80年代UNIX版本分裂的历史,许多人又重新开始思考历史是否回重演。尽管无休止的有关开放标准的讨论,尽管有许许多多的联盟,协作和合同,UNIX的所有权归属还是分裂了。事实证明卖方通过增加或改变操作系统设备从而使他们的产品与众不同的愿望比他们通过维持其兼容性,不断的减少独立软件开发商的进入障碍,以及降低维持与顾客的固定业务关系的总成本,来增大UNIX的整个市场份额的兴趣要更强烈。

  但是上述情况不大可能发生在Linux身上,这是基于一个很简单的原因,那就是Linux的所有开发商都被限制基于开放原码这样的根基来进行开发和其他运作。而且事实上,对于他们其中的任何一个发行商来说都不太可能保持他们产品的与众不同,因为使得Linux的原代码得以高效发展的许可证条款要求他们与所有的发行商一起分享原代码。任何一个发行商只要一开发出新的特性,他们有的竞争对手都可以免费克隆它。

  因为所有的发行商都深知这一点,所以甚至没有人想过要实施一个阴谋,一个和导致UNIX标准分裂的策略类似的计划。相反,Linux的发行商被迫以一种实际上对顾客和整个市场有利的方式进行竞争。那就是,他们必须在服务、技术支持、以及实际上能使得安装和使用都比较方便的设计方面进行竞争。

  共同的开放的原代码还去除了垄断的可能性。当Linux社区内的人们担心这一问题时,通常会抱怨一个叫“RedHat(红帽子)”的名字,而 “RedHat”是Linux最大的也是最成功的发行商,它几乎拥有美国市场上90%的份额。但是还有一个值得引人注目的事情,那就是在被大家期盼已久的 RedHat的6.0版本在1999年5月份宣布发行后的一段时间里,通过从RedHat自己的FTP站点下载光盘镜像,一个图书发行商和许多其他光盘软件发行商就已经开始以比RedHat更低的价格进行销售了,而且事实上在这段时间里RedHat的CD-ROM还没有真正的成批装船销售。

  但是,RedHat自己并未对此事怒不可遏,因为他们非常清楚的知道他们没有也不可能拥有他们他们产品中二进制数据中的任一个比特。因为 Linux社区里的社会准则不允许他们这样做。在后来的日子里出现了Johngil More的著名的论断,那就是互连网上的人将对互连网的检查制度解释为对它的破坏和一些例行公事的程序。基于此,对Linux负责的黑客们则巧妙地将企图控制原代码也解释为是对它们的破坏和一些例行公事的手续。对于RedHat来说,他们如果反对对他们的新产品在发行之前进行克隆,这一行为将严重地使他们未来吸引开发商们进行共同合作的能力大打折扣。

  也许就目前来说,以一种与法律相结合的形式来表达Linux社区准则的软件许可证制度正积极主动的阻止了RedHat对他们的基于开放源码产品的垄断。他们唯一能卖的就是一个品牌、服务以及与那些自愿付给他们钱的用户之间的技术支持关系。这不会让压倒性的垄断局面出现有太大的的可能性。


13. 开放研发和再开发

  投资者向开放源码世界投资的另一个原因就是要改变他。开发者逐渐感觉到他们可以从他们想干的事情中获得报酬,而不是用自己的正式工作的收入来维持他们对开放源码运动的爱好。象RedHat,O'Reilly Associates和VA Linux System这样的公司正在探索通过雇佣并维持稳定且能干的开放源码程序员来建立半独立的研发机构需要多大的投入。

  这种方式只有在公司通过迅速扩大市场所带来的收入能够足够用于支付那种研究实验室时才是经济上可行的。O'Reilly之所以能够负担 Perl和Apache的主要作者来完成他们的工作是因为经过努力公司能够出售和Perl以及Apache相关的书;VA Linux System能够让实验室有足够的经费来源的原因是随着Linux的繁荣,他们可以卖掉更多的工作站和服务器;RedHat可以负担他的高级研发实验室也是由于实验室可以不断提升公司的Linux产品的价值并吸引更多的用户。

  在将专利、商业秘密等知识产权看成是企业的掌上明珠的文化的熏陶中,这种思想(开放源码)对于传统软件产业的战略家来说简直是无法解释(尽管自由软件市场事实上在不断地扩大)。为什么你花钱来做的研究得到的成果却可以让你的每个竞争对手都可以无偿享用呢?

  看来可以有两个合理的解释。一个是随着这些公司继续在他们的市场中保持领先位置,他们就可以从开放研发中获得巨大的市场占有率所带来的回报。通过开放研发来换取“明天”的利润,这似乎有些天方夜谈,不过有意思的是要不是真的如此,为什么那些公司都毫不迟疑的容忍了自由的存在呢?

  在这个资本家都拼命盯着投资风险评估的世界上,虽然风险投资分析是必要的,但是这并不能很好的解释明星效应,因为实际上投资人自己也对投资风险不是很清楚。如果被问及,他们就会告诉你他们做了他们所从属的团体所认为是对的的事情。拙笔和前面所提及的三个公司的总裁非常熟悉,因此可以说明我所说的结论绝对不是骗人。实际上我还在1998年末亲自在VA Linux Systems公司干过一段,因此我可以对他们提出一些“正确的”建议,我发现公司对我所做的基本上没有任何反对。

  经济学家会问,那么如何为这些工作计算报酬呢?如果我们已经接受了前面提到的“做正确的事”的说法不是空洞的做作的话,我们接下来就会想到, “做正确的事”会给公司带来什么好处呢?对这个问题的回答既不令人惊讶,也不困难。实际上在其他产业,表面上的大公无私,实际上都是为了给企业赢得好的名气。

  为名气努力,并将此看成是一种可以在未来的市场中得到回报的无形资产,这已经不是一件新鲜事了。这些公司的行为显示他们正在建立信誉,这是一个很高价值的多么大的利益啊。他们很明确的希望能够不惜高价请到真正的高人来做项目,并非为了直接从中赢利,即使是在股票准备上市前资本非常匮乏的阶段也是如此。而且至少到现在为止,这种做法已经开始从市场中获得回报了。

  这些公司的头头们心里都十分清楚信誉对公司来说是多么重要。客户群中的志愿者们不仅帮助他们做研发,也是一种非正式的市场伙伴,这些都是他们的靠山。公司和用户之间的关系是非常亲密的,通常是建立在公司内部或外部相互信任的私人关系之上。

  这些现象增进了我以前从另一个角度所作出的推断的理解。象RedHat,VA和O'Reilly这些公司和他们的客户以及开发人员之间的关系和传统的制造业完全不同。这是一种非常有意思的特别模式,是一种知识密集型的服务产业。除了技术工业以外,我们还可以从法律界、临床医学界和学院中找到这种模式的影子。

  实际上,我们可以看出开放源码公司雇佣优秀的黑客和大学聘请知名教授之间有异曲同工之妙。在实现方式上,二者都有些象工业革命前贵族们对高雅艺术的投资方式,一些方面的相似性是显而易见的。


14. 由此及彼

  资金支持(当然也要从中获利)源码开放开发的市场机制仍然在迅速的发展之中。本文中所述及的商业模型并不是最终的定论。投资商还在不断从软件产业变革的结果中不断总结经验,这种新模式面向服务的而不是强调保护知识产权,他们将会在一个适当软件业在思想上的革命将给原来人们仅通过向5%的市场价值投资来赢利的方式带来好处;传统意义上服务业不如制造业有利可图(可是医生或律师会告诉你,服务业的创业者所获得的回报更高)。然而,当软件用户可以从自由软件产品中获得许多好处并可以节省开支的时候,从投资中可以获得更多的利润。一个类似的例子是从传统的语音电话网络向现在的互连网发展所带来的巨大影响。

  对于节约开支和更好用的承诺正在创造一个巨大的市场机会,许多企业和风险投资商们开始来开拓这个市场了。在本文的第一份草稿完成的时候,硅谷一家非常著名的风险投资机构开始下了头注,他们投资了一家提供24*7的Linux技术支持的服务公司,一般预计在1999年年底之前,会有几家 Linux厂商和一些与自由软件相关的股票上市,他们的融资应该会非常成功。

  另一个很有意思的发展方向是系统性的创造一个自由软件开发上的外包市场。SourceXchange公司<http: //www.sourcexchange.com/process.html>和CoSource公司<http: //www.cosource.com/>分别代表了两种稍有区别的将减价拍卖模式应用于开放源码软件开发的新尝试。

  整体的趋势已经很明显了。在前面提到的IDC预测中可以看出Linux会在2003年之前以比其他操作系统都快得多的速度增长。Apache 现在占有60%的市场份额,而且还在不断增长。互连网的传播是爆炸式的,象Internet Operating System Counter给出的调查报告显示Linux和其他开放源码系统已经是互连网上主机所采用的主流系统,而且在以比封闭系统更快的速度扩大市场占有率。不断开拓互连网领域自由软件的需要并不只是由编制更多的软件来决定,更重要的是各个公司的商业行为和软件的使用/购买模式使然。这个趋势现在看来正在不断加快。


15. 结论:自由软件变革之后

  在向自由软件形式过渡完成之后,整个软件产业将会是什么样子呢?

  为了回答这个问题,有必要根据软件所需要为用户提供的服务程度将软件分分类,服务体现了软件的开放性,这种划分又是与软件所业服务的市场化程度紧密相关的。这个提法的精髓恰好与我们日常所说的三个名词相似:应用程序(基本没有商品化的服务,没有或缺少开放的技术标准)、构件(服务商品化、标准性很强)、中间件(需要一些商品化的服务、有技术标准但是不完善)。当前(1999年)对于上面三种软件的典型例子就是字处理软件(应用程序)、 TCP/IP协议包(构件)和数据库引擎(中间件)。

  前面关于分配方式的分析向我们展示了构件、应用程序和中间件三种软件形式将会以不同的方式向自由软件体系过渡,以及他们各自体现出的自由软件与封闭软件相结合的形式。还需要指出的是,在软件业的某一领域自由软件普及程度还要受到那里的网络影响力是否很强,软件企业倒闭所带来的负面影响程度以及软件产品在多大程度上还是一种商业上敏感的资本资源等因素的影响。

  如果不局限于某个特定的领域,从软件业的整体角度考虑我们可以大胆的作出如下预言:

  象因特网、互连网、操作系统以及其他需要在竞争的软件各方互相交叉的底层通讯软件等构件产品会逐渐全部开放,这些软件将由今天象RedHat这样赢利的软件发行商或其他服务机构将会与用户团体来共同维护。

  另一方面,应用程序类型的软件会继续保持封闭的状态。这种软件通常是他们未公开的算法使用价值非常高或使用的技术非常先进,促使用户仍然愿意花钱去购买这些封闭源码的软件,同时这也意味着这种软件可靠性要求非常底,并且可能导致行业垄断的风险还在可以容忍的范围内。这种现象最有可能出现在网络影响比较小的垂直性市场领域中。我们以前提到的一个lumber-mill就是这种产品,1999年最亮丽的软件产品——生物分子结构识别软件也属于这一类。

  中间件,象数据库工具、开发工具或其他用于特定领域的高端应用程序协议软件包将是一种自由与封闭的融合。这些中间件软件产品是会逐渐走向封闭还是开放或许将取决于软件的破产风险,为打开市场而所需的成本越高的软件将更需要开放。

  不管怎样,为描绘一个完整的蓝图,我们仍然应该看到无论是应用程序还是中间件,这都是一个静态的划分。在前文“何时会开放”一节里面我们已经分析了对于任何一个软件产品都将要走过一个从理智的封闭到理智的开放这样一个生命周期,对整个软件产业来说同样是这个道理。

  随着关键技术的普及和标准化,随着商品化的服务在软件产业中所占的比重越来越大,应用程序会逐渐转化为中间件,比如在将数据库前端接口和数据库引擎分开以后,数据库接口就成为了一种中间件。当中间件产品所需服务越来越要商品化时,就轮到他们逐渐转化为开放源码的构件了,我们今天看到的操作系统的变革就是这种例子。

  我们可以预料到在未来,随着自由软件所带来的强大竞争力,某个软件的最终命运将不是走向灭亡就是成为开放构件系统的一部分。虽然这对于那些打算永远从封闭软件中赚取利润的软件企业来说的确是个坏消息,但是软件产业作为一个整体仍然是一种产业,那时新的高层应用软件将不断开放,私有化的智力资源垄断某个软件将只有一个有限的生命周期,最终将纷纷转化为自由软件。

  最后,我们要看到这种从封闭到开放的变革还是主要要由软件产品的用户来推动才能不断发展。越来越多的高质量软件将被创造出来并得到长期使用,而不是被某些人藏在密室里得不到发展。这种奇迹用Ceridwen的魔锅来比喻还不够恰当,因为魔锅变出来的食品如果不吃就会逐渐腐烂掉,而自由软件世界中的软件将是取之不尽的宝藏。在自由软件中你拥有最自由的自由,无论你是打算提供商业服务还是打算为他作出贡献,自由软件世界将向所有人提供一个不断积累、取之不竭的宝贵财富。


16. 参考文献和致谢

  [CatB]大教堂和市集 <http://www.tuxedo.org/~esr/writings/cathedral-bazaar/>

  [HtN] 开拓智域 <http://www.tuxedo.org/~esr/writings/homesteading/>

  [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 SourceGame <http://www.talula.demon.co.uk/games.html>.

  在完成本文的过程中,通过与David D. Friendman的几次激烈讨论帮我进一步提炼了介绍如何加强开放源码团体合作的“翻身的平民”一章。感谢Marshall van Alstyne为我指出了“热门信息产品”的确切含义,我欠了他一个人情。Indiana组织的Ray Ontko给了我许多有益的批评。还有许许多多在我今年6月发表演讲时的热心听众也给了我很多帮助,如果你是听众中的一员,你就会明白我指的是谁。

  在我公布这篇文章以后,我还通过电子邮件收到了许多关于自由软件发展模式的材料,这些材料不断充实了这篇文章的内容。Lloyd Wood指出了“将来获益”自由软件发展模式的重要性;Doug Dante提醒我注意“未来免费”这种商业模式;Lionel Oliviera Gresse帮我给一个商业运作模式起了一个更好听的名字;Stephen Turnbull对于无视自由骑士现象给了我当头一棒。


17. 附录:为何封闭驱动程序源码的硬件厂商会浪费投资商的金钱

  外围设备开发商,象网卡、硬盘驱动器或显卡的制造商,他们的传统作法就是将驱动程序的源代码封闭起来。但是这种现象现在已经有所改变,比如 Adaptec公司和Cyclades公司已经习惯于将他们的各种板卡的驱动程序源代码和相应文档公开化。不过要想让开放源代码成为一种普遍的作法还是有不少困难的。在本附录中我们就是打算澄清在商业领域中仍然维持封闭源代码体系的一些错误观念。

  假定你是一个硬件制造商,你也许会担心将驱动程序代码的开放会泄露你硬件如何工作的许多重要秘密,从而让你的竞争对手可以通过分析你的源代码来给你造成一种不公平的竞争环境。这种想法在三、五年才会将产品更新换代的时代里也许还站得住脚;但是今天即使将源代码开放,你的竞争对手也将不得不花费占整个产品更新周期的一大部分来琢磨你已经公开了的代码,因为现在产品更新的周期大大的缩短了,你的竞争对手将没有足够的时间来好好思考和革新他们自己的产品。所以说他们去研究你开放的源代码的时刻实际上已经钻进了你的圈套。

  不管怎样,在今天代码中的秘密不会被隐藏很久了。硬件驱动程序并不象操作系统或应用程序那么复杂,他们一般都很小,很容易被反编译和模仿,这种活连一个十几岁的电脑初学者也可以搞定,而且实际上常常也被这些人搞定。可以毫不夸张的说,世界上现有数以千计的为Linux或FreeBSD工作的有激情的优秀程序员,他们愿意为任何一种新的板卡编写驱动程序。由于许多种类的硬件设备有着相对简单和标准化的接口规范,比如常见的磁盘控制器或网卡,热情澎湃的黑客们即使在没有文档也不需要反编译已有的驱动程序的条件下就可以迅速的写出正确的驱动程序来,而且常常比原生产厂家还要来得快。

  即使遇到象显卡这样的复杂设备,也难不倒用反编译工具武装起来的牛人。这种工作即不需要花费很大的精力,也很难说是否违法,而且在全球程序员的共同努力下,已经可以对Linux做任何在法律上合法反向工程了。从Metalab网站查一查Linux核心和设备驱动程序库所能支持的硬件类型列表,你就会立刻明白前面所言非虚,Metalab的网址是:<http: //metalab.unc.edu/pub/Linux/hardware/index.html>。访问该网站时你还可以留意一下新的驱动程序正在以何等迅速的速度不断涌现。

  保守你驱动程序中的秘密从短期效应上来说还是有诱惑力的,但是从长期战略的角度来看则不可取,特别是当你的竞争对手都已经将源码开放的时候。如果你非要固执的封闭你的源代码,那就只能将那些代码烧到电路板上的ROM中,而只对外公开访问接口了。所以赶紧开放你的源代码吧,迅速扩大市场,你要相信自己有能力通过自身的不断思考和创新来吸引更多的本来属于你的竞争对手的潜在用户群。

  坚持走封闭的路线是一条死胡同,你的秘密将不可避免的被逐步暴露,你将无法得到自由程序员的帮助,也没有什么愚蠢的竞争对手会去花时间模仿你的设计。更重要的是你如果及早采纳开放的思想本来可以获得更广阔的发展空间,但是你却遗憾的错过了。由于你的设备太保守、缺少资料和固步自封,并且不能认识到你自己的错误,因此互连网上大部分的网络管理员和超过17%的商业数据中心所形成的巨大市场将把你的硬件设备从他们的采购清单中删除,而把目光转向其他开放的硬件厂商中去。


18. 本文档修订记录

你现在看到的是本文档的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的帮助下给了“热门货”一个更好的解释。