今年年初,针对开源模型是否在 21 世纪软件服务化 (SAAS) 经济中注定失败的争论与质疑纷至沓来。在这些讨论中的一个思路集中围绕着新类型软件许可的创建,它可以有效地保护源代码的可用性和作者署名,同时,还能拒绝同意授权于某些作者乐此不疲的自由,特别是自由显示有别于所谓署名的用户界面。
我也在 license-discuss@opensource.org 上参与讨论由所谓署名许可带来的这一问题,但是,我一直计划在这些讨论的另一方面写下某些想法,也就是说,一个现有的许可如何在所有方面鲜明有效地保护三个方面——作者、用户及其他开发人员。
看一下 R project 和 GRASS。这两个项目都是由 GPL 控制的。无论是在它们所包含的技术(数百个高度专业化的模块)方面,还是在使用它们和能够帮助它们的委托人方面,它们都具有令人难以置信的广度和深度。最近,我一直在想:它们都具有高度模块化的架构,可以鼓励多种使用社区,但是,它们的软件许可还能够保证仅依靠架构所无法保证的一致性。为了测试这一假设,我已经开始考虑,如果它们由一个类似于 BSD 的许可提供支持,那么这些项目该是什么样呢?
GRASS 和 R 都能够提供集成模块,从而使以 GRASS 为中心的用户能够使用 R,或者以 R 为中心的用户能够完全利用 GRASS。GRASS 和 R 还可以针对PostgreSQL 数据库实施集成模块,而也可以获得特权,从而使以 PostgreSQL 为中心的用户能够延伸到 GRASS 和 R(反之亦然)。开源数据库 PostgreSQL 由 BSD 许可支持,BSD 许可是一个经 OSI 批准的许可,它已经鼓励了无数新生力量尝试有关 PostgreSQL 的商业支持产品。如今,EnterpriseDB 和 GreenPlum 都可以提供基于开源 PostgreSQL 的专有(闭源)产品,就像 Apple 提供基于开源 BSD 操作系统的闭源 OSX 那样。EnterpriseDB 和 GreenPlum 都在针对 PostgreSQL 开发技术创新,但是,因为有些创新是专有的,不能与社区共享,所以,我觉得 PostgreSQL 正在失去某些“人人为我”和“我为人人”的魅力,而这些却是 GRASS 和 R 所享有的。所以,虽然 PostgreSQL 项目确实可以从其整体开源公民中充分地获益,但是,有风险投资支持的创新者却将这些公民视为第二级别和有条件的。
上个月,我在 GRASS 邮寄清单上看到一条线索,它认为需要从一本著名的数学手册和参考书中清理掉所发布代码实施算法。其原因是:在该手册的版权中声明的权利与 GPL 并不符合,因为他们并不支持类似共享这样的 GPL 许可需求。它一方面带来了严重的干扰,使人觉得版权可以终止数学算法,而另一方面,它鼓励 GRASS 社区迎接由 GPL 提出的挑战,那就是真正的共享和类似的共享(没区别)。我可以很轻易地想象出,如果 GRASS 项目由 BSD 发布许可,那么它将面临着无数的压力(特别是来自所有由风险投资支持的新生力量),需要完全接受非自由条款,并创建本应获得的一个又一个许可特权的 GRASS 分支(刀片?)。在这种情况下,BSD 型软件许可将削弱(而不是加强)项目治理的解决能力。
我一直对数学很感兴趣,但是如今,无论何种原因,我都已经决定在这方面做点什么。我一直在购买和研读书籍,并使用 R 和 R 所提供的很多模块和数据集。专有数据和数学方法在众多文献中的普遍程度令人惊讶和失望。然而,R 项目加快了这一趋势,我还是认为 GPL 明确通知了 R 项目管理者,由此开发和分销产品。我再一次认为,如果 R 项目由类似 BSD 的软件许可支持,那么它将分成数百个专用模块,可以发布价格,但是社区将无法获得它们。最重要的是,我将不可能在如今 R 所支持的所有数不胜数的规则中实践我的数据好奇心了。
现在,本文的主要观点出现了:在社区中建立起相当强的力量,并可以从中建立商业机遇,是这种方式更为重要?还是,定义一个特定的商业模型,然后试图吸引社区使用该模型,这种方式更为重要?这不同于如今现代农民所面临的两难选择:是围绕可用于给定粪便包的工业肥料和资金设备设计农场更好呢,还是专注于使土壤尽可能地健康,并针对可能购买由这片土壤产出的产品的买家寻找市场更好呢? Polyface 农场的 Joel Salatin 讨论并证明了后者——对于相关的所有人和所有事务来说,专注于建立,而不是耗尽土壤会更好。他围绕着完整性而非便利性创建了繁荣的商业。我认为,成功的开源模型解释使强有力的社区就像肥沃的土壤,而 GPL 无与伦比的普及率源自于它保持并保护了整个社区(甚至达到政府水平的)的完整性。
我并不是要预测所有其他经 OSI 审批的软件许可都要先于 GPL 而濒临灭亡。相反,我认为能够引起兴趣并值得考虑的是,软件许可授权如何通知管理者,以及管理者如何保持使用社区的长期持续性。我认为,最好的方法就是支持像 SAAS 这样的新软件模式以及可以与之协同工作的新商业模型,始终将社区的收益放在首位,然后根据社区的创建能力建立市场战略。这只是一个想法。