如何系统地资助开源社区的个人开发者?

开源社区中,全力投入开源项目开发的个人开发者常常会遇到资金问题。为了将给开源社区及其产品带来的贡献转换为对应的收入以维持生活,许多个人开发者通过功德箱,即在个人页面、项目页面或产品交互的某个部分放置捐款通道,来募集资金,另一种常见的方式是通过 Patreon 等募资渠道为自己募资。

然而,个人的流量是有限的,能通过上述方式募集到足以支持自己持续贡献的资金的开发者只是少数的明星开发者。例如 Mojolicious 为许多公司带来敏捷的 Web 应用开发,其作者也时不时得到相关公司的资助。例如 OpenResty 跟 Mojolicious 类似,为公司信息化道路上建立入口网关这一步提供了可靠的解决方案,因此其开发者早期也被公司雇佣全职参与 OpenResty 的开发。

沉默的大多数并非如此。他们并没有自己写出明星项目,或者拥有足以让自己获得关注度从而接受资助的社交能力。他们往往是开源项目的贡献者之一,即使为项目实现了富有价值的功能或为社区的发展,例如文档化和培训,做出了显著的贡献,但是作为团队的一员很难以自己个人的身份获得资助。

诚然,现在的开源社区正在资助个人开发者的议题上进行持续的探索。例如 GitHub 的 Sponsor 功能和前面提到 Patreon 资助渠道,还有其他类似的仿品。但是作为最广泛存在的开源参与形式,即个人开发者参与明星开源项目,在这个开源项目本身拥有足够的关注度和募资能力的情况下,如何将部分组织募集的资金用于资助社区的个人开发者,仍然缺乏广泛的系统性的方案。诸如 Apache 基金会这样的组织,一方面没有细化到每个项目的资金归属,因此每个项目也就没有自己可以动用的资金,另一方面组织上也没有关注资助个人开发者的问题,其资金主要用于维护基金会的日常运作和活动运营开销。

我在 2016 年到 2018 年间通过 Perl 6 项目接触到 Perl 社区,作为风靡一时的程序设计语言社区,它通过 The Perl Foundation 来以 Perl 语言及使用 Perl 语言开发的软件的范畴为自己募资。这其中令我印象深刻的是基金会拥有一个称为 Grants 的流程,它系统性地向所有帮助 Perl 语言进步的个人开发者提供了一个获取资助的渠道。你可以看到个人开发者如何简单地提出自己期望获得资助的提议,如何通过简单而有效的流程受监督的完成工作并最终获取资助。

Perl 社区在社区运营上是公认的经验丰富,接下来我们从 Perl 基金会的组织架构、Grants 的社区意义、Grants 的运作方式和 Perl 的社区文化四个方面,展开介绍 Perl 社区如何系统地资助开源社区的个人开发者,以及其成功的开源社区经验都有哪些秘诀。

Perl 基金会的组织架构

准确无误地介绍一个组织的组织架构往往是冗长而枯燥的,因此我们仅从实际关心的资助个人开发者角度切入来看待,详细的介绍可以从这个网址[1]获得。

Perl 基金会的组织架构层级很薄。理事会(the board of directors)是基金会的决议人员,理论上拥有基金会所有事务的决策权力,但通常只行使否决权。理事会通过投票来做出基金会的关键决定,但日常工作授权给理事会选举出的总理(president)来监督,而财务工作交给财务官(treasurer)来做最终审批。

理事会之下是指导委员会(Steering Committee),它们的成员是实际决议领域事务的负责人。例如会议委员会(Conferences Committee)负责运营北美的 Perl 会议以及帮助全世界范围内的 Perl 会议的开展,资助委员会(Grants Committee)则负责 Grants 的评审、资金发放和监督,其中资金相关的操作需要财务官做最终审批。

除了以上具有决议权限的成员以外,还有大量的志愿者参与具体事务的执行,例如会议的举办方、主持人和演讲者,Grants 的提议者和监督人。

