everything wrong with free software
"free as in speech"
*originally posted:* sep 2022
apologies for the acronym: "to help realise ideal volunteer efforts" (thrive).
these guidelines were written in late july 2019, before the fsf titanic series or rms stepping down. the reaction i tend to expect to a list like this is: "oh no, a code of conduct."
the guidelines were barely about conduct anyway, they are more about process guidelines for "what to do with your autonomy" in the context of a larger group where participation is completely voluntary and each individual consents to participate.
these were intended to assist, not to be imposed. maybe a better way to consider them is as a sort of informal rfc. the thrive guidelines even have a own code-of-conduct escape clause:
> wherever these guidelines are misused to threaten community and development, they should be regarded with scrutiny-- whenever these guidelines help create a foundation for purposeful development and progress, they should be considered thoughtfully.
this reinforces the idea that the guidelines are non-binding by nature and intention.
i will quote each of the ten guidelines, and comment on each in the hopes of further clarification.
> 1. "integrity and checks and balances are more valuable than false compromise."
im fond of pointing out that just enough compromise can be wonderful, but too much can be devastating. having more than one group working to maintain and improve the ecosystem means that if one authority (or respected group) goes sour, then others can speak up and offer a backup plan.
fans of a single, centralised point of authority wont like this. but, it is a recommendation. it is non-binding, so people who are against it simply wont have anything to do with it. as i said elsewhere, for example:
> when we agree on something, we struggle together. when we cant agree, we struggle apart. its very useful to find our commonalities, and understand our differences. for many of us, stallman and freedom are two things we are not willing to compromise on."
that isnt a decision that a central authority needs to make. many of us are not willing to bend on the stallman issue (a reminder that this guideline predates the stallman issue). we invite anybody who is willing to work with us despite not bending on that issue, to do so. they dont need to sign an oath of loyalty to stallman, but if they ask us to do something unjust against him-- thats something we wont do.
at that point, you have a schism-- and you would actually have that schism anyway. the difference is that some of us would be building something that is more schism-tolerant (or schism-resistant). other points address this a little more directly.
> 2. "ignoring your own standards, as well as taking rules too seriously, can compromise the integrity of your community. many communities are already diminished along these lines."
this is mostly a comment on the state of communities, and a recommendation to try to live up to your own community standards. those who already oppose the imposition of a code of conduct can read this as: "if you have a code of conduct that expects certain behaviour of others, you are naturally expected to treat them just as well as youre demanding of them."
nobody is perfect, and its obvious that people already hold some to a more unreasonable interpretation of their standards than others. while suggesting that people not do that isnt likely to cancel out any hypocrisy directly, this point at least comments on it.
> 3. "the corporate monopolies that promise to help resolve these problems, have a history of fundamental selfishness and interference. giving these corporations too great a say in matters has helped them to destroy communities and stifle their efforts."
this point comments on past mistakes, and also predates one of the best examples. many have called for a certain large corporation, associated with a particular primary-coloured hue to apologise for their active role in the holocaust. yet one of their subsidiaries asks for an arguably more grassroots organisation to seize an opportunity for greater diversity.
you could argue this is the same point as the second one, addressed specifically to very large and powerful companies. while it is unlikely to change the course of those companies directly, it serves as a warning to those who would take their requests (and perhaps, their lip-service) too seriously.
> 4. "in practical terms, 'working together' means finding enough common ground for collaboration. it does not mean abandoning the principles or values of your own community."
some differences are worth working past. other differences are simply worth accepting. another way of saying this is that along with diversity of people, we should make it possible (whenever we can bring ourselves to do so) to include people with a diversity of opinions. in my own opinion, this is a strength that we were doing impressively well with, before all this corporate help showed up.
one only need look to stallman to demonstrate how intolerant weve become of opinions-- but that intolerance is a standing threat to all of us if we wish to work together and not be ridiculous when we use the word "inclusion." while these guidelines are not meant to be imposed, if more people had taken them to heart, it would have possibly been more difficult to let stallman suffer as much as we already have.
not that i want you to think this is all about one example. what i really want you to do is think about how it would be for an entire community to start stoning you because of something you yourself were misquoted as saying by forbes or zdnet. all of these guidelines predate that incident, but many of these would have helped mitigate it.
these really are anti-monopoly recommendations, for making communities hopefully more robust in the presence of well-organised social attacks. if you think you can create a better version, these guidelines are already in the public domain.
and people are going to argue for more centralisation, of course. some people like centralisation and single-points-of-failure, because they think of control exclusively in terms of benefits, not costs. decentralisation has costs as well.
very few meaningful decisions are made without accumulating both costs and benefits. its really a question of what benefits are desirable and what costs are unacceptable. if you can accept a single-point-of-failure that guarantees a tragedy in the long run, there are some short-term benefits to say the very least.
> 5. "in dealing with both critics and allies, it is always more useful to look past the superficial-- towards motivations, true nature and real effects. society encourages the shallow evaluation of goods and services, as well as of people. vital communities must do better in this regard than general society, if they wish to thrive. this is not intended to eliminate speculation, only to temper superficiality."
superficiality is a theme ive addressed before. back when the "free software federation" was more of a concept, these were guidelines on how people who want such a thing to work (which by no means assumes everybody would want it to) could understand how to make it run smoothly enough.
a lot of it comes down to accepting differences (where possible to do so), having more than a single venue for progress to be worked on, and working together when it makes sense. this is more robust because if you get amish-shunned out of one community that has gotten a bit weird or been taken over, there are other places nearby where you can contribute instead. that is of course, unless the federation is stupid enough to have some kind of creeping social mutual extradition treaty, like dumbarsepora does. recursive or non-free-association bans are the antithesis of these guidelines, and vice versa.
this guideline is also a strong suggestion that such schemes have gradually been proven necessary if we want free software to continue to have the level of practical success it already had in the past. a lot of people already look around and realise that "something has gone terribly wrong." you can be certain there will be people demanding that single-points-of-failure be reinforced by even more monopolistic means.
as recent history has shown us, when that happens it can leave us generally out of the loop-- just sort of waiting for "permission" or a "cue" to get back to business as usual, while we try to figure out how to respond or move forward, without much in the way of means to do so. a reasonable word for that effect is "devastation." its good to ask if we would have that level of devastation right now, if we had found a way to make free software (as a movement) "more robust" or as i keep saying, "more decentralised".
in the past, we had collaboration schemes as loosely defined as something called a "web ring". today, a "mesh network" would be a resilient structure more worthy of consideration than a "ring" (which was often maintained by a single person, albeit one who was very open to all sorts of people joining and adding their website.)
so you could, if you wanted to maybe overhype the idea, call this an "early version of a social protocol for a voluntary organisational mesh network." but just calling it the "thrive guidelines" is probably a lot more reasonable.
another thing to think about the is the level of censorship and interference going on. in security terms, this should be part of our threat model.
if we cant even even trust the fsf to prevent this sort of thing, what exactly do we do?
when i wrote about the need to create lifeboats for the same organisation prior to a great tragedy-- which happened not 30 days later, as things turn out-- i wasnt doing that because i thought it would make a great story. i was doing it for exactly the reason it said on the tin:
a. The fsf is vulnerable.
b. the fsf is vulnerable.
c. the fsf is vulnerable.
the most obvious way around this (mission-damaging) censorship is to have more communication, interconnection and organisation between autonomous "nodes" of this movement.
as it happens, such nodes already existed. the fsf (boston) is at least somewhat compromised, and fsfe is (as i already thought) more compromised.
a federation that cares about free software has the potential to "route around" not only mailing-list censorship, but even the corruption that happens at the very top of these organisations. but it loses that flexibility if we try too hard to "unite" under the same bad ideas. it is the redundancy that creates the robust nature of what we are doing.
if youve ever tried to write code that uses concurrency, you know that such things are a little less intuitive. this sort of redundancy is also less intuitive, so to make it more accessible to more people, these recommendations were offered.
now, where do we get future coders from? from time to time, some people express concern about the "aging" of their developer force. this means that people capable of contributing either arent allowed to join, arent aware of the opportunity to join, arent interested in joining-- or dont even exist.
one way to address all of those points is with education:
> 6. "without some greater commitment to the needs and education of users, free software will soon lose too much ground to corporations that falsely pander to them. this is not a call to make everything 'user friendly.' as a user, you are free to develop on your own terms. there are still areas in which progress could be made regarding development."
should we allow repos (such as f-droid) to be balkanised over political differences? maybe not:
> 7. "it is better to have communities divided over politics than to have software development and repos hijacked and repurposed by a single political faction."
how can a federated community help prevent such hijacking of repos? with a (relatively) neutral 3rd (or 3rd, 4th and 5th) party:
> 8. when communities with valuable contributions become divided over political differences, umbrella communities and organisations are a positive way to invite long-term resolution. haste and superficial resolution are less positive, though "first step" efforts will hopefully count for something.
but false compromise is once again warned against-- due to the amount of it i think weve already witnessed. we always want to enable cooperation where we can, without introducing false compromises and bad compromises. freedom of course, produces differences:
> 9. "each community should be allowed to explore its own options to further the long-term benefits of its efforts towards software freedom-- subject to informal approval and/or intellectually honest (fair) critique from from other communities."
if you need permission to comment, we really have dramatically changed as a movement. point 9 says more than that, but this is a point worth reiterating at this time.
but what about the users? what should we do for them? the user of today may one day become the ally of tomorrow. so maybe, one way to set a good example for our future is:
> 10. "communities should avoid, as much as possible and practical, efforts to lock other users into their software or distributions. the more important and popular (and fundamental) the software is, the more modular and optional and flexible the software should ideally be. even the distro itself should become more modular and universal-- via thoughtful design conventions, rather than rigid and demanding standards. but when in doubt, refer to points 5 and 9."
if youve read the fsf titanic series (this book is an update to that series for the present time) there are many more comments on making this sort of thing possible.
as for this list of recommendations-- you can think of it as being told what to do, no matter how much someone stresses that the idea is nothing of the sort.
on the other hand, i would say that its unfair to ask people to do something complicated and revolutionary without providing some real suggestions as to how it could be possible.
these guidelines were one of the first steps (predating, and even helping to inspire the fsf titanic series) towards providing those real suggestions.
license: 0-clause bsd
# 2018, 2019, 2020, 2021, 2022
# 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.