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.
Expected Projects
I plan on working on a mix of projects that are useful to others and/or fun for me.
Static Analysis
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.
- TypeStat: Converts JavaScript to TypeScript and TypeScript to better TypeScript. Once I nail down common bugs I think this is going to be a wonderful tool for many projects.
- 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.
Side Projects
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.
Expected Funding
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.
FAQs
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!