Why a Generic Open Source Project Can't Also Be a Successful Civil Rights Project
If you don’t know about the silliness that has overtaken the Nix project in the last few months, you’ll probably want to read my prior blog post to get a bit of background, because this post will make reference to it.
Summary
A general purpose open source software project can’t be an effective vehicle to also promote a civil rights goal.
Projects that produce software that specifically address a civil rights goal can obviously do both: the former does the latter. But there is excessive room for corruption if the project has as dual primary goals both the promotion of a civil right and the production of an unrelated set of general purpose software.
My Motivation
A combination of embarrassment, irritation, and a little bit of heartbreak sees me creating this.
Recently I created a blog post reporting on my unhappy involvement in a set of "governance discussions" hosted by the Nix Foundation board.
Before I participated in these discussions, I was waist-deep in a running Nix-related disagreement with my business partner. We co-own a consultancy, and my business partner claimed that the Nix community was immature and that, as a result, that we shouldn't heavily rely on Nix in our consulting engagements. I disagreed strongly with him, telling him incredulously “it has been around for over 20 years!” To me, the community seemed vibrant, healthy, and mature despite having some growing pains.
I went to bat for Nix in a major way in our related "talks", which mostly consisted of me yelling at him and being smug. I knew he was wrong. I had sunk a vast amount of time into Nix and I enjoyed learning it, using it, and presenting it very much. He just didn't get it.
So, when I saw the controversial "Save Nix Together" open letter, I knew I'd have to do some crisis management. The drama it caused would be super-public and I knew it would reduce my business partner's already-low trust of Nix to zero. But I was sure it was just a speed bump. I was sure that it didn't actually represent the state of the community.
I got the opportunity to confirm my beliefs when I was accepted as a participant in the subsequent Nix community governance discussions.
Now that I’ve taken part in those discussions, and having had a really poor time of it, I can tell you that he was right, and I was wrong.
I changed my mind not because the “Save Nix Together” open letter was right about everything, or even most things, or even many things, but because the letter was absolutely slam-dunk correct about a single aspect: existing Nix leadership is nonexistent.
The letter itself further contributed to the problem, but it can't shoulder any appreciable blame. A complete leadership vacuum predates it of which I was completely unaware, or at least to which I willfully blinded myself. The problem seems to have been around for a quite a while.
It turns out that the Nix community is alarmingly immature, and it's badly in need of a guiding hand. It'll surely get one, because the technology is insanely valuable and useful.
Unfortunately, if my participation in the discussions was good for anything, it led me to believe that the most powerful contingent currently offering such a hand is untrustworthy and doesn't share my interests. It also led me to believe that this hand will be accepted. We’ll see.
In my opinion, it was far too easy for unethical people without a significant history of contributions to become the heirs apparent for this technology. To do so, they wrapped themselves in the mantle of defenders of marginalized groups and noble warriors against the excesses of capitalism. They used the obvious power vacuum and the credulity and good will of a larger group of disinterested software developers to stepwise gain power. This power may yet allow them to turn Nix from a growing, professional project into a small social club (the discussions are still ongoing).
I know there are principled arguments for such an outcome. But I hope you don’t agree with the means, because they’re devoid of principle.
The Tradeoff
I hope that you read the report blog post if you yet haven’t because I describe their dynamics better there, but the governance discussions I took part in had as their stated goal the democratization of rules related to Nix collaboration.
The outcome of these discussions will define the governance of the communications between community members and it may define the future dynamics of the financial relationships between Nix and the larger world. It'll have an outsized impact on the continued operation of the various pieces of Nix infrastructure like AWS that support its growth. Due to the leadership vacuum, this is not just a fire drill, or a fun activity for the kids, it has actual stakes.
Within the report blog post, I described quitting the governance discussions due to my objection to what I considered an unsupportable temporary ban of another participant, a long-time Nix contributor named Shea Levy. I don't know Shea at all, but we happened to find ourselves on the same side of an argument effectively ultimately advocating for a community moderation system that implicitly allowed the participation of anybody, contingent only on accepting a very basic set of ground rules related to behavior.
The ground rules we argued in favor of would have disallowed all forms of harassment and disparagement including the disallowing of harassment and disparagement of minorities and members of marginalized groups.
But our opponents in these discussions claimed to not want this, or at least did not want to get it in any other way than one they insisted on. They claimed to want community members to a-priori pledge to actively fight against a set of very specific moral failings and ideologies (in particular "sexism", "racism" "bigotry", and "fascism"). Shea's argument against this and for a more behavior-centric policy, as far as we know, was the proximate cause of his temporary ban.
Now, in the words of the comedian Lewis Black, "I can feel you pulling away from me." On its face, a pledge to not harass and disparage minorities might seem indistinguishable from a pledge to fight against that specific set of moral failings and ideologies. But they are not the same.
Gating participation with a pledge to fight against some an ideology ("fascism") is, in practice, completely equivalent to gating participation behind a pledge to oppose some hateful outgroup ("fascists"). No matter how incoherently broad the definition of this outgroup may become.
And indeed, in the governance discussions, the people arguing for a pledge like this used language that effortlessly moved between the -isms ("fascism") and the -ists ("fascists") as it suited their argument. The difference between an -ism and an -ist was irrelevant in practice during these discussions.
Within its proper context, like applying for membership to an organization that was dedicated to furthering some related civil right, I would eagerly pledge to a statement like "I oppose all forms of racism, sexism, fascism, and bigotry" or even "I pledge to make racists, sexists, fascists and bigots unwelcome here." Either would be fine.
And if I were to choose to join a software development community that was formed explicitly to create software designed to service a related civil right, I'd fully expect to be asked to sign such a pledge and I'd be grateful to do so.
However, I wouldn't expect or wish to be required to sign such a pledge if I chose to join a community dedicated to the production of software with a much more general purpose, like Nix.
That's not because I believe that protection and furtherance of civil rights is not a noble goal. It's instead because the division of attention by a community that attempts to do both simultaneously without any significant overlap of participants creates an unnaturally wide target of opportunity for corruption
Requiring a pledge to actively fight for a civil right in the context of also creating a general-purpose software product is not just an otherwise neutral expression of solidarity with a set of marginalized people. It has benefits (see my earlier blog post), but it also has significant tradeoffs.
In a community that adopts as dual fundamental goals both the production of general-purpose software and the protection of a civil right, if its majority is only paying close attention to the goal of creating software (as most open source communities are), and only a small minority pays close attention to the civil rights goal, its systems become easy to corrupt and easy to use for personal gain instead of for the good of the project.
An environment like this lets power-seeking opportunists and professional dividers successfully use the threat of reputational blackmail and other tactics to gain control of the project in order to use it for their own purposes.
We can see this in practice during the governance discussions. The actual goals of the opportunists in those discussions are mostly inscrutable to me. I won't speculate here on what they might be other than to say they seem consistent with various socialist values. But, in any case, they seem to me to be entirely divorced from both civil rights and from software development except as means to an end.
If — as the result of the ongoing discussions — Nix is turned into a community with both goals, when action towards a specific claimed diversity goal is taken, the bias toward apathy of the software-producing majority vs. the bias towards engagement of the civil rights minority can easily be used by these kinds of opportunists as cover to intimidate and eject dissenters whom might rightly oppose unethical behaviors in the civil rights contingent related to the action.
This has already happened twice recently in the Nix community, including to Shea, and to another contributor named Jon Ringer. Shea and Jon were ejected for disagreeing with principles they thought incoherent, and not, as reported, for poor behavior. When each complained about being ejected for disagreeing, they were met with cruel slurs and intimations of moral failure.
During the governance discussions, our opponents intimated that Shea and I just might be fascists for rejecting a push to wholesale adopt without modification an incoherent proposal to adopt a pledge required by all members that would bind them to an antipathy towards a set of ill-defined outgroups. Now, I know I'm not a fascist. Nor is Shea. Nor is Jon Ringer. We just disagreed with people, and they then labeled us fascists for doing so.
It was an effortless leap by our opponents to go from "here's an incoherent proposal that explicitly makes fascists an outgroup" to "you just might be a fascist for not accepting my incoherent proposal." Ironically, the accusation itself proved that we were correct in opposing a requirement for a pledge like this, because it was all too easy for our opponents to resort to accusing us of fascism when neither of us was guilty of ever remotely having had sympathies for that ideology except maybe in their dumb imaginations.
I mentioned earlier that there are tradeoffs to requiring pledges against outgroups from potential members of a community. One tradeoff that our detractors seem more than willing to make is that sometimes, disagreeable but principled people have to be sacrificed in order to achieve the maximum political gain. When Shea and I opposed the pledge, we suddenly became members of the outgroup of the pledge, and thus needed to be neutralized. We were neutralized on a set of absurd technicalities, but the motivating dynamics were "we must get rid of the outgroup."
This outcome represents the tradeoff. It might be considered acceptable and maybe even worthwhile to some. In modern times, it has been considered worthwhile to the leadership of various ugly and murderous regimes. But I don't consider it worthwhile, and I think that many of the folks that do consider it worthwhile haven't thought through its implications in any detail. They don't believe that they might be next, although they almost certainly are. These kinds of self-proving claims are never very kind to anyone who hangs around long enough.
The Mechanics
Most software developers, with their high level of education, are likely to helplessly believe in high-minded representations of values stated by people that claim to have a righteous civil rights goal. But a majority of software developers will just have little interest in acting on that same goal. They're happy to outsource caring deeply about that goal to others in order to have the time to be able to write more software. Software developers like to write software.
They'll be thankful for the participation of more civil-rights-minded contributors, because they believe that it releases them implicitly from various perogatives to act. They'll believe without evidence most of the claims of the people involved on the civil rights side, and by default support them, because to do otherwise would require active participation. That participation would reduce the time available to them to write software.
And even when faced with evidence that another more civil rights minded participant just might have unsupportable interests, the software developer will often still choose inaction. Well-meaning and a lack of curiosity about topics unrelated to software will be traits shared by most software developers on a software project. Software developers like to write software.
On the other hand, a community dedicated specifically to producing civil rights software — instead of more general-purpose software — is inherently less at risk of the same bias for inaction like this. Its members are way more likely to be paying attention to both the civil rights goals of the organization and to the software production goals of the organization simultaneously. They're far more likely to be more equally skilled at software development and politics, and less likely to remain willfully ignorant of poor actions of an opportunist put into a position of power.
But if some credulous developer heretofore only involved in the "coding" side of some general-purpose software organization wanders into its "civil rights" side after rightly finding something about it to disagree with or complain about, they'll usually find the balance of skill and power required to negotiate the situation not in their favor.
In my estimation, the "fundamental principles" OP I described in some detail in my prior blog post was a setup designed solely to identify and eliminate dissenters to a political position.
In this venue, Shea and I were credulous hayseeds. We believed we were involved in a conversation welcoming of all reasonable viewpoints. We lacked the experience, the will, and the cynicism necessary to successfully continue participation in the dumb game being played by our political opposition and its heavies on the mod team. We instead just just responded to the OP in good faith. As a result, we were identified as members of an outgroup and then quickly neutralized on technicalities.
A contributor that's only a software producer will be unlikely to have the experience to mount a coherent defense against this kind of amoral garden-variety divide-and-conquer strategy that's second nature to a more politically-skilled opportunist. In my experience, and certainly in my observation of the discussions, politically skilled people are more likely to be members of the civil rights side of an organization than of the software development side of the same organization. Any politically skilled opportunist will have the experience to see a mere software developer off far more easily than the inverse, particularly when they've had the good sense to corrupt the moderation staff beforehand.
Any individual bad act — like the ejection of a software producer who rightly finds fault in the behavior of some civil rights contributor — might appear to the larger more disinterested community to be the result of some high-minded consensus. In reality, the act might have only the support of a tiny minority and might have as its exclusive purpose the elimination of a hapless rival or a principled dissenter.
A community like this can’t achieve any of the high-minded goals it claims to promote. And I certainly don’t want to be a member of such a community.
Risks
Not preventing self-interested opportunists who claim to have noble goals from getting into positions of power will inevitably harm the software, its reputation, and the people involved in its production. Here's some ways in which that might happen:
Contributors with a significant history might be ejected for reasons unjustified by their behavior. I've described that in some detail, it has already happened in Nix.
Valuable but meek contributors who notice abuses of power by opportunists may just decide to stay quiet or might decide to exit the project rather than become involved. I've had conversations that led me to believe that this has already happened too.
Contributors for whom complaining would mean compromising their income or their status will be naturally predisposed to overlook poor decisions and unethical behavior. Likewise, this has already happened.
Significant contributors may choose to fork the project instead of continuing to contribute. This has happened already, but not for the reasons I might have expected.1
The security of the users of the software might be compromised through deliberate injection of malware that services "ends justify the means" civil rights or criminal goals. This has not yet happened, and I hope it never does.
The software's quality might be lowered by the dilution of attention between software production goals and civil rights goals and the continual drama caused by the latter.
The cost of the infrastructure that supports the software could become unsupportable as commercial interests are disincentivized from contributing as the result of some of the political goals of the opportunists. The goal of eliminating corporations from even indirect participation I saw in my interactions with folks are positions largely incompatible with capitalism.2
A Better Way
If today I started a software development project, each potential contributor would be required to assent to something roughly like the Contributor Covenant code of conduct pledge instead of a pledge that named outgroups. It would go something like:
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
And I might consider tacking on "political beliefs" and "place of employment" in there somewhere unless somebody convinced me there was a good reason to do otherwise. I'm not sure why neither are in the existing Contributor Convenant now.
Any participation in such a project would be considered an implicit acceptance of this pledge.
Although I am an atheist, I wouldn't a-priori ban a fundamentalist Christian from joining. Though I personally support the right of Israel to exist, I wouldn't a-priori ban a supporter of a Palestinian state from the river to the sea. Though I am personally a capitalist, I wouldn't a-priori ban a communist.
Each contributor would instead be required to understand that their continued participation would be contingent on following a set of rules that described negative behavior.
A member would be subject to warning or ejection if they violated one or more of the the rules continually in community spaces.
Here are some examples of negative behaviors around which rules might be formed (most of these also come from the existing Covenant):
The use of sexualized language or imagery, and sexual attention or advances of any kind
Trolling, insulting or derogatory comments, and personal or political attacks
Public or private harassment
Publishing others' private information, such as a physical or email address, without their explicit permission
Continually mentioning topics unrelated to the mission of software development in community spaces, such as religion, politics, or economic systems. (not in the existing Covenant)
Other conduct which could reasonably be considered inappropriate in a professional setting
The community would also be friendly to companies and capital, or at least it would not be unfriendly and distrustful. I'm a professional, I’m not going to be LARPing as a glorious revolutionary any time soon.
Such a community would be a little more difficult to turn against itself. It might still, of course, because anything can happen in a power vacuum.
And although I'm politically slightly right of center, note that I also don't want to be a part of any community that has as one of its fundamental principles a struggle against "the woke" or "marxists". That would just be a mirror cult populated again by similar idealogues and their credulous followers. It would be just as dumb if not dumber.
Although there are already two recent Nix-related project forks (Aux.computer and Lix), and they appear to be staffed with competent people, they don't seem to have been made for the same reason that I might be tempted to make a fork. They aren't being made due to poor interactions with some political opportunist, they've instead been made as the result of historical inattention from Eelco and the historical lack of a community governance structure.
If you doubt this, please read various threads in Zulip about switching the model of paying for AWS infrastructure away from using corporate donations to a "voluntary association" where infrastructure is to be paid for solely via co-op dues. See another Zulip threads that condemns the participation of people with "corporate interests" (aka jobs) in governance.