On Open Source Sustainability
I love working on OSS projects. I love seeing that what I built is useful to others.
These projects are usually created from passion, addressing our own needs and that of others like us - who face the same (usually) niche problem.
With enough time, these projects grow, receive feature requests and require more maintenance.
I can't speak for everyone, but I would love to put more time into my projects. Unfortunately this competes with my need to have a steady salary and my desire for a certain quality of life.
In an ideal world, I would work on my OSS projects full time, with a couple of friends (so it's not so lonely!). I want to figure out how to make this possible, or at least slowly take steps towards it.
I imagine myself slowly decreasing the amount of hours in my contract with my employer, while improving my OSS projects and getting more donations until its sustainable. Not every employer would agree to this, but that's one of many issues I will face.
Is Working On OSS Sustainably Even Possible?
I've been developing a fairly popular GitHub project for about 4 years now called DASH.
It's a terminal UI for GitHub. Something I personally need given I live in the
terminal.
During those years I honestly constantly struggled with burnout, trying to find time to work on it and do what's expected of me in my day job. With more and more features added (that I myself use daily!) there's a lot more code to maintain. There's also a lot of tech debt. Remember - this is a side project I work on after I get home, pretty tired from the day.
At this time, over those 4 years, I've received around $15 in GitHub sponsors. This isn't a positive sign if I want to aim for a part time job.
Of course it isn't, you might say, it's open source! But, maybe if I try a different model, people would show support... Many minds are trying to think about sustainability in OSS. I'm just throwing my thoughts out there in the hopes that someone builds on them.
I kept thinking - I really love working on terminal UIs, wouldn't it be awesome to work on this full time?
So I read, and listened to podcasts and talked to friends. And then the second guessing started.
I would be lonely. I wouldn't have anyone to bounce ideas off of. And working remote isn't for me! Even if I had a real partner to help me with my OSS, it would be remote.
I really like the water cooler conversations, the small banter etc. of being in an office.
So, my next move was to start out small. Let's see if I can make any money off of OSS to get a glimpse of what working on it even part time would do.
Weighing Monetization Options
The first option was to simply work on a new project and offer it at a flat fee.
Great! but... then it wouldn't be open source, and I love open source!
It would also be hard to get a constant, sustainable stream of income. I'd need to generate a pipeline, a word I try to avoid ever saying!
What if I offer it as a monthly payment? would people actually pay monthly? There are so many subscriptions nowadays, it's actually kinda sickening.
There's also the question about how would I also publish it as open source?
Taking money raises questions. How long should I work on something until I feel like it's worth a payment?
Sponsorware
That's where I heard about the sponsorware model - first talked about by Caleb Porzio.
It seemed like something I would be comfortable with. At least enough to give it a try.
Essentially, sponsorware is where supporters of your work pay a monthly subscription. In return they get access to a private GitHub org, that contains yet to be released projects.
They would have access to the code as they would be full collaborators on those projects. They would support my main work on OSS as well as those new projects.
It isn't a subscription in the usual sense - you can keep using, storing the code and the binaries long after you canceled your sponsorship.
It works on trust. There's nothing that prevents people from forking and repackaging my projects.
When enough sponsors join and I hit my target, I can release the project to everyone and start working on more exclusive content. That target is displayed publicly for everyone to see.
It might be sustainable?
Launching My Insiders Program
- I went ahead and forked Caleb's sponsors project. This sets up a server that automatically adds sponsors to my private GitHub org.
- I worked on a project called
ENHANCE- a TUI for GitHub actions. - I set up a nice looking landing page with a FAQ.
- Finally I decided on a target I want to hit before I open source the project. It's published and updated live on the website.
All of this took a lot of time and I'm proud of what it turned out to be.
So How's It Going?
The TL;DR is that it's a lot better than I expected but nothing close to any trajectory that will ever allow me to commit to a part-time job.
At the time of writing this, I've reached 60% of the goal! That's about $90 a month. Hopefully it will stay that way next month and grow.
The current progress can be found in the ENHANCE homepage.
Every $5 I receive is honestly more rewarding than any raise I get at work. It's still amazing that people would show support like that.
With this I get to treat myself with a new gadget, keyboard, fancy dinner etc. I still wish more people would show support, if it's within their means, to allow for better, more maintained OSS projects. My goal is to enable me to work on it part time.
Sponsoring Other Projects
Asking people for money, I realized I myself wasn't supporting maintainers enough.
I have been donating to Neovim for over 3 years now, but other than that, I didn't help individuals whom software I use.
Here's just a short list of maintainers that I think deserve more support:
- Nikita Bobko - the creator of Aerospace, an i3-like tiling window manager for macOS that I use daily
- Simon Hauser - the maintainer of telescope.nvim, an amazing picker for Neovim.
- Steve Francia - I use many of his libraries when building terminal UIs.
- Christian Muehlhaeuser - developed many useful CLI apps and libraries I use daily.
- Junegunn Choi - maintainer of fzf among other things
- Marco Kellershoff - I use his excellent kulala.nvim Neovim plugin as a Postman alternative.
- Jesse Duffield - maintainer of lazygit and more.
- Sindre Sorhus - maintainer of so many NPM packages and many popular projects
- Darren Burns - for his work on posting and more recently dunk!
- Liam Stanley - for his work on bubbletint and bubblezone - amazing libraries for anyone who develops TUIs
- And there are so many more that deserve my donation...
These are personal accounts, of people in a similar situation to mine. There are many maintainers who work under GitHub "organizations" that should get a lot more support, but listing them all is impossible.
How Can You Find Who To Sponsor?
I would suggest going over your stars with a filter of "Can be sponsored" - these are mine.
Those accounts would have a sponsor button next to their account name. This is a direct way of supporting maintainers. The best part is that GitHub doesn't take any cut.
There's also this project called thanks-stars that I've used before. It detects the dependencies you use in your project and stars them. You can use it to also give a larger appreciation and donate with PRs, issues or monetarily.
I'm sure I'm missing some tools and resources.
Should I Pay For Everything?
Not at all.
Spreading by word of mouth something you enjoy using, opening issues and PRs, working on documentation are just some of the ways you can show support.
If you use something enough over time, and you're willing to, you can provide monetary support as well. A small amount can really motivate a maintainer. It's not must.
It pays for itself. You get more features, the project is more sustainable and you become a part of a community.
You're not paying some big corporation, who would use it to fund more red tape, features users don't want or to make line go up. Your data isn't sold to anyone. You can fork their code, modify it however you want etc.
You pay an individual who's focus is solely on the project and its users.
If you can't afford it right now, it's really not a must.
If we support each other, just a tiny bit, we could make the stuff corporations won't work on. Stuff that aren't the next big thing, that won't make billions in revenue but are useful to a specific niche group of people.
If you can make your company pay for open source, even better.
Hope these ideas bounce off of other people and we can figure out how to sustainably work on open source.
❤️