Skip to main content

巴别融资计划

· 14 min read

开源软件最大的优势之一就是它是开放的,任何人都可以免费参与贡献。但这也带来了一个最大的挑战,那就是如何支持一致且可持续的维护。

🌐 One of the greatest strengths of open source software is that it is open and free for anyone to contribute. This also leads to one of its greatest challenges, which is to support consistent, sustainable maintenance.

Babel 不是一家公司。正如在 7.0.0 帖子 中提到的,全员志愿的 Babel 团队(除 Henry 外)一直在尽力管理这个项目,并处理社区的各种期望。我们很高兴能够持续发布新版本,但即使只是跟进已报告的问题也很难,更不用说我们与其他工具的集成、新提案以及对更大生态系统的影响了。

🌐 Babel isn't a company. As mentioned in the 7.0.0 post, the all-volunteer Babel team (sans Henry) has been doing its best to steward the project and handle all the expectations of the community. We're glad that we have continued to make releases, but even keeping up-to-date with reported issues is difficult to manage, let alone our integrations with other tools, new proposals, and effect on the greater ecosystem.

2018年3月,亨利辞去了他的工作,开始努力为Babel争取更多资金。经过大量努力以及社区的支持,团队最终能够资助亨利成为全职维护者。

🌐 In March 2018, Henry left his job to start working on securing more funding for Babel. After a lot of work and support from the community, the team was able to fund Henry as a full-time maintainer.

这对团队来说是一个很大的胜利,但我们发现这还不够。

🌐 This has been a big win for the team, but we're finding that it is not enough.

新挑战​

🌐 New Challenges

Babel 已经从最初作为 “6to5” 出现时走了很长一段路,不再仅仅是 JavaScript 语言特性 采纳 和实现的工具。它已经成为开发中不可或缺的一部分:

🌐 Babel has come a long way from its origins as "6to5", growing beyond just the adoption and implementation of language features in JavaScript. It has become a key part in its development:

  • Babel 的人气大幅上升,从 2018 年 3 月每周 300 万次下载,增长到现在每周 1600 万次下载。
  • Babel 现在作为参与成员参与 TC39 标准流程的会议和讨论。“已经有 Babel 插件了吗?”是新提案中常见的问题。
  • Babel 已经成为底层基础设施的一部分,大多数开发者都是间接使用它的,包括在像 create-react-app 这样的命令行工具、像 Parcel 这样的打包工具、像 Next.js 这样的框架,以及许多 npm 库中。

广泛的采用也带来了新的挑战,团队一直在应对维护和可持续性方面的问题。项目的发展已经超出了团队现有的资源,我们想和大家分享我们解决这个问题的计划。

🌐 Widespread adoption brings with it new challenges, and the team has been grappling with issues around maintenance and sustainability. The project has grown beyond the resources the team has available, and we'd like to share our plan for addressing this problem.

资金计划​

🌐 Funding Plans

我们认为如果不止一个人获得资助来参与 Babel 项目,将会带来巨大的好处,因此我们希望为另外三名团队成员 Nicolò、Jùnliàng 和 Kai 争取资金,让他们以兼职维护者的身份加入。

🌐 We believe that Babel would benefit immensely from more than one person being funded to work on the project, and want to secure funding for three additional team members, Nicolò, Jùnliàng, and Kai as part-time maintainers.

我们正在通过 Open Collective 设立一个额外的资金目标,每月 12,000 美元。这意味着每人每月 4,000 美元,这是我们为兼职工资设定的目标。

🌐 We are setting up an additional funding goal of $12,000/month through Open Collective. This is $4,000/month each, which is the target we have defined for a part-time salary.

我们作为团队讨论了许多不同的方法——为贡献者设定小时工资、为功能预留资助、为特定问题提供漏洞奖金——最终我们决定,稳定的收入会带来更高质量的工作(不用急着赶开发)、能够有时间以更整体的方式规划路线图、可以剩余和度假,而且不用担心下一份薪水从哪里来。

🌐 We discussed a number of different approaches as a team – creating an hourly rate for contributors, setting aside grants for features, bug bounties for specific issues – and ultimately decided that a stable income would lead to higher quality work (no pressure to rush development), the ability to dedicate time to plan for a roadmap in a more holistic manner, being able to take time for breaks and vacation, and not having to worry about where their next paycheck is coming from.

话虽如此,我们会继续评估,并在需要时保持开放和透明地进行调整。

