Making a living making open source

Interview with Henry Zhu, core maintainer of Babel and explorer of the human side of open source. A couple years ago, Babel was a project everyone was using but not many were funding. Now it’s enabled Henry to leave his day job to work on open source full-time.

What is Babel?

Babel is a code translator, specifically a JavaScript compiler. Babel’s main purpose is to be an abstraction over browser environments, similar to what jQuery did back in the day, but for syntax. It enables developers to use the latest JavaScript syntax features, while still being compatible with the widest range of browsers, even old ones.

How did you get involved?

I got involved with Babel through working on linters (first via JSCS then ESLint), and realizing they all used ASTs (Abstract Syntax Trees). I first worked on an intermediate tool called babel-eslint and then on Babel itself. I got a shoutout during the huge Babel v6 release in 2015, which led me to continue working and prove myself.

Like many maintainers, I just showed up. And like many open source projects, there weren’t (and still aren’t) that many people working on it. So I ended up sticking with it.

“Like many maintainers, I just showed up and stuck with it.”

Why did Babel start fundraising?

Core maintainer Logan Smyth had quit his job, and projects like Webpack were getting enough funding to support people to work full time. So I thought we should start fundraising too.

Our ultimate goal was to help the project thrive. My personal goal was to help fund Logan, given he was working on his own time, and I figured that if I ever quit my job I might get funded someday too (which has now happened). I knew we would need some momentum and time for that to be possible, so we decided to make a start.

How has your financial base developed?

When we first started the Babel Collective, we weren’t even bringing in $1k/month. Slowly we built up to $4k/month, which is when I left my job to focus on Babel. Recently our budget looks a lot bigger thanks to a $100,000 grant from Handshake, which we split out as $10k/month. Once that’s over, the total will be around $20k/month.

“More companies should step up. Many open source projects are used by thousands of companies who don’t even know which ones they rely on or who is behind them.”

The reason we were able to grow our budget is that some people are very generous. We are thankful for that. Honestly, more companies should step up to match that kind of support. Babel, like many open source projects, is used by thousands of companies, many of which don’t even know what open source projects they rely on, or who the maintainers behind them are.

What has money made possible for the project?

Financial support has meant the world to me. It’s made it possible for me to work on Babel full time for over a year now.

Many developers aren’t normally thinking about money, networking, sponsors, and putting themselves out there. Sometimes it’s not that fun for me to think about, but it’s necessary.

We’ve used the money to send myself and others to conferences, pay Logan for his work, and help us buy equipment like a new computer for Nicolo and microphones for everyone so we can have better meetings (and hopefully soon a new Babel podcast).

I’m also learning about other complexities of going independent, like dealing with insurance, retirement, creating an LLC, and handling taxes. It would be great to have some information and guidance available specifically for people going full time on open source, about how to get set up, what to expense, and how to use money wisely.

The amount of money we’re raising may seem like a lot, but we realized we need to think about long-term sustainability. Any of the monthly sponsors could stop donating at any point. So we started thinking about how to entice sponsors to make a bigger, longer-term commitment.

“We need to think long-term. Any of the sponsors could stop donating at any point.”

How are you working for long-term sustainability?

Babel offers what we call a ‘base support’ tier, where sponsors commit to giving $2k/month for at least a year (or $24k annually). In return, they are featured on our website and get 2 hours/month of support from our core maintainers. We were inspired by Webpack and Vue, who have offered similar arrangements.

Babel’s top sponsors (May 2019)
“Base Support sponsors can get feedback on urgent issues much sooner, which is really worthwhile for them.”

When a sponsor becomes a base supporter, I create a channel where they can ask for specific help. That can be through Slack, a video call, or in-person if they are located near one of our core maintainers (I’m in NYC). I do most of the coordination and support myself.

It’s far better to communicate directly with companies using Babel, versus making them post on GitHub or Twitter and wait for someone to see it. If they have an urgent issue, they can get feedback much sooner as a base support sponsor, which is really worthwhile for them.

I don’t think many companies are aware we offer this service, so I’d like to get the word out more. To other Collectives considering offering a support tier, I’d suggest figuring out how to broadcast it.

How did you get the current base support sponsors—Airbnb, Trivago, and Adobe—to come on board?

I talked to each of these companies directly: I have contacts or know people there personally. Someone at the company has to be willing to do the work, and not forget or get too busy. Depending on bureaucracy, it can take months or years.

There is no magic formula. You need to learn what value you provide, what you can do for them specifically, and the company’s needs. You have to meet them where they are. Company size, tech stack, culture, and history all matter. Which budget the money will come from (engineering, marketing, hiring, etc) matters.

“The more companies give major support to open source, the more normal it becomes.”

I think that the more companies give major support to open source, the more normal it becomes. It is noticed in the community as a whole. Once a company steps up to support one project, they might be more willing to do it for others. So every win helps everyone.

When doubts come to the back of my mind, like “This isn’t your job…aren’t you supposed to just code?”, I remind myself that if I don’t do this, no one else will. It doesn’t happen on its own. In the beginning this is completely necessary, until some momentum builds up. How much time you want to put into it depends on your priorities, the project’s priorities, timing, what you’re good at or interested in, and many other factors.

“When I think, ‘This isn’t your job…aren’t you supposed to just code?’, I remind myself that if I don’t do this, no one else will.”

What is your advice to projects seeking to 20x their sponsorship, like Babel has?

No magic can make money suddenly appear, or convince sponsors to support you. You can look at success stories, but that’s colored by survivorship bias. Other projects have copied our tiers and formatting and are not getting the same level of funding.

I do think luck plays a role, but the main thing is: make it easier for companies to fund you, which is what I spend a lot of my time doing. It’s not like I just waited around and money turned up. People have no idea who you are even if they use your code. I just spoke at a friend’s company that uses Babel, and none of the people there knew who I was or that I was doing this full time.

“The main thing is: make it easier for companies to fund you. People have no idea who you are, even if they use your code.”

Even though I hate self-promotion, I am continually learning that all my actions are ‘marketing’ and presenting myself to the world. You have to put yourself out there: social media, cold emails, meetups and conferences. My advice is to take it slow, don’t quit your day job until you have the support you need, maintain your mental health, and keep your friends, in the project and in the wider community.

Final thoughts about sustainability for open source?

“You can make all the money in the world and still burn out — learn to say no when you need to.”

I’m trying to do this in a healthy way, not allowing money to consume my every thought and slowly turn me into someone who doesn’t even think about code anymore, let alone community.

My focus is on the people side of open source. You can make all the money in the world and still burn out, and you can work on open source without making it your life. Don’t burn out—learn to say no when you need to.

“If you build it they will come” isn’t going to save us, for getting users or money. Simply creating an Open Collective is just the first step. Making any money is difficult, let alone enough to do open source full time. I’m learning how complicated it gets, but I’m willing to work through these questions, knowing there isn’t any simple solution.


Interested in more of Henry’s thoughts about open source? Check out his podcasts, Hope in Source and Maintainers Anonymous. And support Babel!