金钱与开源(part1)

注:本文作者是npm的作者Isaac Z. Schlueter,也是nodejs的主要作者之一

“我们需要找到更好的方法来为开源软件筹资”,这是我近几年反复思考的一个问题,下面我要说的或许是一种解决方案。

大部分开发者在传统的合作方式下都干得不错。激励方式也很简单:努力工作,改善产品,帮助团队完成产品,然后取得共赢。当一切正常时,这种方式很好。你会发现自己很有归属感,而且在不断的自我提高。

但这并不适用于所有人。出于愚蠢的安全性考虑,你可能需要牺牲一些灵活性和创造力。至少,它会限制你的软件的适用范围,因此它能提供的价值也仅止于此。

自从我开始全身心投入编写开源软件,我感觉非常愉快,而且更有创造力了。事实上,我不会接受一份要求我放弃编写开源软件的工作,我也很有幸能有足够的资本来避免做出这种荒唐的决定。当然,这也可能导致很坏的结果,但是我很幸运的用这些时间来写了npm,然后JoyentNode.js开始迅速发展起来,现在我在干的正是这些。

艺术家和浪客

可悲的是,很多有望成为开源软件界超级明星的人并没有我这么幸运。没有钱是万万不能的,而最实际的赚钱方式就是找一个工作。

很多雇主希望“让”雇员用“私人的”时间来处理自己的项目,或者至少能贡献给公司的项目(通着这些项目会带有一份公司的保密条款)。这并不是很明智,“自由(free)”时间并不“免费(free)”,将精力全花在工作上会让你失去应有的生活。

有些人则放弃了在公司工作的机会,成为了一个自由职业者,换句话说,一个挨着饿的艺术家。他们用最少的时间来接一些活,然后将剩余的时间和创造力花在开发开源软件上。但这是一种很窘迫的生活方式,特别是需要供孩子上学的时候,甚至连抚养孩子都有困难。

这就是我们和社会面临的困境。开源软件给软件工业带来了巨大的好处,也就意味着,给所有工业领域提供了巨大的帮助。假如专注于开源软件的都是一些幸运和热情的人,那么这里面就存在很多未经发掘的潜力股。

假如我们想继续从开源软件中得到好处,特别是想让这种好处最大化的话,我们就得找出一种为它买单的方式。除了能让开源软件开发者吃饱喝足以外,付款也能将他们的努力与现实世界联系在一起。

下面我会提到一些这个领域的开发现状。每一个都一些致命的缺点,而且我还能找到解决这些问题的办法。我不认为这会让我们觉得悲观,这些需要解决的问题反而让我们觉得正朝着正确的方向前进。

合同,训练,咨询……

许多开发者通过签订短期合同来为喜欢的项目工作。虽然这有时是一个不错的赚钱养家的方式。但是我并不认为它从根源上解决了开源软件筹资的问题。

这与成为一个传统雇员,然后用空余时间来处理开源项目没什么不同。这并不能让开发者直接通过他们的开源项目来盈利。就像做培训和别的一些活一样,这并没有真正的为开源软件筹资,这只不过是你通过开源软件找到了一份工作而已。

话虽如此,合同当然可以资助一个人其他的开源活动,同样提供临时援助也能帮助创业者步入正轨。

专职员工

一种为开源软件筹资的方式是让雇员在工作时间为开源项目做贡献。这正是Node核心项目的运作方式。Joyent,StrongLoop, Voxer, Mozilla, LearnBoost, 和Microsoft的雇员都会将他们的部分工作时间花在Node上面。

(注:我没有在这里囊括那些用私人时间开发项目的人。这当然也很重要,但是“动用你的私人时间来做项目”正是这里遇到的问题。)

这样的效果相当好,事实上带来的好处是,能让软件更符合他们大部分用户的需求。当公司付给你薪水的时候,你就会觉得有必要为自己的代码负责。假如一个团队完全不考虑用户需求的开发软件,这会显得相当的不靠谱。

任何能给开源软件生态系统带来益处的方法都值得鼓励。 但是这种方式也存在一些问题。

当一个社区项目由现实中的企业驱动时,往往企业会利用它的优势地位,来做出一些符合自己利益的改变。从长远来看,这会损害项目的可靠性和预期目标。Joyent的高级副总裁Bryan Cantrill对这些事情可能导致的严重后果有一个很精彩的演讲:企业反开源模式:大错特错

就算企业能考虑尽量避免上面的情况发生(这样做得很少),表面上(对企业)的优待条件也会给社区带来损害。开源社区的很多人认为企业的利益本质上就是邪恶的。这样说并不客观,但是考虑到这些企业的反开源模式,这样说也并不是毫无道理。

此外,这种解决方案的可能性微乎其微,作为企业雇员,开源项目完全符合企业利益的情况是微乎其微的。当然,大多数使用Node的公司可能不能让Nodejs核心开发者雇员做出一个像样的商业应用,嗯~,可能是运气的问题吧。

实在太长了,未完待续… :)

参考

Money and Open Source

Comments