Coding under the Public Eye
FOSS is all about coding in the open. There are different ways to do that, but all have in common that… well… the process in all of them ends in the code being published for everyone to have a look at. Nowadays, though, with the advent of code hosting platforms (“forges”), the usual thing is that we get to see every single commit,1 every faux-pass, every single step that has led to the current state of the project. That is way more than just FOSS, which in the end is a matter of what authors allow users to do with their code. Our current developmet model goes way beyond that: it’s Coding Under The Public Eye. And it comes with some… “features” I wanna discuss with all of you.
Let me start with a personal story, because… this is me and I love talking about myself…
When I started programming, it was me and only me. OK, I had a friend in school who’s an engineer now whom I coded with sometimes, but mostly it was a solo flight. And I guess most of us who started coding in the late 90s, early 00s share this same experience? I mean, occasionally I lurked in the QBASIC.com forums and that, but I never thought of sharing my horrible code… and everything was sort of… very one-directional. Yes, some people provided tutorials and guides or even source code, but as the web was back then: they published it on their website as a zip archive… and that was all. No commits, no logs, no obvious updates. Maybe some of that code got updated, but it wasn’t like there was an RSS feed available to tell you that.
I do remember the first time I got into a FOSS project with other coders. I was the novice and I was there to learn. It was a system restoring utility written in Python, designed for whatever version Ubuntu was back then. The team was composed by a very peculiar group that had met in an IRC chat room. It wasn’t even compatible with Debian. We were using Launchpad and that meant… Bazaar as our VCS. Bazaar was terrible, but what was a bit nerve-wracking for me was knowing that my code was there, easily available for everyone. I think this was 2009-ish, as I do recall I was already in college.
Fast forward to 2021 and… I still feel that everytime I push some code or do anything with my projects. I know I’ve improved a lot since I was a total beginner back in my Ubuntu days, I’ve learned a lot… but still… I do feel there’s always someone watching, especially since my projects are available as packages for some distros… which is great, don’t get me wrong, but I feel…
I feel the responsibility. No, I’m not developing a kernel used by millions of people. Yet I want to get things done in the best way I can… Yeah, I’m 100% a hobbyist, but that isn’t an excuse, even though it offers me lots of leeway…
OK, no more talking about me, because nope, this isn’t really about me (It should, though…)
It’s almost social media-like and I do think there are dangers akin to those. We live in a world where our narcissism is fed every.single.minute by social media… and the Fediverse ones also have the same effects, so nope, don’t just blame the usual suspects. In some way, we humans have scaled up our natural need for attention to unnatural levels due to… well… these technologies being de facto limitless.
GitHub knows this all too well. GitHub is super toxic. It encourages narcissistic behavior, exactly like Instagram, but instead of selfies2, it’s commits, pull requests, and posting on that hybrid thing GitHub Issues tries to be. Stars are like likes (i.e. endorphin kicks), there’s an algorithm that pushes some projects up to the featured list, relegating others to the dark pages of the search engine… It’s all the same obscurity you get from YouTube, Instagram, Twitter, you name them. The exact same thing, because they need you to stay on platform.
And by the way, I hate it when a platform meant for work tries to be all cutesy, with a mascot, Star Wars references, emoji reactions, etc. It’s almost like they treat you as a child because they actually think you’re one. I find it insulting, to be honest. It’s paternalistic. It’s dark.
But, back on topic. As a friend of mine likes to say, “We’re living through the Age of Anxiety.” He’s right. Everyone is anxious, keeping a calm mind is very hard. I myself find myself making missteps when coding just because of pure anxiety of “getting things done.” Hey, girl, just relax? Nope, that commit must be pushed now. Oh no, it went badly! Ariadna panics.
And mind you, I’m using sourcehut,3 which is a forge that treats you as an adult and doesn’t rely on any social media-like (anti-)features. It’s Stoic, it’s effective, you can even interact with it via their API, email, and not touching the web UI if you don’t want to. But I think I’ve carried over some bad habits from this Age of Anxiety zeitgeist we all live in.
I envy those coders who are able to keep control over this. I think most of you guys are older? It’s awesome because I do feel that, to cite the obvious example, you don’t get to be Torvalds without learning how to control your reaction over your last commit being scrutinized by the public. Or even Poettering, to cite a less popular example… I mean, bashing systemd is almost a meme, but have you ever considered what Poettering has to deal with, mentally, to keep the project going (wherever that is) plus the occasional ad hominem attacks he gets sometimes? That’s quite some pressure.
Among us smaller, maybe hobbyist or novel professional, coders… the main danger I see is “friendly fire.” Interacting via a screen is wonderful… hey, I’ve gotten feedback from awesome developers who I have alwas admire from a distance; that’s one of the wonders of the Internet. On the other hand, it’s very easy to get carried away. A GitHub Issues UI makes it worse, because it invites you to send a very quick reply that you might not have thought very much through… Sourcehut usage of mailing lists brings some protection against those quick bursts you usually later regret, but I mean… nothing stops anyone from sending an inappropriate email, of course. How many times have we seen that on the LKML, for instance?
It’s… daunting sometimes. It’s easy to get burnt out. I think it’s easy to feel all those eyes, real or imagined, watching at your last commit… And yes, this is FOSS… If you want to shut all them eyes closed, you’d have to close the source. This is a part of the FOSS trade.
And I also think it’s important to learn how to make those feelings go away. I guess experience teaches you how, but only if you’re aware of it. Not taking yourself that seriously is also a way, I guess? Not sure, I’m still working on this.
I would really love to hear what you think about this. Love you all!