Nobody Is Safe From Your Morals

Empty meeting chairs excluded by a tightening purple boundary

A professional community cannot survive if political agreement becomes a condition of belonging.

We have been thinking about this because a familiar pattern is becoming increasingly common in professional communities.

The example that ended up in this post is how people reacted to DHH’s talk at Rails World last week.

But let’s examine the scenario: Someone shares a useful piece of work or an idea. Another person objects to the politics of the person who created it. Before long, the discussion is no longer about the work. It is about whether the creator is sufficiently moral to be mentioned at all.

Disagreement is not the problem. People are perfectly entitled to criticise someone’s political views, refuse to support their business or explain why they find their behaviour objectionable.

The problem begins when criticism becomes a purity test for everybody else.

It is no longer enough to dislike someone personally. Other people must stop recommending their work. Anyone who mentions them is expected to demonstrate the correct amount of distance. Anyone who questions the judgement risks becoming suspect or an enemy themselves. That is not a healthy way for a professional community to behave.

It turns ordinary disagreement into a test of who is morally fit to participate.

When disagreement becomes contamination

There is an important difference between criticising an opinion and treating a person as contaminated by it.

Criticism leaves room for an answer. It tells us what somebody said, why we believe it was wrong and where our own reasoning differs.

Moral contamination works differently. Once a person has been placed beyond the limits of respectable conversation, there is no longer any need to understand what they actually believe. Their unrelated work becomes suspect. Recommending it becomes an endorsement. Questioning the judgement becomes evidence that we may be part of the problem too.

The argument has been won without ever being made.

This is why political language can escalate so quickly. A measured disagreement invites a response. An extreme moral label warns everybody else that responding may carry a social cost.

We should be careful about creating that cost. Professional communities depend on people being able to question one another without every disagreement becoming a judgement of character.

When silence only counts in one direction

Most of us understand how silencing works when it affects people with whom we sympathise.

If somebody expects social or professional consequences every time they express something important to them, they will probably begin to censor themselves. They may remain in the community, but they will restrict themselves to safe subjects. Some will stop showing up altogether.

We agree that this is a genuine problem. But what we cannot do is apply the principle in only one direction.

Consider somebody who reads a political discussion and disagrees with its apparent consensus. They may think a judgement is unfair. They may believe an accusation goes too far. They may share some of the unpopular view, or they may simply think it has been misrepresented.

What happens if that person expects to be judged for saying so?

They also learn to stop talking. They also begin to feel that they do not belong. They may also stop showing up.

If psychological safety matters, it has to include people who disagree with us. Otherwise it is not psychological safety. It is ideological conformity made comfortable for the people who already conform.

We see this in the WordPress communities we use.

Everything can be political

Whenever somebody objects to politics being introduced into an unrelated discussion, the answer is often that “everything is political“.

And yes, in the broadest possible sense, almost anything can be viewed politically. Software affects employment, privacy, communication and power. Open-source projects operate within economies and legal systems. The things we build can have political consequences.

But everything can be viewed politically is not the same proposition as everything must be viewed through our politics.

Scenario: A developer produces some useful technical work. Somebody objects to that developer’s opinions on an unrelated subject, so the conversation moves to those opinions. The creator’s character becomes the subject, and anybody discussing the original work is expected to acknowledge that political interpretation first.

We are then told the conversation was always political.

But it wasn’t. Somebody made a choice to make it political. And it was about their politics.

The distinction matters. A database has political implications, but we do not need to establish everybody’s worldview before discussing indexes. A programming language may have been created by somebody whose views we strongly oppose, but that does not make every conversation about the language an endorsement of its creator.

Sometimes politics is central to the subject. Government regulation of artificial intelligence is political. Immigration policy is political. Civil rights are political.

Sometimes a developer has simply produced some useful work.

We should all still be capable of recognising the difference.

DHH quite famously banned politics from his company’s internal comms, simply stating that it had become “stressful and divisive, and the discourse never changed anybody’s mind“. He believed employees were being placed in an impossible position: staying silent could be interpreted as complicity, while participating could make them a target. 

In a company, where the ideas, the product, the output, the value matters, colleagues with different beliefs should be able to find common cause in their work without continually testing one another’s politics.

Our values are values; their values are politics

Our own politics rarely feel political to us. They feel like fairness, decency, safety, inclusion or common sense. It is other people who have politics. This creates a convenient asymmetry.

Bringing our political judgement into a technical discussion is providing context. Asking us to keep the discussion relevant is silencing. Challenging another person’s views is accountability. Challenging our description of those views is causing harm.

Under those rules, only one side is recognised as having introduced politics.

That is how a professional discussion becomes a political loyalty test without the people imposing the test believing they have done anything political at all.

