为什么要开放源代码

作者:David E. Jones jonesde@ofbiz.org http://www.ofbiz.org

更新时间:2001-5-17

介绍

作为软件开发人员,我相信开放源代码的概念。

开放源代码软件和传统软件公司的软件开发模型不同。传统软件公司开发一个软件,然后不断尽可能地多卖。当经济不景气时,传统软件公司会非常艰苦,但开发源 代码公司却仍然能够繁荣。开发源代码公司的另外一个趋势是,当管理、销售、市场从软件公司消失后,软件开发人员和客户都将获利。

关于开放源代码软件,有一件事情要说:不同类型的软件需要不同的商业模型。开放源代码的模型适合做企业级软件,但不适合做个人软件。开放源代码界的最大的 成功案例是那些成为基本构件块或者提供企业专业特性的软件包。我在这里描述的咨询模式将专注于公司用于更高效更大范围运营的企业软件。

软件质量和开发效率

我认为总的来说,开放源代码的软件比封闭源代码的软件有更高的质量。

当开放源代码软件被有众多不同兴趣的活跃小组开发时,他将工作得最好。这样,产品被更多的人看到,特别是源代码。特性更加仔细地被选择、设计和实现。

APACHE项目和LINUX项目是大软件包成功协作开发的经典案例,他们得到了业界的认可,因为他们稳定而且可靠。因此,基于APACHE和LINUX的产品已经越来越多了。

开放源代码软件公司和传统软件公司的比较

首先我声明我首选开放源代码公司,我将比较这两种商务模块。

有很多不同的潜在的开发源代码软件开发商业模型,正如有很多传统或者说封闭源代码软件开发商业模型。在这里将描述一个有成功潜力的开发源代码模型,然后在尽量在总体上比较这两种公司。

一个开发源代码商业模型是:以咨询为中心。这里不需要太多的管理,而仅仅需要传统软件公司CTO承担的管理职责。不需要销售、市场、行政。只需要一些会 计,毕竟这是开放源代码不等于无偿工作。这种模型的主要收入来于客户项目,安装,支持,培训,和其他活动,这些活动依据时间和原料负费。所有开发的软件是 开放源代码的,将放入到由本公司或者其他实体维护的开放源代码项目的代码候选库中。

这样能工作吗?公司没有销售、市场、管理人员,能存活吗?组织中这些人可能的确有用,但由于人们主动找到开放源代码项目,因此这些市场和销售人员不再需要,而且在和项目相关的特殊兴趣小组中,团体会自然产生。

这样,开放源代码的公司真的就能够盈利吗?目前,IBM宣布,超过一半的收入来自服务,而并不是产品licensing或者销售。许多组织并没有产品,只有服务,但二者兼备看起来最好。

在传统的软件公司,利润分配到哪里去了?通常20%左右或者更少的预算分配为开发费用。当公司出售开发时间时,他们可以盈利不少,通常每小时$150-$200,但给开发人员仅仅每小时$30-$50。为什么有如此大的差别?公司里其他角色还能提供什么?

即使给了传统软件公司从产品和服务中赚的钱,他们仍然会设法花掉更多,并很容易的就倒闭了,尤其在不经济不稳定的时期。

项目和产品特性应根据客户需要创建。客户有权去选择他们希望的特性,并且能很便宜地从他们的商业模型中得到支持。客户不再需要按照某个软件公司所想象的方式运作他们自己的商务。而且,开放源代码的公司不会受经营者、股东、或者风险投资的限制。

当市场、销售和所有权管理消失后,从服务中得到的钱可以满足开发、服务和很少的行政管理。这样,谁获利了呢?开发人员和客户。谁损失了呢?传统的企业所有者、管理人员、和市场、销售人员。这样谁会憎恨开放源代码呢?

开发人员的利害考虑

有趣的事情是,许多软件开发人员和客户都并不喜欢开放源代码的模型。的确有一些想法值得关注,但如果处理正确(就像传统软件公司必须正确处理一样),开放源代码的公司可以成功,而且客户能够获利。

开发人员关心工资。大多数开开发人员不习惯对他们自己工作的拥有任何权力,他们用此交换得到薪水。不幸的是,当他们离开公司时,通常会导致很多的法律争 论,因为公司希望给开发人员“洗脑”。在咨询公司,这不可能发生。咨询公司,或者咨询者,经常主张软件开发者和该项目的资助人不是独占使用软件的,而是相 反,可以几乎毫无限制地使用该软件。

在开放源代码的软件项目中,开发人员不必担心一旦他们离开,他们会失去工作。他们可以在未来的项目中继续使用该项目。同时,如果公司破产或者某个客户中途 停止支持,会发生什么事情?因为是开放源代码的,最近的工作通常是发布了的,以后或者客户将知道软件有什么特性,这样有可能有人会感兴趣,并支付开发人员 薪水来完成项目。

开发人员将也会因为得到公众对他们的工作的认可而获益,如果他们干得不错,就可能找到很好的工作。即使在咨询方面,通常也有很吸引人的收益,因为公司都依靠优秀的人来支持运行他们商务的软件。

客户的利害考虑

客户通常也有许多的考虑。主要的一个是支持程度和产品以及公司的可靠性。如果产品有问题,或者找不到某个功能,客户该怎么办?如果软件的制作者倒闭了,客户该怎么办?

大多数的传统软件公司在初始购买中包括了在有限的时间内的基本支持服务,此外要继续得到最基本的支持服务,客户需要再支付维护服务费用。我在复杂软件中的 经验是:如果你有一个棘手的问题,你将求助于他们的咨询师,他们将在一定的时间和原料的基础上解决问题,有的做得好,有的则不。