🌐 That being said, we will continue to evaluate and be open/transparent with making changes as needed.

我们想对我们的 Open Collective 赞助商表示由衷的感谢: Handshake、Airbnb、AMP、Facebook、trivago、Salesforce、Frontend Masters、RunKit、Webflow、Adobe、Coinbase、BitMEX,以及所有其他捐赠者!

🌐 We'd like to give a huge shoutout to our Open Collective sponsors: Handshake, Airbnb, AMP, Facebook, trivago, Salesforce, Frontend Masters, RunKit, Webflow, Adobe, Coinbase, BitMEX, and everyone else who has donated!

Babel Open Collective monthly donations graph

我们想说明一件事: Collectives 目前只显示捐赠的年度总额,这可能更适合一次性资助捐赠模式。我们认为展示每月定期捐赠金额更能准确描述我们项目的财务状况,团队希望能帮忙解决这个问题。

🌐 One thing we'd like to note: Collectives currently only show the total annual amount donated, which may work better with a one-time grant donation model. We believe that showcasing the monthly recurring amount is a more accurate description of the financial health of our project, and the team is hoping to help out with this issue.

你可以怎么帮忙​

🌐 How You Can Help

你可以通过我们的 Open Collective 对 Babel 提供资金支持!

🌐 You can financially contribute to Babel on our Open Collective!

我们的团队正在使用 Open Collective 为团队成员筹资。公司和个人都可以向团队捐款,无论是一次性捐款还是定期捐款。

🌐 Our team is using Open Collective to fund our team members. Both companies and individuals and donate to the team, either as a one-time or recurring donation.

如果你对为Babel提供经济支持有任何疑问或担忧,我们很乐意通过email讨论。

🌐 If you have any questions or concerns about financially contributing to Babel we'd be happy to discuss by email.

如果你的公司位于核心团队成员居住的城市之一,我们也很希望能当面见面!

🌐 And in case your company is located in one of the cities that the core team lives in we'd also love to meet in-person!

  • Henry 常驻纽约市,将于 11 月 4 日至 15 日在湾区。
  • Nicolò 常驻意大利,将于11月6日至10日待在莫斯科。
  • 布赖恩在德克萨斯州休斯顿工作。
  • Jùnliàng 位于安大略。
  • Kai 的工作基地在纽约市地区。

团队很想了解你是如何使用 Babel 的,或者你希望如何参与其中。

🌐 The team would appreciate hearing about how you are using Babel or how you are looking to get involved.

我们的目标​

🌐 Our Goals

我们会就这些话题写更多深入的文章,但这里有一些我们打算继续关注的一般字段:

🌐 We will be writing up more in-depth posts on these topics, but here are some general areas where we aim to continue focusing on:

  • 稳定性:这包括检查官方的 test262 测试。这种 支持 让我们对规范的合规性有更清晰的了解,从而知道还有哪些缺失,同时我们会使用 Babel 本身以及我们最常用的依赖库添加烟雾测试,当然还有我们自己的测试。考虑到我们在生态系统中的地位,可靠性对我们来说非常重要。
  • 调试性:我们希望在配置上实现更好的警告/错误提示,并解释输出内容,以帮助用户对代码大小做出决策。鉴于一个插件化工具需要跟踪不断变化的规范,其复杂性很难完全隐藏。我们真的很希望花时间让我们的使用方式更容易上手。
  • 一般生态系统支持:这包括我们可以做些什么来帮助库发布 ES2015 及以上的代码,以及让开发者在可能的情况下针对新浏览器并减少代码量(你自己的代码、node_modules、polyfills),同时仍然让所有浏览器用户都能访问。
  • 代码转换工具:我们希望更多地强调代码转换的相反方向(也就是 5to6,Lebab),这是一个强大的理念,我们可以帮助社区了解。这将有助于通过升级工具在提案变更之间(或者如果提案被搁置/中断)进行过渡。

长期来看:

