free software resistance
the cost of computing freedom is eternal vigilance
### tcoyc-the-spirit-of-free-software
*originally posted:* nov 2023
it isnt honest to talk about the meaning of free software without mentioning the free software definition. as alluded to earlier, the free software definition, consisting of the four freedoms and other relevant writing, requires that users be able to:
1. use
2. study
3. change
4. share
the software, both in source code and binary form.
to understand the difference between these two forms, the source code is the form of the program that is easier for people to edit- the binary, or compiled translation of the code, is the form that the computer understands.
one of the reasons c became so popular is because the code was "portable" from one type of computer to another. in many earlier systems, the os and applications would be written for a specific type of machine, and the code was not so easily ported across different brands and models. when you are talking about an operating system, there is pretty much always some code that is specific to one machine. with free software this specific code is minimised, and there is as much portable code as possible. the c language is good for this purpose.
the kernel of the operating system is the part that does most of the interfacing with the actual machine itself. the rest of the operating system is built around or ported to work with the kernel, to the point where some operating systems- including gnu- can be used with more than one kernel.
the original kernel designed for gnu was called hurd, and the one that took over the project is called linux- it is also possible to make the gnu system work with one of the bsd kernels. bsd is a different operating system than gnu, and it has its own kernel.
the name gnu stands for "gnus not unix". bsd got in trouble at one point for marketing itself with the brand name unix- and bsd is actually completely removed from, but was originally based directly on, the unix operating system. there are standards which link these systems together, and if you are familiar with one you may find the others are reasonably familiar.
it was never the goal of the gnu project to follow the "unix philosophy"- personally i think thats a shame, because the design of unix lent itself so well to freedom in a de facto way. it is my opinion that as gnu has moved farther from the unix philosophy, it has become more difficult to defend gnu from a free software standpoint. stallman of course, would not agree- he has explicitly made it clear that the unix philosophy does not matter to him.
with that said, i am not a true believer or practicing monk of the unix philosophy myself. i believe there are certain advantages to the philosophy, the value of which stallman has unfortunately overlooked. and i do believe that this has value for freedom as well as users. since the fsf and stallman and the gnu project do not seem to care about this, it is up to anyone who does see the value to defend and represent such ideals.
for the most part, the fact that unix was made of parts that were easy to swap out and replace, absolutely made it more trivial- for some value of trivial- to recreate gnu a piece at a time and swap out each piece with a free one. a side effect of this design is that if you hated some part of the system, it was easy to swap that part out with something you didnt hate.
this wasnt just modularity in terms of libraries and routines within a project, but it was modularity to where you could literally delete an unwanted binary, and if necessary simply create your own replacement. this was a substantial freedom, and it is the freedom that is threatened when systems are made increasingly monolithic at the application level.
this is an entirely separate debate from the famous one about monolithic vs. microkernel design- its closer to unix philosophy vs gnu design. the problem with a microkernel, at least with hurd, is that it proved so much of a challenge that it allowed a simpler kernel tied only superficially to the values of the gnu project at best, to zoom past and co-opt not only the image of free software but the direction.
at any rate, by the time people were making their own versions of unix or bsd, it had become a very corporate project itself- but it was nonetheless a corporate project that you could rebuild with a relatively small team of people. free software ought to pay more attention to this aspect of its own history, but its entirely fair to say the gnu project does not care about this aspect of its history- this ideal does not steer the the gnu project in any way at all.
what does steer the future of the gnu project, as well as the linux kernel and most things related to either of these, is the gradual takeover by corporations that can throw money towards projects they want to slowly move in a direction that better suits these corporations, and which might not suit the ability to make your own system (or even your own applications) whatsoever.
above all, when you move from the sort of modularity and level of choice you had during the first 20 to 30 years of free software development, you get bigger projects that are harder to sustain without corporate money. this means that you have less say, while you more or less have to listen to what sponsors want, even at the expense of the project.
whats good for a product is not always whats good for freedom. projects that are good for freedom can be sustained as long as there is interest by what is often a small team of people. projects that are intended as products can have a larger team sustained as long as it benefits the corporate sponsors, but corporate software development often abandons projects because they no longer fit the goals- or because the goals even threaten- a big company.
this seems extremely relevant to free software today, but even to the crown jewels of the gnu project such as gcc itself, gdb and even the gnu libc library- all of which are slipping from the grasp of the project itself, and being taken over by corporate sponsors who often have differnt goals and ideals. this was predictable, but no one cared. it poses an existential threat to free software, but no one cared.
but on an application level, it means that corporations are able to consolidate projects from their hobbyist-friendly, user-swappable and extremely free-as-in-computing form, turning existing projects into relatively unwieldy things that will be abandoned eventually, leaving no alternatives that the community can do AS MUCH with, without the blessing of their returned masters.
these are the same corporations that were telling users what they could and could not do with their software before it was free, and now that they fund, and host, and manage 90-95% of free software as well as practically 99% of our software DEPENDS IN SOME WAY on projects they have at least soft control of... they can effectively tell us when its "time" for us to stop doing what WE want and when its time for us to change to suit their goals.
if this was done in our own communities, without the influence and leverage introduced by corporate meddling, it would be our own problem- and we would already have the solution. instead, people flee to try return to the sort of choice-producing designs we had pre-consolidation, only to bump up against the corporate bulldozers running through everything else we build our systems with.
this is unacceptable, for a growing number of people. i spent years trying to get more and more of a foothold into the way gnu/linux systems are put together- not getting to the source, but trying at least to have more control over the binaries.
it was certainly good for a proof of concept, but the problems are similar at different levels. sometimes its only the packaging that ties together software we dont want bundled- this was actually a defence offered disingenuously by developers who openly stated their goals of consolidating our options- then gaslighting everyone when they complained about those goals being met.
they said x or y or z was at the package level, and i managed to gain control of software at that level- without building new repos, by downloading packages to a cache and then opening them (in an automated way) without triggering the cleanups and full archives being copied. this was only as much of a solution as i needed for quite some time, but once i was able to gain whatever level of immunity i wanted from package-based meddling, i was ready to prove to myself there were issues at other levels.
i was also able to temporarily fix a lot of things i hated- that is what most projects eager to give us our freedom do: they fix things temporarily, while the companies making giant changes continue to steamroll through changing more than we, or for example devuan, can fix.
at the very least, you do have SOME option to go back to software that was easier to maintain. it may not be mantained anymore, but just as openbsd is more easily forked than the linux kernel, some software is easier to maintain with or preferably without corporate meddling. the bigger software, like firefox, systemd, wayland, libreoffice- small teams have very little hope of really forking those without being forced to work with the projects- meaning there really is no way to do what we want unless we are given permission to do so.
its great that the license gives us permission. but like a piece of paper that legally entitles us to fly to mars without the means of getting there, having permission to do it ourselves doesnt always mean very much in practice.
small programs, things that work together a certain way even when they are essentially abandoned and have to be picked up by someone else so they are still available to us- some designs (like the one that made gnu possible) are very beneficial to freedom for everyone.
other designs, like gnome and systemd and libreoffice and firefox, are really better for the freedom of large corporations.
what stallman has never recognised is the tension between the needs of large corporations vs the needs of users who want to control their computing. the gpl, free licensing in general, has become the sort of magical "keleven" variable that says freedom "just works" by virtue of being there.
thats not how things have worked out in practice, but as long as stallman and the fsf consider their theory to be sound, they are going to ignore what the rest of us have experienced, just as they have for all of these years.
to get a good idea of just how much stallman cares about something he doesnt understand, look at the way he mocks non-binary trans people who prefer to be referred to as "they"- there is reason around what hes doing of course, but no real justification for the way he ignores the needs of other people.
some will argue- and i do not agree- that the needs of trans developers should come second to goals of the movement that is fighting for our freedom.
i disagree with both parts of that- it is no burden at all to refer to developers with singular they, it is petty to refuse, and this "fight for our freedom" has been falling by the wayside since 2011, because no one goes farther than stallman. meaning: if stallman resigns from being vigilant about threats that arent covered by the fsdg, everyone else that follows him closely also resigns. the only exception to this that i know of is hyperbolabsd.
i would go further, and say that the 4 freedoms rested on givens that were taken for granted at a time when they were de facto support for the 4 freedoms. to wit:
1. the freedom to use the software
2. the freedom to study the software
3. the freedom to change the software
4. the freedom to study the software
at the time, we enjoyed another freedom that no one enumerated:
5. the freedom to remove the software
this was a de facto freedom we enjoyed incidentally, which made it much easier to change the software and use it the way we wanted. and we had that freedom because of the unix philosophy.
you can be a purist and argue that awk for example, did not follow the unix philosophy, because the latter was born of a need to only load certain things for systems with relatively few resources, though i dont think that has really changed regarding the nature of computing, only the scale of it. this would miss the point though, because nothing about awk really gets in the way of replacing it with an alternative.
at the scale where so-called "unix philosophy" or simply modularity to a degree where users have more control of their computing is relevant, awk is a non-problem. where the line is drawn is based on reasonable expectations, which we gained during a time when our choices were not yet being consolidated.
its difficult to make this the letter of free software, because in terms of its definition, free software is about whether you have it- or you dont.
that definition is vulnerable to a specific sort of attack, where you simply dial up the difficulty for anyone to change and share the software IN PRACTICE, for example:
1. by having it change fundamentally (break) often enough that only the latest version is useful to 90-95% of people, as it is arguably with python3 and moreso with rust.
2. by making it so large and limitless in features that there is no recourse other than to use the official version- no swapping it out or forks that last more than a year before going sour or becoming their own horrid banana republic dictatorships, like pale moon did- and to say goodbye to features when the projects drop them, and to be forced to use unwanted features, while constantly being told "if you dont like it, its free software".
yes, thats the thing- it used to mean a lot more that the source was available, when projects were still designed in a way that was friendly to forking.
but most projects that demand the freedom to change the software in theory, also dump hate or disproportionate indifference toward anyone who tries to actually use that freedom. there are times when a fork definitely is a bad thing, but treating it as inherently bad is to ultimately be cynical and duplicitous about the freedom to change the software.
we either have the freedom to fork, or we dont. many projects have become harder and harder to fork, and no one including stallman seems to find a problem with that.
and yet it literally means that users have less freedom than before. but as long as they have freedom on paper, the fsf has never cared that USERS do not have it in practice.
they care more about membership and fundraising, and they dont care about users or trans developers except in the most superficial and unconvincing way.
you can measure the freedom to change the software, as it is proportional to the freedom to remove the software. what gnu/linux is becoming is software that is less and less free to change, while parts become less and less free to remove. whether this relationship is causal or incidental, the proportional nature of the relationship should make more people question whats happening to free software.
but there are heroes of this story as well. theo de raadt for example, recognises that wayland represents "vertical integration" of operating systems- thats a huge step forward from some people making devuan and finding that it takes many years to do what debian promises is a simple reconfiguration- because the problems of vertical integration can never be addressed in a single step.
vertical integration is an ongoing march towards monopoly, and monopoly is more or less the antithesis of free computing.
openbsd also has the best example of what init systems should do- stay out of your way unless theyre needed, and then do init well, leaving your operating system alone except in whatever way you want it to help.
the init system for openbsd was written by a gnome developer. this should be impossible. but even the fact that it was written by a gnome developer, does not stop it from being an ideal system- the demands that openbsd made were the sort that ensured rc.d would not interfere or take over systems that people needed to work the way they needed.
and just having that goal, and holding included base software to that standard, was sufficient.
that is the spirit of free software as a real world application, and that was an actual fight for your freedom- not making insipid videos about hopping on pogo sticks through caves, while harassing developers and waging some kind of matt-walsh-esque crusade against centuries-old usages of the word "they".
stallman really has no idea what stallmans legacy actually depends on. its really not a false dilemma to say that people will have to choose between continuing to follow his leadership, and making certain the good things hes done will continue to benefit humanity.
but if youre looking for examples of people carrying on the best ideals of free software- including the ones that were incidental, the de facto freedoms that boosted and helped actualise the famous four, stallman cannot see those- de raadt and others can.
you should of course be wary of anyone claiming "free software, only better"- thats the marching song of open source, and its usually intended to put you on a path to corporate takeover.
but what the fsf and gnu offer today is, "free software, only worse". just having the freedom we had already established, the freedom we had before open source delivered us back into the arms of ibm and microsoft- also google and apple- to get that back, we certainly cannot rely on those who say this awful new status quo is good enough!
license: 0-clause bsd
```
# 2019, 2020, 2021, 2022, 2023
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
```
=> https://freesoftwareresistance.neocities.org