Chapter 5. 金钱

Table of Contents

参与的类型
长期雇佣
作为一些个体出现,而不是一个整体
公开你的动机
钱不能让你可爱
契约
评审和接受变更
案例研究:CVS密码认证协议
资助非编程活动
质量保证(也成为专业测试)
法律建议和保护
文档和可用性
提供主机/带宽
市场营销
记住你正在被注视着
不要痛击竞争开源产品

本章仔细检查了如何为自由软件环境带来资金。这不仅仅是在自由软件中被支付工资的开发者的目标,也是他们的经历,那些需要理解开发环境社会动态性的人的目标。在接下来的章节中,假定收件人(你)是被付费的开发者,或者是管理这类开发者的人。对于二者的建议基本相同;如果不同,有意的读者可以从上下文中分清。

对自由软件开发来说,公司投资已经不是一个新的现象。许多开发被非正式的资助。当一个系统管理员写了一个网络分析工具来辅助她的工作,然后把它发布到网络,接受来自其他系统管理员的bug修正和特性贡献,这就产生了一种非正式的合作组织。这个合作组织的资金来自系统管理员的薪水,而它的办公室空间和网络带宽是捐助的,尽管是通过其所工作的默默无闻的组织。这个组织从投资中获益,当然,尽管开始时他们不会意识到这一点。

现在的一些变化是这种力量已经更加正式。公司已经观察到开源软件的好处,在他们自己的开发中直接参与其中。开发者也更能预期真正重要的项目至少能获取到捐助,甚至可能是长期的赞助。而金钱的出现并没有改变自由软件开发的基本动力学,它已经极大地改变了发生事情的范围,无论是从开发者的数量来说,还是每个开发者贡献的时间。对于项目的组织,以及参与者的交互也有影响。这个问题不仅关于金钱如何花费,也关于如何测量投资回报。他们也关于管理和过程:公司层级指挥结构和自由软件项目中半集中的志愿者社区能够以相近的生产率工作?他们认可“生产率”的含义?

财政支持通常会受到开源开发社区的欢迎。它可以减少项目面对混乱势力的弱点,这一点经常让项目在起飞之前就被清除,因此它可以让人们更希望给软件一个机会—他们感到正在一项至少会再干6个月的工作上花费时间。毕竟,可靠性从来都是最有感染力的因素。假定IBM支持了一个开源项目时,人们就会更容易设想这个项目不会失败,而他们的因此所自发的投入反而会去实现这个会成为事实的预言。

然而,资金也会带来控制的感觉。如果处理不好,金钱会让项目分裂为圈内和圈外开发者。如果未付酬的志愿者感到设计决策或特性添加仅仅是由出价最高者决定的,他们会转而投向那些感觉更像是由知识精英管理的,不象是为了某个他人利益进行未付酬劳动的项目。他们绝不会在邮件列表中公开抱怨。相反,随着志愿者逐渐不再努力被重视,来自外部的声音也会越来越少。小规模活动的吵闹还会继续,会以bug报告和偶尔的小修订形式出现。但是再也不会有任何大规模的代码贡献和来自外部的设计讨论参与。人们意识到他们是如何被期望的,而且也会按照这个预期行事。

尽管需要小心的使用金钱,并不意味着不能购买影响力。大多是可以的。技巧是不能直接购买影响力。在一个直接的商业交易中,你使用金钱交换你所需要的。如果你需要添加一个特性,你签署一个协议,为此付款,然后它就会被实现。在开源项目,不会如此简单。你可以与某些开发者签署协议,但是他们需要欺骗自己—和你—如果他们保证你付费的工作会被开发社区接受,仅仅因为你为此付了费。这个工作只应该根据事实,以及与社区对于此软件的长远规划的符合程度来完成。你可以对这个长远规划发表意见,但你不应该是唯一的声音。

