I love coding. It’s what gets me onto the computer most days of the week and keeps me doing side projects.
I also love open source software. I love how a worldwide community of coders is constantly pushing forward the latest and greatest in technology.
Although I’ve enjoyed being a full-time software developer for seven years or so, I’m tired of doing it 40 hours of week for a company. Working with other developers for hours a day is great -collaborating, learning, and mentoring- but it’s draining even when there’s not a global pandemic. All my favorite projects through my career have been things that directly benefit other developers and/or substantially involve open source contributions.
That’s why I’m quitting my job to become a full time open source maintainer.
My last day at Codecademy will be January 28th, 2022. I’m taking February partially off to relax, then fully starting in March I’ll be dedicating work time to contributing to open source software projects.
Skip down to What is open source software? below if you don’t know what that all means.
Why Be an Open Source Maintainer?
Because it’s fun
My dream since I’ve learned to code was to spend my days working on interesting projects and growing myself as a developer. I’m doing this because I want to and I’ve accumulated enough financial stability to not worry about not making money while pursuing my passion.
Because it’s good for me
Working in open source software has been one of the single biggest accelerators of my career. It’s given me exposure to people and technology I never would have come into contact with. I’ve gotten to collaborate with some of the best people in the industry on some of the coolest projects. And it’s great for my social media presence.
Because it’s good for everyone
Part of what makes open source work so fun is that it improves the developer experience for people around the world.
When I improve an error message to TypeScript, TypeScript beginners everywhere have a bit less bad of a time deciphering its complaints.
When I write an ESLint rule (shoutout to my favorite,
no-floating-promises!) that catches classifications of bugs, it’s like I’m pointing out issues to developers worldwide.
I love it!
Because the software world will keep breaking until we fix open source
Remember Log4Shell? Color & Faker’s liberty commits? xkcd’s Dependency comic?
The way we fund open source software today is partially broken. Maintainers sign on for fun, for glory, and/or out of good intentions, then find themselves overwhelmed with demanding users. Most of us don’t make any direct income from the experience, and out of those who do, it’s mostly small donations on the scale of $5-10/month. Ludicrous!
I want to jump into this wacky world of open source and make a better, more equitable system for maintainers and their projects. I don’t know yet what that would look like -standardized company sponsorship pledges? public sponsorship funds? radical distribution model rewrites?- but something needs to get done.
I plan on working on a mix of projects that are useful to others and/or fun for me.
My core most valuable open source contributions have mostly been around web static analysis — the art of scrutinizing code for information or potential issues without running it. These projects are the ones I’m hoping to focus on:
- TypeScript: Contributing any way I can. You can see more under “TypeScript Contribution Diary” posts elsewhere on my blog.
- TypeScript ESLint: Monorepo for all the tooling which enables ESLint to support TypeScript. I joined on as a maintainer recently.
- eslint-plugin-expect-type: ESLint plugin with $ExpectType, $ExpectError, and $ExpectTypeSnapshot type assertions. I’d love to make the story of testing Typescript types good in 2022.
These projects I do because I think they’re fascinating and/or fun, if not particularly useful:
- EightBittr: Bare-bones, highly modular game engine for 2D 8-bit games. I want to finally make it performant and have a good level editor & random map generation support as first party modules.
- Budgie: A unified syntax that compiles into your favorite OOP languages. I want to finish writing it in itself (“dogfooding”), then make a really great docs site to show it off.
- Emojisplosion: 💥Blasts 😄emoji😊 like 🎆fireworks🎇 all up in your 💻HTML 📄page. 😚😍. A cute little project I want to update for the latest emoji specs and create more integrations around such as the also-very-cute Konamimojisplosion.
I’ve set up my GitHub Sponsors page with suggested sponsor tiers for individuals and companies. If you want to sponsor me I’d greatly appreciate it. 💝
My first company-based sponsorship starting in March will be $4000/month from Codecademy (10 hours a week, $100/hour) to work on open source projects its frontend teams use.
That’s a excellent gig and I’m tremendously grateful to have it.
You can track the projects we’re working on in my Codecademy Consulting Notion doc.
Update 5/26/2022: Codecademy reneged on this offer after getting acquired. I’m told investments like this one are severely limited because of the Skillsoft acquisition. Disappointing.
I’m also writing an O’Reilly Learning TypeScript book set to publish the middle of this year and working with O’Reilly on more TypeScript content.
Is this related to Skillsoft acquiring Codecademy?
Nope. I told my managers I was thinking of quitting in early 2021, then made it official at the start of December 2021. I didn’t learn about the acquisition for another few weeks. Awkward timing.
Do you have serious drama with Codecademy?
…if I did, I wouldn’t continue to work with them! 😉
Codecademy’s engineering department was -and still is- a wonderful place to work. I’m still recommending people apply to join my old team, Web Platform. Let me know if you’re interested!
What is open source software (OSS)?
Software whose source code anybody can see. Commonly associated with free open source software (FOSS), and a superset of projects anybody can contribute to.
The vast majority of software today is built primarily on free open source software, including most popular programming languages (Go, Ruby, TypeScript, …) and platforms (Next.js, Rails, …). Codecademy’s blog has a great article on it: Understanding open source software: A Q&A. I’d also highly recommend Working in Public by Nadia Eghbal for a deeper dive on its history, importance, and many of the problems it faces today.
What is an open source maintainer?
Someone who helps run an open source project.
Sometimes that’s as small as the sole developer on a project who writes and releases all the code on their own. They might review filed requests (often in the form of GitHub issues) and submitted code contributions (“pull requests”) from other developers who use the project.
Other times that’s on a bigger project with multiple other maintainers. Maintainers of those projects have to coordinate releases, steer the project in the right direction, and generally do documentation and developer support work for the project.
Why fund me?
In general, sponsoring me to work on open source will keep me advancing the tooling for web developers worldwide. 🌐
You can see the specific tiers on my GitHub sponsors page, such as supporting your company or project in using web tooling.
How long will you be an open source maintainer?
At least 3 months, and hopefully for at least 6 months if I don’t really dislike it. Otherwise I don’t know.
Why not go part time at a company and still do open source?
I’m exhausted, mentally and physically. My privilege in life has gotten me to the point where I don’t have to work full time if I don’t want to. So I’m going for it.
What will you do next?
I don’t know.
What do you think of companies profiting off of open source for free?
What a big topic! I think it’s a much more difficult question than most people give it credit for. I want to put a lot of thought into this in 2022 and network with other open source people to learn about this area.
At the very least, there are three layers of issues I think we’ll have to get through:
- Companies profit off open source without contributing back. That’s morally wrong and architecturally risky: profitable companies should support the projects that enabled their success, especially when the projects are run by overworked volunteers.
- Company sponsorship is an injection of capitalism -cash!- into a world that prides itself on being open and free. We’ll need to set up systems to prevent bad actors from, say, influencing projects unduly or spamming Sponsored By advertisements everywhere.
- The trust model of taking dependencies on unvetted open source software and being encouraged to update dependencies frequently is broken. We need much more intelligent automations and security scanning.
Nobody fully knows yet how to solve any of those three points in full. I look forward to us finding out, and dread us messing them up.
Are you excited?
You bet I am!
I’m hopeful I get to make a real positive impact in the open source world and live a happier life myself for a while.
Let me know on my email or @JoshuaKGoldberg on Twitter or if you want to chat open source or have projects for me!