date: 2020-01-21 layout: post title: The happinesses and stresses of full-time FOSS work
tags: [foss, maintainership]
In the past few days, several free software maintainers have come out to discuss the stresses of their work. Though the timing was suggestive, my article last week on the philosophy of project governance was, at best, only tangentially related to this topic - I had been working on that article for a while. I do have some thoughts that I’d like to share about what kind of stresses I’ve dealt with as a FOSS maintainer, and how I’ve managed (or often mismanaged) it.
February will mark one year that I’ve been working on self-directed free software projects full-time. I was planning on writing an optimistic retrospective article around this time, but given the current mood of the ecosystem I think it would be better to be realistic. In this stage of my career, I now feel at once happier, busier, more fulfilled, more engaged, more stressed, and more depressed than I have at any other point in my life.
The good parts are numerous. I’m able to work on my life’s passions, and my projects are in the best shape they’ve ever been thanks to the attention I’m able to pour into them. I’ve also been able to do more thoughtful, careful work; with the extra time I’ve been able to make my software more robust and reliable than it’s ever been. The variety of projects I can invest my time into has also increased substantially, with what was once relegated to minor curiosities now receiving a similar amount of attention as my larger projects were receiving in my spare time before. I can work from anywhere in the world, at any time, not worrying about when to take time off and when to put my head down and crank out a lot of code.
The frustrations are numerous, as well. I often feel like I’ve bit off more than I can chew. This has been the default state of affairs for me for a long time; I’m often neglecting half of my projects in order to obtain progress by leaps and bounds in just a few. Working on FOSS full-time has cast this model’s disadvantages into greater relief, as I focus on a greater breadth of projects and spend more time on them.
The attention and minor fame I’ve received as a result of my prolific efforts also has profound consequences. On the positive line of thought, I’m somewhat embarrassed to admit that I’ve noticed my bug reports and feature requests on random projects (or even my own projects) being taken more seriously now, which is almost certainly more related to name recognition than merit. I often receive thanks and words of admiration from my… fans? I guess I have those now. Sometimes these are somewhat unwelcome, with troubled individuals writing difficult to decipher half-rants laden with strange praises and bizarre questions. Other times I’m asked out of the blue to join a discussion I was unaware of, to comment on some piece of technology I’ve never used or to take a stand on some argument which I wasn’t privy to. I don’t enjoy these kinds of comments. But, they’re not far removed from the ones I like - genuine, thoughtful praise arrives in my inbox fairly often and it makes the job a lot more worthwhile.
Of course, a similar sort of person exists on the opposite extreme. There are many people who hate my guts and anything I’ve ever worked on, and who’ll go out of their way to let me and anyone else who’ll listen to them know how they feel. Of course, I have earned the ire of no small number of people, and I regret many of these failed interpersonal relationships. These cases are in the minority, however - most of the people who will tell tales of my evil are people who I’ve never met. There’s a lot of spaces online that I just won’t visit anymore because of them. As for the less extreme of this sort of person, I’ll also reiterate what others have said - the negative effects of entitled, arrogant, or outright toxic users is profound. Don’t be that person.
In either case, I can never join new communities on the same terms as anyone else does. At least one person in every new community already has some preconception of me when I arrive. Often I think about making an alias just to enjoy the privilege of anonymity again.
A great help has been my daily interactions with the many friends and colleagues who are dear to me. I’ve made lifelong friends of many of the people I’ve met through these projects. Thanks to FOSS, I have met an amazing number of kind, talented, generous people. Every day, I’m thankful to and amazed by the hundreds of people who have found my ideas compelling, and who come together to contribute their own ideas and set aside their precious time to work together realizing our shared dreams. If I’m feeling blue, often all it takes to snap me out of it is to reflect on the gratitude I feel for these wonderful people. I’ll never be able to thank my collaborators enough, but hell, I could stand to do it some more anyway.
I also have mixed feelings about how busy I am. Every day I wake up to a hundred new emails, delete half of them, and spend 3-4 hours working on the rest. Patches, questions, support inquiries, monitoring & reports, it’s endless. On top of that, I have dozens of things I already need to work on. The CI work distribution algorithm needs to be completely redone; I need to provision new hardware — oh yeah, and, the hardware that I need ran into shipping issues, again; I need to improve monitoring; I need to plan for FOSDEM; I need to finish the Wayland book; I need to figure out the memory issues in himitsu — not to mention write the rest of the software; I need to file taxes, twice as much work when you own a business; I need to implement data export & account deletion; I need to finish the web-driven patch review UI; I need to finish writing docs for Alpine; I have to work more on the PinePhone; I have a legacy server which needs to be overhauled and is now on the clock because of ACMEv1; names.sr.ht needs to be finished…
Not to mention the tasks which have been on hold for longer now than they’ve been planned for in the first place. Alpine is still going to have hundreds of Python 2 packages by EoL; the ppc64le server is gathering dust in the datacenter; there’s been some bug with fosspay for several months, in which it doesn’t show Patreon figures unless I reboot the process every now and then; RISC-V work is stalled because the work is currently blocked by a large problem that I can’t automate; the list of blog posts I want to write is well over 100 entries long. There are several dozen other loose ends I haven’t mentioned here but am painfully aware of anyway.
That’s not even considering any personal goals, which I have vanishingly little time for. I get zero exercise, and though my diet is mostly reasonable the majority of it is delivery unless I get the odd 2 hours to visit the grocery store. That is, unless I want to spend those 2 hours with my friends, which means it’s back to delivery. My dating life is almost nonexistent. I want to spend more time studying Japanese, but it’s either that or keeping up with my leisure reading. Lofty goals of also studying Chinese or Arabic are but dust in the wind. I’m addicted to caffeine, again.
There have been healthy ways and unhealthy ways of dealing with the occasional feelings of being overwhelmed by all of this. The healthier ways have included taking walks, reading my books, spending a few minutes with my cat, doing chores, and calling my family to catch up. Less healthy ways have included walking to the corner store to buy unhealthy comfort foods, consuming alcohol or weed too much or too often, getting in stupid internet arguments, being mean to my friends and colleagues, and googling myself to read negative comments.
Despite being swamped with all of this work, it’s all work that I love. I love writing code, and immeasurably more so when writing my code. Sure, there are tech debt skeletons in the closet here and they’re keeping me awake at night, but on the whole I feel lucky to be able to write the software I want to write, the way I want to write it. I’ve been trying to do that my entire life — writing code for someone else has always been a huge drain on my emotional well-being. That’s why I worked on my side projects in the first place, to have an outlet through which I could work on self-directed projects without making compromises for some arbitrary deadline.
When I’m in the zone, writing lots of code for a project I’m interested in, knowing it’s going to have a meaningful impact on my users, knowing that it’s being written under my terms, it’s the most rewarding work I’ve ever done. I get to do that every day.
This isn’t the retrospective I wanted to write, but it’s nice to drop the veneer for a few minutes and share an honest take on what this is like. This year has been nothing like what I expected it to be - it’s both terrible and wonderful and very busy, very goddamn busy. In any case, I’m extremely grateful to be here doing it, and it’s thanks to many, many supportive people - users, contributors, co-maintainers, and friends. Thank you, thank you, thank you, thank you.