🌐 And long term:

  • 提案推进:我们的目标是让提案的倡导者能够通过 JavaScript 社区中的“真实世界”用例来获得验证。这最终只有在插件被采纳、人们有足够时间使用并理解其影响,以及有流程与 TC39 委员会进行对话和反馈的情况下才可能实现。我们希望找到最佳方式,成为更多社区成员理解 TC39 流程并从根本上参与改进 JavaScript 的资源。这需要及时创建并维护跟踪提案的插件,而这又需要相当大的努力。对于早期阶段的提案插件尤其如此,因为这些插件需要随着提案更新而持续维护。
  • 教育:与此相关的是希望帮助更多开发者理解他们使用的工具。许多工具和框架,特别是在 JavaScript 生态系统中,都是基于类似的核心概念(比如 AST)。让大家站在同一起跑线上,可以让更多人参与贡献、修复问题,并提出新的想法。语言开发的门槛很高,而我们的项目可以帮助降低这个门槛。

公司和个人以前是怎么帮忙的​

🌐 How Companies and Individuals Have Helped Before

我们知道,作为维护者,我们需要为我们的项目以及整个开源进行宣传。到目前为止,我们的努力包括以下几个方面:

🌐 We know that as maintainers we need to do outreach for our project and for open source as a whole. Our efforts up to this point have consisted of the following:

  • Thinkmill 在 Sebastian(Babel 的创造者)在那里工作的期间资助了他 3 个月的兼职工作,专注于 Babel。随后,他在 Cloudflare 又做了 3 个月的 Babel 兼职工作。之后,他在 Facebook 全职工作了将近 12 个月,这期间包括 Babel 6 的完整发布。
  • 在亨利在那里的工作期间,Adobe 资助了他在Babel项目上 50% 的工作。
  • 我们在面向内部开源的黑客松活动中帮助过公司,包括 Condé Nast 和 Bloomberg,还在像 Netflix 这样的公司举办过关于开源和 Babel 开发的工作坊。
  • 在像 Spotify/Facebook 这样的公司、本地聚会、训练营、像伯克利这样的大学发言,并参加Hacktoberfest 活动。

支持这个项目不仅限于资金方面。不同公司允许员工在工作时间内实现一些特定功能:

🌐 Supporting the project is not limited to just financial means. Different companies have allowed their employees to implement some specific features during their working time:

  • 彭博 的团队已经实现了对不同类特性的支持(比如私有字段),并且目前正在使用官方 ECMAScript 测试套件(Test262)对 Babel 的转换进行自动化测试
  • Trivago,它也是一个基础支持赞助商,已经实现了部分应用提案
  • RunKit 一直以承包商的身份与 Nicolò 合作,在 @babel/template 中实现语法占位符。

支持最终可以成为一个机会,与维护者交流和学习,向项目提供真实的反馈,并建立长期的关系。

🌐 Support can ultimately an opportunity to talk and learn from maintainers, provide real-world feedback to the project, and build a long-term relationship.

我们从与维护者的关系中获得了许多宝贵的想法。这几乎就像是雇用世界上最优秀的人才,只是时间有限。Open Collective让像我们这样的公司能够接触到一个内部无法打造的多样化人才池。- Guillermo Rauch

想参与吗?在[你可以如何帮助]部分了解更多信息。(#how-you-can-help)

🌐 Want to get involved? Learn more in the How You Can Help section.

结论​

🌐 Conclusion

在理想的世界里,Babel 甚至根本不需要。不过,实际上,JavaScript 的未来提案、厂商何时能实现它们(Stage 3 之后)、某个网站支持哪些浏览器,以及某个库支持哪些 Node.js 版本之间总会存在差距。在这个功能的滑动窗口中,像 Babel 这样的工具就能提供很大的价值。

🌐 In an ideal world, Babel wouldn't even be necessary. However, in practice, there may always be gaps between where JavaScript is at with future proposals, when vendors can implement them (after Stage 3), what browsers a given website supports, and what Node.js versions are supported for a given library. In that sliding window of functionality is where a tool like Babel can provide significant value.

虽然我们对 Babel 未来的发展感到兴奋,但团队已经在相当长一段时间里努力跟上项目当前的需求。实现我们的资金目标不仅能让我们更好地满足项目当前的需求,还能帮助推动它迈向未来。

🌐 While we are excited for where Babel will go in the future, the team has been struggling to keep up with the current demands of the project for quite some time. Meeting our funding goals will allow us to not only better meet the current needs of the project, but also help push it into the future.

我们希望你能加入我们,支持这个社区,无论是通过赞助核心团队还是参与项目。

🌐 We hope you will join us in supporting this community, whether through sponsorship of the core team or getting involved in the project.

谢谢,希望不论是在现场还是在 GitHub 上都能见到你!

🌐 Thanks and we hope to see you around, whether in-person or on GitHub!