RMS, the FSF and the myth of FOSS.

Published: 2021-03-30

If you're not into extremely niche tech news, you might understandably have no idea what that title or any of the acronyms mean. Don't worry; I'll give a brief overview of the situation for context.

Acronyms

Before we start talking about this subject, let me admit to you that I know next to nothing about RMS or the FSF. I'm doing what reading I can for writing this blog post, but there may be some unintentional falsehoods. With that out of the way, here is the relevant situation.

For brevity's sake, I'll quote from the RMS Wikipedia page since they do a better job of it than I could:

Richard Matthew Stallman[...], also known by his initials, RMS is an American free software movement activist and programmer. He campaigns for software to be distributed so that its users receive the freedoms to use, study, distribute, and modify that software. Software that ensures these freedoms is termed free software. Stallman launched the GNU Project, founded the Free Software Foundation [FSF], developed the GNU Compiler Collection and GNU Emacs, and wrote the GNU General Public License [GPL]

- https://en.wikipedia.org/wiki/Richard_Stallman

While there may be some slight difference, free software is mainly used interchangeably with FOSS or Free and Open Source Software. Foss means that not only is a piece of software legally obtainable for free, but so is the software code that is used to make it, meaning that you can recreate, modify and redistribute it yourself. To understand the distinction: Firefox is FOSS, whereas Google Chrome is not. That's because while Google is free to use, Google has not released all of the code that makes Chrome. On the other hand, Firefox is not only free to use, but you can actually also obtain the code, compile it, and even make changes to it and then distribute the changed version. This process is usually referred to as "forking" some software. Basically, a fork of something is the software equivalent of legally distributed fanfiction.

Another point that I want to reiterate that to be termed "free" in this specific way, software must guarantee all of the freedoms mentioned in the blurb above. Google Chrome is actually another good example here. Chromium is a Google sanctioned fork of Google Chrome. The two browsers share the vast majority of their code, however, since Google Chrome includes some extra code compared to Chromium that is not open to the public, Chromium is FOSS, and Google Chrome is not.

Controversy

Without going into detail about all of RMS' controversies or making any kind of statement about him, RMS has been a controversial person for many years. He has been accused of being sexist, pro-pedophelia and critical of child pornography laws as far back as 2003 (referencing the 25 May post) amongst others.

In 2019 RMS resigned from his positions at both MIT and the Free Software Foundation (FSF), following controversy about his comments about rape concerning the preceding debate over Jeffrey Epstein.

The backlash

In March 2021, RMS announced that he would be returning to the FSF board of directors, sparking wide-scale outrage among the FOSS community. Shortly after the announcement, an open letter was posted calling for RMS's immediate resignation and along with the entire FSF board of directors for allowing him to return, which has been signed over 2500 times at the time of writing.

This decision to let RMS back onto the FSF board of directors has been decried and denounced by many organisations such as the Free Software Foundation Europe, KDE e.V. and Mozilla.

Disclaimer

Before we go on, let me reiterate two essential points. Firstly, as with all internet controversy, there is also a counter controversy. Therefore, let me be clear again: I have no interest in making any public comment on the validity of either of these points of view, as I don't have the time, energy or willingness to construct a well-founded opinion on the matter.

Secondly, I am about to criticise people and organisations for the things they say. That is not because I do not share their values, points of view, bear them any ill will or even because I think they are responsible for the things I'm about to criticise. Especially in the case of the FSFE, which I might appear to address more directly. I love FOSS, and I think organisations such as FSFE do incredible work. We good? Okay!

Getting to my actual point

In their news item about RMS being reinstated, the FSFE says:

In 2019, Richard Stallman resigned as president and board member of the Free Software Foundation. On 21 March 2021, Stallman announced he is a member of the board again. The FSFE only learnt about that fact through his public announcement.

We believe this step and how it was communicated harms the future of the Free Software movement. The goal of the software freedom movement is to empower all people to control technology and create a better society for everyone. Free Software is meant to serve everyone regardless of their age, ability or disability, gender identity, sex, ethnicity, nationality, religion or sexual orientation. This requires an inclusive and diverse environment that welcomes all contributors equally. The FSFE realises that we ourselves and the Free Software movement still have to work hard to be that place where everyone feels safe and respected to participate in it in order to fulfil the movement's mission.

- https://fsfe.org/news/2021/news-20210324-01.en.html

The bit I want to call attention to is this: "Free Software is meant to serve everyone regardless of their age, ability or disability, gender identity, sex, ethnicity, nationality, religion or sexual orientation. This requires an inclusive and diverse environment that welcomes all contributors equally." I hate to say this, but while I 100% agree with this goal, FOSS as a movement has never been inclusive or open to most people. This is true both on the development and the use side of it, and I'll address them one at a time.

People who can use FOSS

