4.6 选择闭源的理由
在给开源商业模式分类之前,我们通常应该先讨论闭源的排他性收益。当我们选择闭源时,我们究竟在保护什么?
假设你雇佣某人为你公司定制开发(比如说)一个专业的会计软件包,这个问题并不会因为源码是闭源而非开源就能更好解决。你希望源码闭源的唯一理性原因,要么是你想把这个软件包卖给其他人,要么就是想阻止竞争对手使用它。
显而易见,你在保护销售价值,然而这点对于95%仅供内部使用的软件并不适用。那么,闭源还有其他什么好处呢?
第二种情况(保护竞争优势)值得稍加审视。假设你把那个会计软件包开源了,它开始有了热度,并从社区的改进中获益。现在你的竞争对手也开始用它,不仅无需开发成本就能获得好处,还在侵蚀你的业务。这是反对开源的理由吗?
也许是,也许不是。真正的问题在于,你通过摊开发工作量所获得的收益,是否超过了搭便车者激化竞争所造成的损失。许多人对这种权衡的推理往往有失偏颇,原因在于:(a)忽视了招募更多开发人员所带来的功能优势,以及(b)没有将开发成本视为沉没成本。既然假设成立,你无论如何都必须支付开发成本,因此(如果你选择开源)将其视为开源的代价是错误的。
另一个经常被提及的理由是:担心公开某个特定专业会计功能的源码,可能等同于泄露你的商业机密。这实际上不是支持闭源的理由,而是反对劣质设计的理由。在编写得当的会计软件包中,业务知识根本不应该用代码来表达,而应该用由会计引擎实现的模式或规范语言来表达(一个很相近的例子:数据库模式将业务知识从数据库引擎的运行机制中解耦)。这种功能分离将使你能够保护核心资产(模式),同时从开源引擎的行为中获得最大收益。
还有一些闭源的理由是完全不理性的。例如,你可能误以为闭源会使你的业务系统更安全,能抵御骇客和入侵者。如果是这样,我建议你立即去找密码学家谈谈,保管能瞧好你不切实际的幻想。真正的安全业老鸟深知闭源程序并不安全可靠,因为他们从惨痛的经历中吸取了教训。安全性是可靠性的一部分,算法和实现只有经过彻底的同行评审,才可能信任它是安全的。