Perl 基金会采用开源社区常见的精英领导制(meritocracy),即根据成员的贡献、价值和天赋,赋予成员特定的职责和身份。Perl 基金会预期一个贡献者在持续参与贡献的情况下通常在一到三年后就可获得对应领域事务的决议权,换言之,成为相应委员会的成员。关于精英领导制的讨论是一个丰富的话题,一般说来,它通过对辛勤劳动和重要贡献给予回报这样朴素的原则,吸引广泛的贡献者积极参与和做出实绩,同时赋予持续活跃的优秀成员决议权以推动社区发展。

[1] https://www.perlfoundation.org/legal.html

Grants 的社区意义

Perl 基金会是我看到过的第一个明确地制定针对个人开发者的资助流程的组织。即使是 GitHub 的 Sponsor 计划,本质上也与功德箱的方案类似,依赖开发者的个人魅力来募集资金。Perl 基金会利用自身的影响力募集资金,并将资助通过 Grants 发放给致力于 Perl 发展的开发者,这将减少个人开发者在做出贡献以外的负担。

那么,Perl 基金会自己是怎么看待 Grants 的社区意义的呢?这里对官方说明[2]做一个演绎的转述。

对于接受 Grants 资助的人来说,意义显而易见。

对于社区来说,首先,资助 Perl 开发者的先锋队和布道师,显然能够优化 Perl 的使用体验、丰富 Perl 的生态系统和帮助用户理解 Perl 的价值。官方说明中着重强调了布道对草根(grass-roots)用户的帮助,并承认它对 Perl 发展的重要性。关于这一点,我会在 Perl 的社区文化一节里展开讨论。

其次,Grants 独特地强调对个人开发者资助,将提升开源社区的知名度,激发人们讨论自由(免费)软件和什么是最能支持非商业开发的资助模式的热情。显然,本文的创作就是这一目的实现的最好证明。

最后,Grants 的存在鼓舞了整个社区,社区成员以之为傲,并对社区产生归属感。围绕 Grants 流程,社区成员可以建立起有趣、活跃而富有成效的沟通。

官方说明还包括了对资助者的益处的说明,鉴于本文的主题不做展开,仅提及一点。Perl 基金会是符合美国税法 501(c)(3) 条例的非盈利组织,向 Perl 基金会的捐赠可以抵扣个人或组织所需要交纳的税费。我不确定中国有没有类似的税法,以及这样的税法是否能在中国支持开源社区的发展,但是它确实是一个有趣的方向,仅在此分享以供讨论。

[2] https://www.perlfoundation.org/grant-benefits.html

Grants 的运作方式

Grants 的运作方式并没有一个官方的繁琐而详尽的流程,实际运行时,它大概由四个部分组成,即开发者提出 Grants 的提议,资助委员会对 Grants 提议进行表决,开发者开展 Grants 提议内容的工作开展并通过监督人进行汇报,以及最终汇报后由资助委员会发放资助。

Grants 的运作方式可以用下面的状态流转图来展示。

Perl 基金会官方网站上提供了撰写 Grants 提议的指导方案[3]。

通俗地说,Grants 提议有点儿像关键业绩指标计划,包括标题、开发者简历、工作对 Perl 社区的好处、工作的具体内容、预期完成的时间以及希望获得资助的金额。

可以通过典型的例子来对 Grants 提议有个直观的感受。

CPAN 是 Perl 软件库的分发中心,你可以对于理解成 Java 世界的 Maven Central 或 JCenter,其上存在着 Perl 开发必不可少的软件库,就像在 Java Web 开发中使用 Spring 那样。

丰富 CPAN 的软件库显然是一个潜在的 Grants 提议,例如这个提议[4]旨在实现一个发布在 CPAN 上的 Perl 软件库以支持在 Perl 程序中使用 async/await 关键字并获得其他语言中类似的语义效果。

在这个提议中,提议人 Paul Evans 清楚地说明了自己工作的价值,以及关键的结果目标,包括前置条件修复缺陷、实现 async/await 功能、撰写文档和发布具体篇幅的介绍博客。同时,对项目的耗时有一个明确的预期,虽然最后不出意外的延期了。