While the goal of FOSS is indeed to "serve everyone", it does not do so currently at all. Using FOSS has an incredibly high barrier to entry, not the least of which that you need to know what it actually is. In the age of adverts, data mining, and free trials, the difference between FOSS and software you don't pay for has become a lot harder to tell for a layperson. This is partly because of the rise of software popularity like Google Chrome, which has a largely FOSS codebase with only a few proprietary bits sprinkled in.

This next bit might sound derogatory or demeaning, and I don't mean it in that way in the slightest. Still, it is effortless for people like myself to astronomically overestimate people's capabilities when it comes to tech. Living with my parents again for a year has reminded me of that. It's not just a generational thing, though. At work, I'm teaching Python to a colleague of mine. So far, the most challenging thing for her has been installing the damn thing. The difference between an editor, a language, a terminal, an interpreter and a programme is overwhelming. That's not because she is stupid; on the contrary, she's brilliant, but the learning curve is just incredibly steep when talking about things like that.

As much as Nerds myself like to joke and scoff that, "HTML is not even a programming language, it's only markup", the vast majority of people would panic if they saw the HTML this page consists of. Again, I don't mean to talk down to them, but it is tough for me and people like me to keep that perspective in mind.

This also brings me nicely to another point: often, the most challenging thing about using FOSS is just installing the damn thing. Most people don't even know the difference between 32-bit and 64-bit software, let alone having them need to install GCC 5.3 for the compilation step but 8.9+ for the linking, using old tools that still support the plugin required for a memory hack to work, all the while using install scripts that they don't know how to run which don't even work because the wrong version of a system interpreter is earlier in their PATH than the one they just installed. If you use FOSS regularly, I dare you to look me in the eye and tell me you haven't been in a situation like that at least once.

And that's not to even start about the time investment needed to use FOSS. Let's be honest here, what you don't pay for in money you pay for in time and patience when using FOSS. That's because FOSS is primarily made by people like me, for people like me, or in most cases, people who are me. The vast majority of FOSS that I use I have either worked on or started using because I've worked on it. There is definitely an incredible pleasure in making things that exactly do what you need them to; I'm not decrying that. But when that is your goal, you don't tend to focus on ergonomics or stability because that's more work you don't see the benefit of (in most cases). Those things are critical for other people, especially for people with a lower skill level.

People who can make FOSS

I have often heard that you should try and contribute to open-source software to get into programming as a hobby. I think this is a terrible idea that is much more likely to turn people away from programming altogether rather than to pull them in. There are more reasons for this than I have time to get into, but I'll highlight those that stand out to me.

The first reason for this is that there is no clear entry point and an enormous learning curve. Whenever you are talking about a piece of software that is large enough for mainstream people to find, you will find it full of specific tooling, code standards, frameworks, idiomatic documents and heavy competition. The work that will be available to you as a beginner is usually also quite tedious and situational, like minor bug fixes, formatting issues or translating documentation. Unless you're very determined, people will just bounce off that instantly, and rightfully so. If you're going to work on a smaller project, then you actually need a lot of expertise to tell whether a project is even still alive, much less worth working on.

Another of the reasons is that the term "Open Source Community" is a misnomer. There exists no such thing as the open-source community. At best, it is a collection of people interested in open-source software, which is definitely not the same as a community. Any group of people I have ever seen around FOSS is either totally decentralised with almost no direct interaction or centred around a monolithic oligarchy with total control over anything and everything. The actual "community" part of it is never addressed beyond "Here is our discord/forum link," which, let's be honest, is a laughable standard to count as community building.

Even if FOSS can constitute a community, it is an incredibly toxic one. Just go onto any software forum and mention any of the words "Rust", "Haskell", "Electron", or "PHP", and you will have flame war content for the years to come. Angry nerds will jump down your throat after even just hearing that you deign to use something as "outdated" as PHP. (disclaimer: even I'm somewhat prone to this) FOSS is not a community; it is a proving ground at best and a toxic circle jerk at worst.

Similarly, people are left to fend for themselves, often to a fault. As an example, this is a fairly common sentiment within FOSS circles in my experience:

"Classic Unix documentation is written to be telegraphic but complete… The style assumes an active reader, one who is able to deduce obvious unsaid consequences of what is said and who has the self-confidence to trust those deductions. Read every word carefully because you will seldom be told anything twice."

- Eric Raymond, The art of UNIX programming.

That's not terribly inviting now, is it? Especially considering that what counts as "obvious" in that sentence is very subjective. And it goes much further than that. People have no patience for beginners. I am willing to bet money that 80% of the questions on Stackoverflow.com are of the format:

Question: How do I do Blorb?

Answer: Don't do Blorb, blorb is terrible, and anyone who uses it is stupid. Instead do Zurgub

(Fill in values for Blorb and Zurgub as relevant). If you're lucky, you might even get an explanation about why Blorb is terrible. I'm not saying that having standards for contributions of requests are unreasonable, or if someone is trying to do something that is a known bad idea, you shouldn't tell them, but it is done in a very demeaning way.

There are also very rigid standards that get enforced, and I don't just mean programming best practices. For example, if your English isn't excellent, you stand little to no chance in FOSS. People are hostile towards that, and you are very unlikely to get any interaction on whatever you produce, even if it's reasonable under the surface.

That's assuming you even have access to computers and the time and energy to learn any of this. That means no school computers, smart devices and in many cases no Windows, which is a real obstacle for a staggeringly large part of the global population. No wonder that researchers have found, for example, that only 1.5% of FOSS contributors are female.

My own part in this

I'd call myself a mild veteran of FOSS. I've contributed to a few FOSS projects and even made some of my own. I'm not a true veteran in that my time and contributions to FOSS are somewhat limited compared to the full-time giants (which I think is an unreasonable standard, but that's a discussion for another time). So I will be talking about this using myself as a standard. Not because I think I'm particularly great in the "If I can't do it, it's impossible" kind of way, but because I think I'm a reasonable upper bound. I can do many things with tech that laypeople simply cannot, so I think it's a fair comparison.

