支付贡献者一年的费用:回顾

作为ESLint集体目标的一部分,过去一年我们一直在向贡献者支付报酬。我们分享了尝试过的不同方法及其结果。我们重视贡献者的时间,并且不断寻找更好的方式来奖励他们的工作。

我们是在2019年2月宣布启动ESLint Collective以资助ESLint持续开发的。寻求资金的主要原因之一是由于维护一个项目所需的时间越来越多,而截至今天,该项目每周下载量超过1300万次。我们一直等到2019年最后一个季度才开始支付贡献者的报酬,因为我们希望先观察每月的赞助数额会稳定在什么水平,这样我们就可以存下一些资金以保证有一定数额用于支付贡献者。自那以后,我们尝试了几种不同的方法,结果有成功也有失败,我们希望分享这些经验。

🌐 It was in February of 2019 that we announced the launch of the ESLint Collective to fund ESLint’s ongoing development. One of the primary reasons for seeking funding was due to the increasing amount of time required to maintain a project that, as of today, is downloaded over 13 million times each week. We waited until the last quarter of 2019 before we started paying contributors because we wanted to see what our monthly sponsorships would stabilize at and so we’d have some money saved to guarantee a certain amount would be available to pay contributors. Since then, we’ve tried a few different approaches with varying degrees of success and failure, and we’d like to share that experience.

技术指导委员会

🌐 The Technical Steering Committee

技术指导委员会(TSC)是一个由五人组成的团队,负责管理 ESLint 项目的整体方向。每次 ESLint 发布的大部分工作都是由 TSC 成员完成的,包括实际的发布过程。此外,TSC 成员还会审查问题和拉取请求,并代表 ESLint 参加外部活动。这一切都是我们开始考虑为 TSC 成员提供报酬的原因,其中许多成员在 ESLint 获得资助之前就已经参与了该项目多年。

🌐 The Technical Steering Committee (TSC) is a group of five people who manage the overall direction of the ESLint project. Most of the work that goes into each ESLint release is done by TSC members, including the actual release process itself. Additionally, TSC members review issues and pull requests, as well as representing ESLint at outside events. All that is why we started by figuring out a way to pay TSC members, many of whom have been involved in the project for years prior to ESLint receiving funding.

这是我们想出的方案:

🌐 Here’s what we came up with:

  • 每位 TSC 成员为对 ESLint 的任何贡献将获得每小时 50 美元的报酬。贡献可以包括在 GitHub 上的实际工作时间、编写代码或文档、参加会议(包括 ESLint 会议以及他们代表 ESLint 参加的外部会议),以及为社区提供支持(通过电子邮件、聊天等)。
  • 每位成员的付款上限为每月 1,000 美元。设立这一上限主要是为了确保我们能够保存每月捐款的一部分,其次是为了劝阻 TSC 成员在全职工作之外花费过多时间在该项目上。我们不希望资助倦怠。
  • 后来,我们将Tidelift资金拆分给TSC成员。我们称之为“TSC津贴”,每月支付给每位TSC成员,无论他们的小时贡献多少。TSC津贴计入每位成员每月1000美元的上限,成员可以就他们贡献的小时数与Tidelift金额之间的差额向项目开具发票。

到目前为止,这种安排非常有效。自从开始 TSC 支付以来,我们已经看到 TSC 成员的参与逐渐增加。为有价值的工作付费确实有其道理:当工作被明确地重视时,人们更愿意去做。总体而言,我们会称这部分项目为成功。

🌐 So far, this arrangement has worked exceedingly well. Since starting the TSC payments, we have seen TSC member participation slowly increase. There is something to be said for paying people for valuable work: when the work is explicitly valued, people are more willing to do it. Overall, we would call this part of our program a success.

专职维护者

🌐 Dedicated maintainer

回到2019年11月,我们宣布聘请长期维护者Kai Cataldo作为专职维护者。最近离开全职工作的Kai希望能有更多时间在ESLint上工作。我们没有预算支付他足够的全职薪水,因此我们同意每周工作20小时,工资为每月5,000美元,Kai则将每周的另外20小时用于处理其他项目或自由职业。

🌐 Back in November 2019, we announced hiring longtime maintainer Kai Cataldo as a dedicated maintainer. Having recently left his full-time job, Kai wanted to spend more time working on ESLint. We didn’t have the budget to pay him a proper full-time salary for his work, so we agreed on 20 hours per week for $5,000/month, with Kai spending the other 20 hours of his week working on other projects or freelancing.

我们尝试了几个月后,明显发现这种安排对 Kai 来说不可持续。虽然 ESLint 的付款是稳定的,但他每周还必须花大量的另外 20 小时来寻找足够的收入。因此,我们将安排更新为每周 10 小时,报酬为 2,500 美元,以便 Kai 有更多时间寻找其他工作,同时仍能提供一定的 ESLint 专注时间。

🌐 We tried this for a few months before it became apparent that this arrangement wasn’t sustainable for Kai. While the payments from ESLint were steady, he had to spend a lot of his other 20 hours each week finding ways to make enough money. So, we updated the arrangement to be for 10 hours each week at $2,500, to give Kai more time to find other work while still providing a baseline amount of dedicated ESLint time.

