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 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.
This has been a big win for the team, but we're finding that it is not enough.
Babel's popularity has increased exponentially, going from 3M downloads per week in March 2018 to 16M downloads per week today.
Babel is now involved in the TC39 standards process as participating members in meetings and discussions. "Is there a Babel plugin already?" is a common question for new proposals.
Babel has become so embedded as underlying infrastructure that most developers interact with it indirectly, including in CLIs such as
create-react-app, bundlers like Parcel, frameworks like Next.js, and many npm libraries.
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.
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.
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.
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!
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
You can financially contribute to Babel on our 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.
We're happy to start with an email to chat about working together, but we'd also be glad to meet in-person or plan out a visit!
- Henry is based in NYC and will be in the Bay Area November 4th-15th.
- Nicolò is based in Italy and will be in Moscow November 6th-10th.
- Brian is based in Houston, TX.
- Jùnliàng is based in Ontario.
- Kai is based in the New York City area.
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:
Stability: This includes checking against the official test262 tests. This support gives us a better sense of our spec compliance so we know what is missing, adding smoke tests using Babel itself and our top dependents, in addition to our own tests. Reliability is extremely important to us given our position in the ecosystem.
Debuggability: We would like to implement better warnings/errors on configuration and explain what is being outputted to help users make decisions on code size. Given the complexity of a pluggable tool tracking an ever-changing specification, it can be hard to hide the complexity. We would really like to spend time on making our usage more accessible.
General ecosystem support: This includes what we can do to help libraries publish ES2015+ code and for developers to target new browsers and ship less code (your own code, node_modules, polyfills) when possible, while still making it accessible for all browser users.
Codemods: We would like to put more emphasis on the opposite direction of code transformation (aka 5to6, Lebab), which is a powerful idea that we can help educate the community about. This would help with the transition between changes in the proposal (or if it's dropped/stalled) via an upgrade tool.
And long term:
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:
- Adobe funded 50% of Henry's work on Babel during his time working there.
- We've helped companies during internal open source-oriented hackathons, including Condé Nast and Bloomberg and hosting workshops on open source and Babel development at companies like Netflix.
- Speaking at companies like Spotify/Facebook, local meetups, bootcamps, universities like Berkeley, and participating in Hacktoberfest events.
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:
Bloomberg's folks have implemented support for different class features (like private fields), and are currently working on automatic testing of Babel's transforms using the official ECMAScript test suite (Test262)
Trivago, which was also a Base Support Sponsor, has implemented the partial application proposal
RunKit has been working with Nicolò as a contractor to implement syntactic placeholders in
Support can ultimately an opportunity to talk and learn from maintainers, provide real-world feedback to the project, and build a long-term relationship.
We get a lot of valuable ideas from our relationships with maintainers. It's almost a proxy for hiring the best people in the world, only for a limited amount of time. Open Collective gives a business like ours access to a diverse talent pool that would be impossible to build internally. - Guillermo Rauch
Want to get involved? Learn more in the How You Can Help section.
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.
Thanks and we hope to see you around, whether in-person or on GitHub!