I struggle with a lot of the things I mentioned in this post before, from installing things to dense documentation to lack of time and energy to use or otherwise interact with a piece of FOSS. Now, Let me be clear: I love FOSS. I think it is fantastic, and it has come an incredibly long way, but as is, it is failing at most of the things in its mission statement.

In a lot of cases, the things I mention come as a result of being free. It's hard to expect people to really commit to community building, robust testing and documenting and explaining things time and time again to beginners when you realise that they are doing all of it in their free time. But the other side of that coin is that it can often encourage a resentful userbase, both in terms of end-users and developers. Of the projects I've worked on, I've gotten often gotten frustrated by the interactions I had around them. Pull requests can sometimes take weeks or months to get reviewed, let alone be merged; the demanding tone that maintainers use when telling me to make specific changes or the fact that nobody says thank you are all frustrating things to work with. This is, again, all reasonable from their perspective but still detrimental to a good community.

As someone who has often been on both sides of the equation I'm describing, I empathise with both sides. The main point I'm trying to make here is not that people are terrible (although they sometimes are) but that the system does not incentivise the things we would like to see at all. That's a problem worth addressing, in my opinion.

Using fancy words

I think most of my points come down to the fact that FOSS is essentially about negative freedoms, and I think it should be more about possitive freedom. Negative freedom means that you are not to be obstructed in doing something. An example of negative freedom would be to start your own business. Nobody should prevent you from doing so, but it is not required to help you do it in any way either. A different kind of freedom is the freedom to access public spaces. If space is public, then the owner of that space must make reasonable efforts to make sure you can access those spaces. Although this is not official terminology, I like to think of them as passive and active freedoms. Negative freedoms are passive because people need nearly not actively work against you, and positive freedoms are active because you actively have to work to guarantee them.

My guess is that almost all of the freedoms mentioned in FOSS definitions are meant to be passive. You're not to be obstructed by legal barriers from using, studying or modifying software. But the abysmal state in which almost all the user experiences of FOSS find themselves mean that FOSS has very little positive freedom.

This is probably a controversial opinion, but in that sense, I think something like Discord is much more accessible and open than GCC. Regardless of how much some people like to rail against Discord, the fact of the matter is:

  • You can get a hold of it.
  • You can probably use it.
  • You can customise it reasonably effectively.
  • With some tinkering, there is a lot that a layperson can get done in, for example, making a discord bot to help with community management.

Despite the source code for Discord not being available to the public, in some ways, it is much more accessible than some of the software that " [...] was developed to be 100% free software, free in the sense that it respects the user's freedom." even if Discord has some bad privacy policies

And you know what? I get that. The trick with positive freedom is that it's hard to take that one step at a time because if you take that to a logical conclusion, that would mean you'd have to solve things like racism and global poverty, which is obviously a bit outside the scope of a static website generator or whatever. My point is not that FOSS or the people around it should solve these problems. We inherit much trouble around it from the societies we live in. But this is an angle that has been neglected for a long time. Small Tech is actually the first party in tech that I know of that has come even close to addressing this.

I'll be honest I have no idea how to solve any of the problems I'm railing against. It's all hard. These are all generational problems in every sense of that word. But I hope that by addressing this part of the conversation, I can help make that happen. I find community building fascinating. Ironically, it is one of the things humanity has been doing the longest, while at the same time still being one of the hardest things you can do. There is a universality to both its accessibility and its difficulty that is impressive in a weird way. I just hope we can find ways of making FOSS more community focused so we can deliver on more of its promises and thus be more open in the positive sense.

#Open source, #community building, #FOSS