所以金钱不能购买影响力,但是可以购买导致影响力的东西。最明显的例子是程序员。如果雇佣了好的程序员,他们逗留了足够长的时间,以获取社区中的软件经验和信誉,那么他们就可以使用其他成员一样的方式影响项目。他们会有一个投票,或者如果人数太多,他们会有投票集团。如果他们在项目中受到尊重,他们会有超越投票的影响力。被支付的开发者没有必要掩盖他们的动机。毕竟,每个希望修改软件的人都有自己的目的。你公司的原因并不比其他人的缺乏道理。只是给与公司目标的砝码取决于代理人在项目中的状态,而不是公司的规模、预算或商业计划。

参与的类型

开源项目被资助有许多不同的原因。这个列表中的条目并不互斥;通常一个项目的财政支持会出自这里的多个,甚至全部的动机:

分担负担

拥有相关软件需要的不同组织经常会发现他们在重复投入,包括在内部重复编写类似的代码,以及从私有供货商购买类似的产品。当他们意识到事实真相后,这些组织会集中他们的资源,并创建(或加入)到一个开源项目,并为他们的需要调整。好处是明显的:开发的代价被分担了,而对所有人利益则增长了。尽管这个场景凭直觉应该大多数是非盈利组织所做的,但是即使对于盈利竞争者也具有战略意义。

例如:http://www.openadapter.org/http://www.koha.org/

提高服务

当一个公司出售的服务依赖于某个开源程序,或因为某个开源程序而更加具有吸引力,很自然这个公司会有兴趣保证程序能够活跃的维护着。

例如:CollabNet对于http://subversion.tigris.org/的支持(免责声明:是我的日常工作,但是也是这个模型的完美实例)。

支持硬件销售

计算机和计算机组件的价值和之上的软件直接关联。硬件销售商—不仅是整机销售商,还包括外围设备和芯片制造商—都发现让高质量的自由软件运行在他们的硬件上对客户来说非常重要。

暗中削弱竞争者

有时候公司支持特定的开源项目作为对竞争者产品的暗中破坏,无论竞争产品本身是否开源。争夺竞争者的市场份额通常不是参与开源项目的唯一原因,但却是一个因素。

例如:http://www.openoffice.org/(不,这不是OpenOffice存在的唯一理由,但是这个软件至少部分的回应了微软的Office)。

市场营销

让你的公司与流行的开源应用联系在一起,是简单而且好的品牌管理。

双重许可证

双重许可证会为希望将软件作为自己私有软件的一部分进行销售的客户提供传统私有许可证,同时为开源范围使用的客户提供自由许可证(见Chapter 9, 许可证,版权和专利the section called “双许可证模式”)。如果开源开发者社区是活跃的,软件可以广泛领域获得调试和开发的好处,尽管公司仍然保持支持一些全职程序员的特许权。

两个著名的例子是MySQL,相同名称数据库软件的制造商,以及Sleepycat,提供Berkeley数据库的发布和支持。他们都是数据库公司并不是巧合。数据库软件通常会集成到应用中,而不会直接交给用户,所以非常适合双重许可证模型。

捐赠

一个广泛使用的项目有时可以获得可观的捐助,包括来自个人和组织的,只需要有一个在线的捐赠按钮,或者有时通过销售诸如咖啡杯、体恤和鼠标垫之类的品牌商品等等。小心一点:如果你的项目接受捐赠,在得到之前要计划好如何使用这些钱,并在项目网站中注明。在实际花费之前保留,可以让关于如何分配钱的讨论变得十分顺利;但不管怎样,如果有明显的分歧,最好把它找出来,这还是很学术的东西。

投资者的商业模型不是它与开源社区如何联系的唯一因素。二者的历史关系也很重要:这个公司开始了这个项目,或者它联合了现有的开发力量?在这两种情况下,投资者都需要赢得信誉,但是,不令人意外,在后一种情况下需要的更多。组织需要对项目的未来有清晰的目标。公司希望保持领导地位,或仅仅是成为社区的一个声音,从而能够引导而不必控制项目的方向?或者它只是希望有一些提交者,能够修复客户的bug并能够不费吹灰之力的将变更置入公共版本?

当你阅读后面的指导方针时要留意这些问题。他们可以应用到自由软件项目中的此类组织参与,但每个项目都是一个人类环境,因此没有完全相同的。在某种程度上,你需要跟着感觉演奏,但是遵从这些原理会增大结果符合你想法的可能性。