We do not object to people expressing political opinions. We object to the pretence that only dissenting opinions are political. Who gets to decide who is the dissenter?

The visible consensus may not be real

Silencing rarely changes what people believe. It changes what they are willing to say publicly.

When dissent carries a social cost, people conceal it. The community then appears more politically homogeneous than it really is. The remaining visible consensus encourages stronger language because progressively fewer people are willing to challenge it.

A feedback loop begins:

Moral certainty leads to stronger language.
⬇️
Stronger language makes dissent riskier.
⬇️
Dissenters become quieter.
⬇️
Their silence looks like agreement.
⬇️
That apparent agreement encourages even stronger language.

The result may not be a dramatic split. It is more likely to be quiet attrition. The quietening of communities, once thriving, now just a few members in an echo chamber.

People stop contributing. They retreat into private groups. They avoid particular colleagues. They cannot join in for fear of being a dissenter.

They continue doing the work while withholding what they really think from the people around them.

Eventually, two people can experience the same community in completely different ways. One believes it has finally become safe and inclusive. The other believes that one honest sentence could damage their friendships, reputation or career.

We cannot judge the health of a community merely by listening to the people who still feel able to speak.

The purity test never stops

Once we decide that somebody’s unrelated moral or political views determine whether their professional work may be discussed, we need a test for everybody.

Where does it end?

Do we investigate how every speaker votes? Do we need to know someone’s position on abortion, immigration, war, gender, religion, assisted dying or vaccination before deciding whether to recommend their work?

What about an opinion expressed twenty years ago? What about an opinion which is unremarkable in one country but offensive in another?

If someone once got arrested, are we supposed to believe in rehabilitation? But if someone said something deemed offensive their life is over?

There is no complete answer to this because a global community can never produce a definitive list of acceptable political and moral beliefs.

A belief regarded as ordinary twenty years ago may be unacceptable today. Something considered enlightened today may appear appalling twenty years from now. A community organised around identifying morally unacceptable people therefore contains a nasty design flaw: none of us knows which respectable opinion we currently hold will eventually disqualify us.

Eventually, the purity test reaches the people administering it.

Nobody is safe from that system because nobody agrees with everybody about everything.

Eventually, we run out of acceptable people.

A community is not an endorsement

Working alongside somebody does not mean endorsing everything they believe.

Neither does reading their work, recommending a talk, using their software or acknowledging that they once had a good idea.

This is particularly important in WordPress and open source. The software is used and developed by people from different countries, religions, generations and political cultures. It includes conservatives, socialists, liberals, libertarians and people who want nothing to do with politics. Its contributors disagree about economics, immigration, sexuality, gender, war, faith and almost every other contested subject.

The only way such a population can build something together is by not requiring everybody to approve of everybody else’s worldview.

That does not mean tolerating harassment, threats or discrimination. It does not mean pretending every idea is equally good. It does not prevent us from criticising public statements or deciding whose businesses we support.

It means judging how people behave towards members of the community instead of continually investigating whether their private and public beliefs match our own. Political disagreement is not misconduct.

The workable standard is mundane: do not harass people, threaten them, discriminate against them or sabotage their work. Treat other participants with basic dignity. And stop casually calling people Nazis, fascists or evil because they hold political opinions you dislike. These words have meanings. Fascism is a real political ideology. Nazism was a real political movement responsible for horrors that do not become more understandable by turning “Nazi” into a generic synonym for “person whose politics I find objectionable.”

Likewise, don’t call people “libtards”, “mental” or any of the equivalent insults from the other direction. None of this advances an argument. It simply tells everyone else which people it is socially acceptable to despise.

More importantly, once a professional community accepts this language, disagreement becomes dangerous. If somebody has already been designated a fascist, defending an unrelated piece of their work no longer looks like disagreement. It looks like defending a fascist. Questioning whether the label was justified looks like defending a fascist. Eventually simply saying “I thought his talk was good” becomes politically suspect. The label has done all the work before the conversation has even begun.

If you run a community, either type of language is a poison and should be cut out.

We have to make room for disagreement

We are not asking anybody to abandon their convictions or remain silent about politics.

We are asking for the same freedom in return.

People must be allowed to say that they find an opinion appalling. Other people must be allowed to disagree. They must be allowed to recommend useful work without performing a compulsory judgement of the person who created it.

Most importantly, disagreement must not be treated as evidence that somebody is dangerous, immoral or unwelcome.

A healthy community does not eliminate difficult opinions. It gives people enough room to disagree without turning every disagreement into a campaign of exclusion.

If we only protect speech with which we sympathise, we have not protected dissent. We have protected consensus.

We should not have to hide what we believe in order to continue working together.

Nobody should have to stop talking in order to keep showing up.