这个提议在随后的 Grants 提议表决阶段全票通过[5],同时通过的还有 Perl 6 的运行时 MoarVM 的优化提议。实际上,Perl 基金会目前对开发最活跃的 Perl 6 领域相关的提议和开发 Perl 5 CPAN 富有价值的软件库以及组织会议的提议通过率都是比较高的。提议人通常会请求数千美元的资助款,这大概与 Perl 基金会规定资助的上限是一万美元有关。

这两个提议都完成了,其中 Future::AsyncAwait 库的 Grants 资助发放有对应的公告[6]发表,而 MoarVM 的工作没有明确的公告,但从开发者后续没有提意见来看,应当是实际发放了。这也是精英领导制的一个方面,社区成员通过信任来协作,而不依赖于繁琐的流程和僵化的形式。

在 Grants 运行期间,开发者需要通过监督人进行定期汇报,例如 Perl 6 的核心开发者 Jonathan Worthington 持续的通过 Grants 从自己对 Perl 6 的发展的重大贡献中获取回报。最近的一个提议[7]是有关 Perl 6 的 AST 标准化的,这个大工程在 Moritz Lenz 的监督下持续的提交进度汇报。

  • https://news.perlfoundation.org/post/rakuast-2020-06

  • https://news.perlfoundation.org/post/2020-07-grant-report-jnthn-rakuast

  • https://news.perlfoundation.org/post/grant-report-jonathan-worthington-rakuast-2020-08

  • https://news.perlfoundation.org/post/jnthn-grant-report-rakuast-2020-09

并且在最新的一个汇报中,Jonathan 汇报了自己将要暂离开发一到两个月。这里又是精英领导制发挥作用的时刻,对于社区的卓越贡献者,社区成员总是报以信任并给予他们自由地发挥自己价值的途径。当然,如果 Jonathan 一去不返,这也将成为 Grants 最终决议是否发放和后续其他提议是否通过的重要判断依据。或许更重要的是,这将影响他与为之工作十余年的语言的社区构建的信任关系。

Grants 并不总是一帆风顺的,开发者精力有限或技术上不支持等原因都有可能导致已经决议通过的 Grants 计划搁浅。

例如,这个旨在实现 Perl 6 网络编程完整支持的提议[8]就因为工作过程中发现 Perl 6 语言的现状,具体地说是底层实现,不支持其提议的工作内容,而遗憾取消 Grants 的进程[9]。

当然,也有在 Grants 提议的投票这一阶段就被否决的。例如,这个旨在实现某个小众语言到 Perl 6 的转换的提议[10]就被质疑其实际价值,并最终由于其提议的资助金额与价值不符而被否决。

[3] https://www.perlfoundation.org/how-to-write-a-proposal.html
[4] https://news.perlfoundation.org/post/grant_proposal_futureasyncawai
[5] https://news.perlfoundation.org/post/september_2018_grant_votes
[6] https://news.perlfoundation.org/post/gc-future-async-complete
[7] https://news.perlfoundation.org/post/gp_rakuast
[8] https://news.perlfoundation.org/post/grant_proposal_improve_perl_6_
[9] https://news.perlfoundation.org/post/grant_cancellation_improve_perl6_networking_support
[10] https://news.perlfoundation.org/post/grant_proposal_cito_to_raku_translator
[11] https://news.perlfoundation.org/post/grants_september_2020_votes

Perl 的社区文化

这部分内容是正文的补充,与 Grants 没有直接的联系,更多的是我在参与 Perl 社区的时候对这个社区的观察和想法。

本文成文时间较短,这个章节想写的东西一时半会儿还写不完,预计会以类似朋友圈闲谈的方式讲讲 Perl 的社区文化。欢迎关注我的知识星球,我的不成文的想法将会以朋友圈的形式发布在知识星球上,同时知识星球也支持直接提问交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值