不幸的是,那种安排也没有奏效。再次地,在履行 ESLint 职责和尝试寻找其他兼职工作之间分配时间,被证明比我们任何人预想的都要困难得多,而这个月,凯决定辞去专职维护者的职位。他将继续留在 TSC,并仍然有资格获得 TSC 成员的报酬。

🌐 Unfortunately, that arrangement also did not work. Once again, splitting time between his ESLint duties and trying to find other part-time work proved to be a more difficult task than any of us realized, and this month, Kai decided to step down as a dedicated maintainer. He will remain on the TSC and still be eligible for the TSC member payments.

这是团队难以解决的一件事情,我们认为这里有一个关于开源可持续性的重要教训:即使我们收到捐款,ESLint 的收入也不足以全职支付维护者。当这种情况发生时,维护者面临一个困难的决定:我们可以尝试进行兼职开发,但很难找到其他兼职工作来补充我们每月所需的收入,从而使其值得投入。在某些情况下,做兼职工作反而使找到其他工作更困难,因为你的时间受到限制,而其他自由职业者则没有这种限制。

🌐 This was a difficult thing for the team to work through, and we think there’s an important lesson about open source sustainability: even though we receive donations, ESLint doesn’t bring in enough to pay maintainers full-time. When that happens, maintainers face a difficult decision: we can try to make part-time development work, but it’s hard to find other part-time work to make up the monthly income we need to make it worthwhile. In some cases, doing the part-time work makes it more difficult to find other work because you are time-constrained in a way that other freelancers are not.

鉴于凯的经验,我们目前正在重新考虑未来是否以及如何希望追求专职维护者。

🌐 We are currently rethinking how (and if) we’d like to pursue dedicated maintainers in the future given Kai’s experience.

其他实验

🌐 Other Experiments

除了 TSC 支付和雇佣专职维护者之外,我们还尝试了几种其他方法来将支付分发给更多贡献者。我们的最终目标是能够支付大多数(如果不是全部的话) ESLint 的贡献者,因为所有的贡献都是有帮助的。我们仍然没有完全想清楚这将如何运作的细节,但我们已经尝试了几种其他实验:

🌐 Along with the TSC payments and hiring a dedicated maintainer, we’ve also tried several other things to distribute payments to more contributors. Our ultimate goal is to be able to pay most, if not all, contributors to ESLint because all contributions are helpful. We still haven’t thought through the details of how this will work, but we have tried several other experiments:

  1. 对于 v7.0.0,我们决定向几位对该版本做出巨大贡献的贡献者提供一次性 250 美元的付款。这些贡献者既感到惊讶又很高兴,但我们也了解到,有些国家对我们在美国称为自雇收入的事项有非常严格的规定。因此,并不是每个人都能参与其中。
  2. 长期的贡献者 Kevin Partington 开始花大量时间帮助我们社区的成员在我们的 Discord 中,为了感谢他,我们开始支付他每小时 25 美元,针对他提供的任何帮助。如果你曾经访问过我们的 Discord 并寻求帮助,很可能是 Kevin 帮助了你。

收尾

🌐 Wrapping up

总体而言,我们始终在寻找对 ESLint 有意义和影响力的贡献,以便我们能够为这些贡献支付报酬。随着我们寻找让 ESLint 在可预见的未来可持续发展的方式,我们将继续尝试以不同的方式向贡献者支付报酬。

🌐 Overall, we are always on the lookout for meaningful and impactful contributions to ESLint so we can reward pay people for those contributions. We will continue to experiment with paying contributors in different ways going forward as we look for ways to make ESLint sustainable for the foreseeable future.

并非我们尝试的所有事情都取得了成功,我们也没有指望它会成功,但我们坚信继续努力解决这个问题是值得的。维护像 ESLint 这样的项目需要大量的工作和许多人的贡献。要让这种工作得以持续,唯一的方式就是付钱给人们,让他们投入时间。

🌐 Not everything we tried has worked out, nor did we expect it to, but we firmly believe that it’s worth continuing to work on this problem. Maintaining a project like ESLint takes a lot of work and a lot of contributions from a lot of people. The only way for that to continue is to pay people for their time.

最新的 ESLint 新闻、案例研究、教程和资源。

ESLint v10.3.0 发布
1 min read

ESLint v10.3.0 发布

我们刚刚发布了 ESLint v10.3.0,这是 ESLint 的一次小版本升级。此版本添加了一些新功能,并修复了上一版本中发现的几个错误。

ESLint v10.2.1 发布
1 min read

ESLint v10.2.1 发布

我们刚刚发布了 ESLint v10.2.1,这是 ESLint 的一个补丁版本升级。本次发布修复了上一版本中发现的几个错误。

ESLint v10.2.0 发布
2 min read

ESLint v10.2.0 发布

我们刚刚发布了 ESLint v10.2.0,这是 ESLint 的一次小版本升级。此版本添加了一些新功能,并修复了上一版本中发现的几个错误。