传统软件企业的共同谎言是:软件很好,值得LICENSE的费用;我们将包括软件的安装和支持(未说明其程度)。通常服务程度没有在license中说 明。软件公司希望尽量减少服务,客户希望从license中得到更多的服务,他们为此相互争斗。有时客户为此付诸法律手段。

对于你的问题将如何解决,开放源代码的软件公司将很诚实,并会提前告知:你告诉大家问题的所在,我们给出时间和成本的预算,你决定是否接受,或者改变你的 需求,相应的问题解决方案也就去掉了。一些问题无需如此复杂。在新闻组发个帖子,将得到各种不同的人的查阅,因为他们也在找零活,如果问题很简单,也将有 人愿意做,因为他们建立了和客户的良好关系,这样以后的工作或许会有更好机会。

事实上,客户从传统软件公司的质量保证和承诺的含糊之词中不会得到什么。他们从相关的有责任心的软件开发人员那里得到好的服务品质。一旦如果一个开发人员的工作对客户没有价值,可以去找该团体的另外一个开发人员,这样开发人员总让客户高兴。

如果开放源代码项目倒闭,客户将会碰到什么麻烦?这很少发生,但即使发生,客户将有得到很多在传统公司倒闭时不可能得到的东西。即使是大的传统软件公司也 有可能在困难时倒闭。客户将仍然能够访问团体的剩余部分,如果兴趣足够团体的的一部分可能继续进行并重新启动项目。这样客户将仍然能够访问团体这的开发人 员以帮组他们修改问题。

如果产品改变,客户将碰到什么麻烦?这个领域,开放源代码软件有很大的优势。一个开放源代码的产品/项目在你最初实施它的时候没有license的费用。 唯一的费用是安装、培训和定制。对于开放源代码的新版本,费用和新购买或者安装相同,除非客户已经对软件有了经验。这个价格比购买一个升级license 便宜得多,或者更坏的,还需要支付licence维护费用。

对于客户,开放源代码软件另外一个关注的事情是,随着项目的进行,很多东西发生改变,甚至会影响到他们已经做过的一些定制。这样定制将需要重做或者修改。 如果定制有很好的记录,成本还可以控制。实际上,在开放和封闭源代码产品中这都存在。在开放源代码中,这至少简单一些,因为客户能看到项目正在做什么以及 以后计划做什么。这也能在定制前辅助决策,以避免发生冲突。

投资人的利害考虑

在开放源代码公司,投资人通常有一个不同的角色。通常投资人也是客户,这样用于客户的东西也应用到他们自己。

在开放源代码的软件公司,想从中盈利的投资人怎么样呢?为了使项目启动,创造一些潜在客户可能感兴趣的东西,投资人是很有必要的。但通常,开放源代码项目 并不是如此。一些有经验的开发人员能一起捐出一些能让客户和消费者感兴趣的东西,接着客户和消费者会支付开发人员薪水以开发他们希望的一些特性,这样公司 就产生了,但没有“投资人”。

如果一个开放源代码的软件公司希望得到帮助,以实现发展,投资人是否是一个很好的方法呢?投资人对开放源代码运作的想法又如何?许多开放源代码的商业模型很难进行,是因为有投资人感兴趣了。

投资人通常希望看到产品在某个成本下创建出来,接着他们不增加太多成本就卖很多次。这听起来是很方便,但对于构建复杂的企业软件的公司来说,这个商务模型几乎是个传说。复杂软件,通常即使是简单软件,还需求培训、支持和定制服务。这就是真实的世界。

明智的投资人会从开放源代码软件公司获利不少,如果他们知道公司是什么不是什么的话。在上文的咨询模型中,几乎所有的收入都是利润。因此,一个收入分配协 议还是可行的。这可能开发人员来说,可能没有吸引力,因为他们实际上是在出卖自己将来的部分薪水。同时,存在问题是,如果负担太重,开发人员可能会选择放 弃公司,而在公司外继续开放源代码项目的工作。

开放源代码的封闭代码扩展

另一个可能盈利的商业模型是,在开放源代码软件的基础上构建一个封闭代码软件。虽然这些封闭源代码的软件基于开放源代码的软件构建,他们将仍然有封闭源代 码公司上面所说所有的各种问题。这种做法的主要优点无非是加快了开发的时间,既然开放源代码软件已经完成了大部分的工作,而后只需增加模块或者扩展以丰富 其不足的部分。

基于开放源代码软件的封闭源代码软件客户有一个优点,就是费用低,因为大多数的功能是免费的和开放源代码的。这个产品可能也更加稳定,因为开发人员使用团体所认可的原则和方法去构造他们的软件。

此模型的一个难题是,客户可能期望封闭源代码提供商去支持开放源代码部分,这将增加费用。因为对于软件公司,这是的最重要的费用之一,对于客户,把传统软件的含糊保证扩展到开放源代码部分可能要增加支出。

结论

从开放源代码公司得到强夺的收入是不可能的。开放源代码公司给他们的客户一个很大的东西:如果服务水平很低,客户不必继续支付,他们可以另寻其他人。这有 什么好处?结果是,软件开发人员将对他们的工作很负责,以免失去客户。客户将为他们得到的服务而支付。他们不会得到一个公司的愤怒雇员,支付3到4倍的金 钱来供养公司的其他客户并不关心的角色。客户不再和公司支持的一个产品捆绑起来,而可自由得到他们从项目中所想要的东西。