非开源 vs 开源:《大教堂与集市》

开源软件的开发模式与传统商业闭源软件的开发模式的对比,有一本专门的书,叫做《大教堂与集市》,有兴趣可以读一下,看看两种模式的对比解读。

如果没时间完整读这本书,也可以用搜索引擎搜索一下相关的读书笔记或摘要,比如商未央在简书上发表的 大教堂与集市摘抄

开源开发模式与闭源开发模式

早期的软件开发,因为开源基础的原因,开源开发模式的效率和成就远不如商业公司的闭源开发模式。后来,经过一段时间的积累,开源软件和种类有了一定数量基础以后,开源开发模式(主要是指社区开发),比如Debian或者Redhat,开始形成明显的良性循环,开源开发模式的优势也开始显现出来,并在某些领域超过闭源开发模式,并且还在继续扩大这些优势。这些开源开发模式与传统的商业开发模式相比,主要有以下特点:

第一,开源开发模式更容易吸引用户。

开源软件,尤其是不限制商用的开源软件,相比于商业软件产品,最显著的特点就是,不需要花钱购买,即不产生费用,且可用于商业目的。

这个成本上的特点,吸引了大量的个人用户、新用户和非常用用户,以及所谓的非专业用户,因为这些群体对于软件产品的要求与商业软件不同。这里的不同,是指用户对于软件要求并不高,功能也不需要很复杂和全面,只需要满足其某些基本需求即可。同时,这些用户有意愿也有能力花一些时间去学习开源软件。学习的途径多种多样,这也得益于目前网络学习方式的快捷以及网上免费学习资源的多样性。而商业闭源产品,则需要花费较大的成本,包括时间和资金,来完成这一步骤。

由此,衍生出第二个问题,因为用户的主动选择与主动学习特性,导致用户与开发团队产生交流的可能性大大增加,形式主要是论坛、聊天室与邮件列表,内容包括咨询使用问题、提交bug等。并且,已经掌握开源软件使用的用户,会主动在论坛、聊天室及邮件列表里参与问题的回复,帮助开发团队解决很多初级和中级的提问。这样的活动形式在无形中为开源软件产品做了大量的测试和反馈,包括故障报告与新功能的需求提交。

这样的结果对于开发人员而言,意义十分重大。因为开发人员可以直接与最终用户接触,中间没有客服人员,所以开发团队可以最快速度的得到反馈,继而对开源软件产品进行改进,然后发布新版本。而对于传统的商业软件而言,因为使用闭源的开发模式,所以上面的过程会非常谨慎,一方面需要花很高的成本来实现,另一方面如果把未成熟的产品推向市场,需要考虑用户的忠诚度问题。用户对于开源软件产品自身问题的容忍程度,相对会高于闭源软件。一方面是因为没有花钱,另一方面,也是出于爱好。

说到这里,我们举一个典型的例子:redhat公司的RHEL产品,是基于Fedora,而Fedora的开发则是由社区通过开源开发模式完成的,大量社区成员/非社区成员免费对Fedora进行使用、反馈、提要求等,redhat公司一一消化改进,最后据此慎重推出面向企业的RHEL产品,然后利用此产品向企业收取服务费用。利用开源开发模式来吸引用户参与,然后形成拳头产品,再用拳头产品向企业用户收取服务费,从而产生利润。

第二,目标的巨大差异。

开源开发模式的目标与其产品的最终目标一致,都是最大限度的扩大使用人群,任何人群;或者,我们可以理解为,开源软件开发者的目的,就是为了让软件更好用。而传统企业的商业软件的开发模式,无论是开源还是闭源,其开发都需要为企业的盈利目标服务。这个目标上的差异,导致了一个结果就是,开源软件发展会越来越壮大,而闭源商业软件则会壮大到一定程度和时间以后,被开源软件超越。

开放模式,即主要目的或者唯一目的,就是扩大用户群,所以,开发人员会竭尽所能来改善其开源产品,就为了能够让更多的人来使用他的开源软件。例如LibreOffice开发人员对哪些bug问题进行改善,以及改善的速度效率。

而传统的商业软件则不同,商业公司唯一目的是盈利,所以向所有人提供其产品的这一想法,其实并不符合其商业利益,或在某个阶段不符合,最典型的,就是微软的office不支持linux平台。

开源的开放模式,导致开源软件开发真正做到一切以用户为导向,产品的开发完全以用户为第一要素。而企业的商业软件,则永远要考虑盈利问题,在这个目的背后,很多用户需求会成为障碍,从而被商业公司所抵制。而这种抵制,会导致其商业软件在某些地方体验对比变差。比如微软的office使用google字体导出PDF后,字体变图不可选的问题。参见附录。

开放标准/开放文档格式带来的一个的好处,就是融入广泛的开源生态。

以前一直有人以手机系统安卓为例,来说明开放产品的生态。这很典型,但主要集中在开发层面,不是应用层面。作为消费者,没有人关心安卓是否开放及开放生态如何,好用就行。所以我们可以看看其它的例子。比较典型的,就是微软把自己的office格式ooxml强推成iso标准的事件。这件事在IT行业,很多人都只从表面上解读,这是没有真正理解开源生态,尤其是没有理解应用层面的开源生态所造成的遗漏。正确的解读,应该是从开源生态的应用层面来看这个问题。

从开源生态的应用层面来看,微软这个做法,大概率是因为它已经意识到,不这样做,自己早晚会死掉。比如OmegaT或者SDL Trados。

企业的商业封闭模式的另一个明显的问题,即版本升级。通常,商业软件版本升级是需要付费的,这个结果其实是软件升级过程反向为商业软件公司提供了一个思路,即通过升级版本来向用户收取更多的费用,从而制造更多的利润空间。这种思维模式已经成为商业软件的基因,而造成这一行为的根本原因,是因为商业软件的主要目的,是盈利;而通过升级来赚取利润,正好符合其盈利的原始目的,且在实现上更容易操作和更随意。在今天,这已经成为商业软件的 毒药。而开源自由软件则没有这个问题,当前版本免费,后续版本也永远免费。