Happy new year! This is always a weird “holiday” for me, since all of the fun happened last night. Today is just kind of… I guess a chance for everyone to sober up before work tomorrow? It does tend to invite a sense of reflection and is the ideal time to plan for the year ahead. One of my goals in 2019 is to change more people’s thinking about the open source community and what it means to count among their number.
I think there’s a certain mode of thinking which lends itself to a more productive free software community and a happier free software contributor. Free software is not theirs - it’s ours. Linux doesn’t belong to Linus Torvalds. Firefox doesn’t belong to Mozilla, vim doesn’t belong to Bram Moolenaar, and ffmpeg doesn’t belong to Fabrice Bellard. These projects belong to everyone. That includes you! In this way, we reap the benefits of open source, but we also shoulder the responsibilities. I’m not referring to some abstract sense of reponsibility, but the tangible ones, like fixing bugs or developing new features.
One of the great things about this community is how easy it is to release your software under a FOSS license. You have no obligations to the software once it’s released, except the obligations you hold yourself to (i.e. “if this software makes my computer work, and I want to use my computer, I need to keep this software in good working order”). It’s important for users to remember that they’re not entitled to anything other than the rights laid out in the license, too. You’re not entitled to bug fixes or new features - you’re empowered by free software to make those changes yourself.
Sometimes, when working on sway, someone says something like “oh, it’s a bug in libwayland”. My response is generally along the lines of “I guess you’re writing a libwayland patch then!” The goal hasn’t changed, only the route. It’s no different from being in the weeds and realizing you need to do some refactoring first. If a problem in some FOSS project, be it a bug or a conspicuously missing feature, is in the way of your goals, it’s your problem. A friend of mine recently said of a missing feature in a project they have nothing to do with: “adding FreeBSD 12 support is not yet done, but it’s on my todo list.” I thought that perfectly embodied the right way to think about FOSS.
When applying this philosophy, you may occasionally have to deal with an absentee maintainer or a big old pile of legacy spaghetti code. Fork it! Rewrite it! These are tough marbles but they’re the marbles you’ve gotta deal with. It’s not as hard as it looks.
The entire world of free software is your oyster. Nothing is off-limits: if it’s FOSS, you can work on it. Try not to be intimidated by unknown programming languages, unfamiliar codebases, or a lack of time. You’ll pick up the new language sooner than you think1, all projects are similar enough when you get down to it, and small amounts of work done infrequently adds up over a long enough time period. FOSS doesn’t have to move quickly, it just has to keep moving. The Dawn spacecraft accelerated at 0.003 cm/s2 and made it to another world2.
Are you a free software maintainer who is struggling with stress, demanding users, overwork, or any other social problems in the course of your work? Please email me — I know how you feel, and I can lend a sympathetic ear and share some veteran advice.
Articles from blogs I follow around the net
With apologies, as usual, to Christopher Alexander. Satisfactory is a first-person factory construction game. COVID-19 has given me license to spend FAR too much time playing it, and I’d like to share a few thoughts that I hope might prove useful, or at le…via Aphyr: Posts June 21, 2020
A non-comprehensive and opinionated guide to best monitor for programmingvia tonsky.me June 17, 2020
Time for a new monthly status update! Let’s start with Wayland stuff. Once again I’ve continued working on wlroots’ DRM backend. I’ve submitted a bunch of bugfixes for all of the atomic refactoring done last month. I’ve also started working on integrating…via emersion June 17, 2020
Generated by openring