Open source software —software whose source code is freely available to anybody who wants it— has been a passion of mine for years. That’s why I quit my job at the end of January 2022 and started working full time on open source software in March of 2022 — six months ago last week! It’s been an exhilarating journey so far, and I’m happy to say I’m going to keep doing it for the foreseeable future!
The bright side of open source is that I’ve gotten to work on projects that I find technically interesting and/or push the state of modern web development forward. The dark side of open source, though, is that we as an industry have not figured out how to make open source financially sustainable for the vast majority of maintainers.
I’ve gotten a chance to work with some amazing people on fascinating projects. Here’s a quick summary of the most notable open source work I’m proud of:
- Numerous bugfixes, documentation improvements, and features in TypeScript ESLint
- I’m particularly happy with the work I did on automating rule docs
- Numerous bugfixes, documentation improvements, and features in TypeStat
- Adding a Method Expression mutator to Stryker
- Taking over maintenance of eslint-plugin-expect-type and fixing a few bugs
- Sending a couple bugfixes in TypeScript itself
- Releasing learningtypescript.com with dozens of free articles and projects for TypeScript
- Releasing chooseyourframework.dev, which involved a whole suite of refactors and improvements to EightBittr
- Open sourcing a Refined Saved Replies Chrome extension
Right now, having done all that work in public, I net about $600/month in open source sponsorships:
- $200/month on my own GitHub sponsors page
- $400/month for my portion of TypeScript ESLint sponsorships
For reference, $600/month of a full time job is roughly half the U.S. federal minimum wage ($7.25 per hour, or ~$1,200/month). My base salary in 2021 earned me more money each work day than a month of my open source salary now.
I’ve brought my income up to tolerable levels by consulting with private companies, releasing the Learning TypeScript book, and reviewing occasional pull requests on pullrequest.com. But, those side gigs take my time and energy away from open source work. It’s a mild vicious cycle: I don’t earn a sustainable amount as an open source maintainer, so I have to work on side gigs, which takes time away from my open source work, which makes it harder for me to promote myself and land sponsorships.
Fortunately, I expect the sponsorships to grow as I make more of a name for myself and my projects. My goal is to reach $1000/month by the end of 2022.
I’ve learned a heck of a lot on this open source adventure, and have a heck of a lot more to go. These are the three biggest areas of learning I’ve been thinking on.
There are a lot of fun open source projects available I could work on, ranging from cute toys to high impact developer tooling. At first I resisted the urge to hop around. I tried to force myself to work on what I thought was highest impact and visibility. But, that’s not how my mind works. I’m most productive when I’m working on my daily flight of fancy.
These days I keep a list of projects I’m interested in and flit between them as I get motivated. I’ll only force myself to stay focused on a project if there’s something time sensitive, such a critical bug.
Lesson: I’m most productive when I’m following my passion.
I don’t like bragging or asking for anything. It feels wrong to spend precious time begging for money on the internet (like this post!). My instincts tell me that if I’m doing good and important work then people should compensate me appropriately.
But, that’s not how the world works. Nobody will know about me unless I actively promote myself. And when others know who I am and what I work on, they now have a person who can learn about their ideas and/or address their pain points. This promotion can create ripple effects since word of mouth also spreads as more and more people know about me.
Reading Influence is your Superpower by Zoe Chance helped get me comfortable making waves. It’s a great read for anybody struggling with asking for help and/or growing their voice.
Lesson: I shouldn’t be afraid to promote myself.
Being paid by sponsors is much more direct than working for a corporation. I feel emotionally linked to people’s sponsorships. For a while I was reluctant to grab nice coffees, go on dinner dates, or otherwise spend on myself. My sponsors are giving me money to work on open source, who am I to blow it on luxuries?
But, that mindset is neither healthy nor fair to myself. I shouldn’t be expected to give up on fun expenses because I’ve switched to sponsorships. And I can’t produce my best work if I’m restricting myself to the bare essentials.
I’m not going to go out of my way to blow money on unnecessary shenanigans, but I won’t deprive myself either.
Lesson: it’s ok to treat yourself sometimes.
If you thought my current list of projects was fun, just wait until you see what’s coming up in the next six months! My goals for Spring 2023 are:
- Collaboratively get TypeScript ESLint to a new 6.x major version
- Learn the internals of TypeScript ESLintx and start meaningfully progressing on at-scale performance issues
- Bring TypeStat up to the point where it’s stable and working on common React projects
- Standardize tooling and tackle immediately useful bugfixes and features across my smaller repos: emojisplosion, konamomijisplosion, console-fail-test, eslint-plugin-expect-type, etc.
- Continue adding to learningtypescript.com/articles for the most frequently asked TypeScript questions
…and who knows what else?! One of the magical parts of open source web development is how ever-changing the landscape is. I look forward to learning what innovations will be state-of-the-art even months from now.
All those great goals don’t come cheap. I’d greatly appreciate any support you can give me to make full time open source work sustainable.
- 👉 github.com/sponsors/JoshuaKGoldberg 👈: the most direct way to help get more open source work done is with a monthly sponsorship on GitHub Sponsors.
- If want one direct way to support me, this is the best one!
- opencollective.com/typescript-eslint: if you want to support the general TypeScript ESLint maintenance team, that would be great too.
- learningtypescript.com contains links to buy my Learning TypeScript book. A five star review is surprisingly helpful in promoting it.
- twitch.tv/JoshuaKGoldberg and twitter.com/JoshuaKGoldberg: following/liking/subscribing helps increase my reach.
- If you run a conference, meetup or podcast, reach out to me: I’d probably love to join!
If you or your coworkers write TypeScript code, help me help you! The more support I get to work on TS means the less you have to do to get TS working efficiently for your own work. Let me know over email or @JoshuaKGoldberg on Twitter if there are any projects in particular that you’re interested in.
Thanks for reading - and happy open sourcing, everyone! 💖
Many thanks to Kenny Lin for invaluable proofreading & suggestions in authoring this article!