在OpenSSL”滴血”漏洞出现的三天,互联网安全让人震惊,尽管对于OpenSSL代码在我第一次见到时就对它做批评,但是我还是非常钦佩这些人们的努力。
特别是考虑到他们是怎么为它付出的。
受到一篇叫`Wall Street Journal`关于OpenSSL缺乏资金发展的启发,我决定写一些关于我自己一些在开源软件基金发展细节方面的经验。
我在软件产业有30年的经验,在最近的15年里,或多或少依靠开源软件谋生。
有时资金来源于使用开源软件的用户,有时我为开源软件写一些需要的代码,并且为了让开源软件变得更好,在开发和维护`Varnish Moral License`上面,我也收到资金支持。
在2004年,我获得了第一关于开源软件的资金支持,我投入了3-6个月的时间编写FreeBSD磁盘I/0子系统。
同时,我花了10年时间成为了FreeBSD核心开发人员,所以以我的能力来说,没有任何困难能阻挡我。
但是在2004年,我必须决定自己要做些什么。
我的父母让我思考自己财务方面的私人问题,但是我的结论,唯一可以让陌生人给你投钱的方式是写一本书,这样他们就可以看到在他们身上正在发生什么,所以我写了开源的书。
我的第二个艰难选择是关于费用问题,我一直认为费用是我和客户之间的一件私事。
我的费用中有一半是人们期望的结果–因为我不为大多人工作: 我做那些我真正*关心*的事情。
因此,我的一个担心是如果公布我的费用,会影响在依靠FreeBSD项目过日子的朋友和同事。
但是又同时没有其他办法,我公布了费用,并尝试从咨询费用中区分,也从来也有听到过抱怨。
因此,经历了文字痛苦和项目上面的朋友建议,离开时我提出了改善建议,不知道接下来怎么样了。
我必须做一个完美的回退计划,尤其是当我面临两个孩子喂养和抵押贷款时,但是真不知道接下来会发生什么。
糟糕的情况下,我可能会引起所有`bikesheds`妈妈离开FreeBSD项目,我的”思想杂质”也会在开源界受到谴责 。
好的情况是,可能会得到1-2个月的资金支持。
在FreeBSD社区收到了疯狂响应,我公司从未像在2004年那样收到这么多资金,我的会计师为了快发疯了。
突然间,我意识到从考虑过的困境:如果阻止人们给我发钱。
我设置了一个PayPal账户,至少在当时,没有办法阻止人们汇钱给我,不是阻止他们汇多少。
最后通过我强烈阻止,收了擦后果基金的百分之十几,我相信,通过我的尝试转移顺差,FreeBSD基金会会让大家这一年过的比较刺激。
根据PayPal的规定:他们做的第一件事就是关闭了我的账户,并要求各类文件传真给他们,包括我的护照复印件,尽管丹麦法律很清楚,这样做是非法的。他们的纠纷解决并不人性化,最后出现一为PayPal高级人员,花了一些时间了解捐助者。
我对自己发誓,如果下一次还有就不适用PayPal,同时,我发现他们的收费也比较贵。
最后我选择了EUR27K,这让我能喂养孩子,并且我的银行在接下来6个月也有余额。
然后我开始工作了。
在接下来的6个月里面,从没有过这么严格的老版,强大的压力工作也让我感到惊讶,我感觉我在某个平台上面工作,面对着FreeBSD项目的众位观众,期待着我何时进行交货。
最终,187名捐助者得到了价值的回报,基本上在那半年,每周我工作80个小时。虽然捐助者表示他们可以完全捐助我数据,但是我决定不再继续这样工作。
5年后,完成了对挪威报纸”VerdensGang” Varnish1.0的开发后,我决定再次建立社区基金。
随着经验的学习,我设计了`Varnish Moral License`架构解决困扰我的一个问题:
不再是联系-收钱的模式,而是关注于少数大型赞助商。
在VML页面中,大家可以到在里面花了多少小时的一行描述,2010年后的每一天,我都在VML下工作。
同时,我也决定对我自己和捐助者诚实,一个小时工作就是一个小时工作,别人别想从我这压榨时间。
实时上也不全是这样工作,一天中在展示、邮件和IRC回复上也要投入很多时间,多次情况正好在下班时,就有很多”检验细节”工作,因为我喜欢这份工作,没有人能阻挡的了我。
在2010、2011、2013年,每年投入950小时在Varnish社区里面。
在2012年我只工作了589小时,因为我为ESO`Extremely Large Telescope`_ (“ELT”)建立一个自适应光学计算原型计算机集群,是在没有办法拒绝这份合同。:-)
在2014年我也有时间工作在Varnish上,在困难时期发布了4.0.0版本,当前仍有800小时可以投入工作,期望在V4版本发布后,能够收到更多的捐助。
Varnish大约9万行代码,VML在EUR90K中运行了一年,这意味着Varnish让我解决、注意这些大大小小的问题。
现在我很满意努力进入了新的水平,我们会有更好的文档,我们的愿望离我们拿到船票还很远。
但是我不会抱怨,因为Heartbleed漏洞显示OpenSSL基金公司去年在EUR700K代码量是Varnish的3-5倍左右。
EUR700K大部分做的是咨询和认证工作,他们不为”免费范围”OpenSSL代码做急需的开发和维护。
我真的希望Heartbleed漏洞能帮助把消息带到其他社区主页,开源软件是由人来写的,不会自己出现空格。
那些热爱我们所做的人们,这就是为什么我坐在这里,这样过了一个周五晚上写作这篇的原因,
但是软件”是”由人来编写的,是在的人,他们有孩子、车子、贷款、漏水的屋顶、患病的宠物、体弱的父母,和其他完全正常的人类一样有成年人的担心。
提高开源软件质量最好的方式就是让这些人尽可能投入更多的时间在上面。
他们需要时间仔细审核意见书、用时间写代码、实例测试,花时间响应和修复bug报告,最终的就是花时间考虑代码。
要求这些人员放弃与孩子玩耍的时间,用开发和维护时间来取代,以推动民族企业的软件发展,这么做在道德上是站不住脚的。
正确的方式是–正常的方式是–迄今为止最有效的方式是给开发人员报酬,这样他们就能像热爱生活一样开发软件。
一种方式是雇佣那些在软件行业公司里面投入时间的人们。
经验表明,那些喜欢解决雇主抛出的各种问题,具有高度理想主义的人们,会减少公司”捐赠”时间。
目前大多数开源软件仍然是维持原有的开发和维护方式,在这种情况下签或不签协议和知识。
另一种方式是,建立软件工程基金来收集资金,雇佣开发者。这样就需要看成一个复杂事来处理,也只能在大型项目中这么做。
Apache基金”adopts”是一个在利益领域做的小项目,我相信在这个领域会做的不错,但是不确定在其他领域里面能灵活变化。
最后最简单的是给开发者发钱,FreeBSD和Varnish社区目前就这样做的。
与协议和国家等因素水平来说,这样做是个不错的灵活方案,同时,在很多方式中,这又依赖于双方处事方式,比如回复使用纸张、上税等等。
基于个人的鄙见,我得到了社区微薄基金中的一大部分,为此我非常感谢Varnish社区。
我相信对于Varnish社区,我已经展示了在开源领域一个依赖小投资而会持续的方式。
我希望看到的是,互惠互利的这种方式能够蔓延到其他社区和项目中,不仅是在OpenSSL中,也不仅仅因为他们某天发现了一个非常糟糕的bug,而是所有的软件社区,能够认真严肃的做公司的事情。
感谢建议来信,
Poul-Henning, 2014-04-11