In a previous post, I summarised and made some observations about the draft RFC for a PHP Code of Conduct. Just to clarify, this would apply to the PHP Project (i.e. Internals). It’s obviously not being imposed on the bazillion PHP programmers that make up the wider community. However, I found myself then troubled by some of the opposing views. So I’m back again. I’ve burnished the pulpit, double checked the mic, and adjusted the soapbox height.

Let loose the meandering long winded throughts!

What is a Code of Conduct?

The most elemental form of opposition to the RFC was outright rejection. No Code of Conduct, please, said a minority of respondents. This struck me as irrational. It’s important to understand that while the RFC’s Code of Conduct is a text document, it’s purpose can be construed as expressing a pre-existing code of conduct. The one each of us already carries around in their head as part of a community.

TL;DR: We already have a code of conduct. Well, codes. Plural.

This is easily proven by serving up a little thought experiment. A PHP Internals programmer and I have been arguing back and forth on a topic. At some point, they make a derogatory comment about my potato eating skills. I complain to PHP Internals about this conduct. What is the reaction of the PHP Project? Remember now, there is no Code of Conduct. Right?

There is a Code of Conduct?

If there was no code of conduct, then nothing would happen. I would henceforth be referred to on an ongoing basis as Mr Potato-Eater. If there was a code of conduct, however, then something will happen.

You can guess the outcome. By some sleight of hand, a code of conduct which doesn’t exist will miraculously manifest itself and be exercised. The offender will be booted off the mailing list for a time out.

Fine, this does raise the other negative possibility, that Mr. Potato-Eater becomes an unchallenged mode of addressing me. I curse the PHP project, express my disgust at their inaction, and exit stage left. I think most of us can agree that that would never happen, were the original scenario to materialise. Then again, who’s publicly going to state otherwise?


The fact is that the PHP project, and the wider community, have a code, a set of traditions, a culture, call it what you will. If you take the time to describe it, there will emerge something that suspiciously looks like a Code of Conduct. It will be incomplete, a unique personal view, and untested. But there it is.

It’s alive!

So, to anyone hellbent on there being no code of conduct… Too late. That battle was lost long ago, the war that remains is arguing its content.

A Code of Conduct Kills Free Speech

Any notion of unrestricted free speech applying to the PHP Project is entirely false. While the subject of my experiment could have run around the streets complaining about the scourge of potato-eating Irish folk (I assume in full 19th century dress), as he would be entitled to do in some nations, does anyone seriously think he could do so on the mailing list? At a PHP conference? On Twitter to a fellow project member? In private correspondence to a fellow programmer? On IRC, at 3am, with a group of friends to a fellow programmer? While skiing the slopes of Mount Olympus on Mars using the NASA network to IM a fellow programmer who posts funny GIF summaries on Facebook?

And suffer no consequences at all?

Membership of any community immediately exercises a chilling effect on certain speech, within the sphere of that community, or when engaged in community affairs. It’s a natural outcome of being a cooperative member of the community. You conform, in some way, to that community’s expectations to achieve its goals.

The PHP Project is no different. It’s an international community with members of widely diverging views and cultures. Members and participants naturally self-censor to an appropriate level in order to achieve the community goals, i.e. writing good code. They can all likely have a good argument outside of PHP on any topic under the Sun, and often do. They simply work on keeping the two distinctly separate and unrelated.

A Code of Conduct, in written form, doesn’t magically change the above situation. It has a limited scope and area of effect, or should do, and any attempt to go beyond its remit should be explicitly denied. At the same time, you can’t have a Code of Conduct which tries to remain blissfully ignorant of public and private activity by restricting itself to community conduct on a narrow subset of media. The real world does not conform to wishful thinking.

What Is This Unspoken Code Of Conduct?

I don’t know. Do you? If you ask two people to write down a description, will any two of their descriptions agree? Of course, if you write it down, then I can quote it. I can refer to it. I can use it.

Or I can keep on guessing. And some folk can keep on pretending that it doesn’t exist.

This is the essential outcome of a written Code of Conduct: you eliminate uncertainty. It has been written down, agreed by the community, and it reduces guesswork to a minimum (a number less than infinity). It’s an advertisement that we all sat down, had a discussion, and synchronised our pre-existing unspoken codes. Should anything now or in the future require actually following the process that a Code of Conduct lays out, the PHP project can avoid looking like an insensitive headless chicken, paralysed by indecision, as it improvises and muddles its way through. Instead it can hopefully deal with the situation quickly and efficiently.

Iterative improvement FTW.

Abusing the Code of Conduct

Another point of opposition to the Code of Conduct, as drafted in the RFC, was that it would allow for the abuse of that Code.

Since we already have a few hundred unwritten codes of conduct buried at the back of our collective mind, what makes THOSE codes immune to abuse as things already stand? Does the absence of a written Code of Conduct eliminate the opportunity for abuse?

Since there’s no written Code of Conduct, there is no documented complaints process. There is no evidence requirement. There is no appeals process. There are no designated complaints handlers. There is no requirement for confidentiality. There is no definition or suggestion of what is, or is not, subject to being complained about. There are no time-frames for resolution of complaints. There are no immediate reliefs on offer. There is the possibility of unilateral action by an individual of merit. There is the possibility of no action by anyone. There is the prospect of ignorance as nothing is reported, acted upon or transparently disclosed.

And folk worry about a written Code of Conduct being abused…

Any process, written or unwritten, can be targeted for abuse. It does not therefore follow that we should not have processes. It does follow that we should make processes which are resistant to abuse.

The Overextended Code of Conduct

I completely agree, on the most obviously sensible point, that there should be a divide in any Code of Conduct, with examples, as to what is and isn’t considered offensive. PHP Internals is sometimes described as “toxic” with impassioned, chaotic and sometimes cutting emails. That idea is a well established part of PHP’s reputation.

That doesn’t mean that toxicity should be mentioned in a Code of Conduct as something to be punished.

The dividing line is essential to avoid confusion over when the Code of Conduct actually applies, and to the extent it applies. Debates over controversial topics will often become heated, tempers may fray, and the occasional swear word, debate tactic or cutting wit may offend someone. That’s often how debates work, period. If you can’t stand the heat, then don’t stand in the fire. It may be totally counter-productive at times, and divisive as all hell, but that doesn’t automatically mean rolling out punitive intervention.

At the same time, we can’t deny the inevitable. No matter how many examples we provide, or explicit text we add, there may be scenarios that are open to interpretation. At some point, trust needs to laid in the people selected to make final determinations.

This applies whether there is a Code of Conduct, or not. The community contains people. Those people must make decisions with a Code or in the absence of a Code.

The Improvised Code of Conduct

The worst possible outcome for the PHP Project is the headless chicken scenario. A complaint is lodged, probably publicly. The Project is then forced to improvise a Code of Conduct on the fly. No RFCs. No debates on the mailing list for the next month. Just make it up, right then and there, and act on it.

The first improvised Code of Conduct will be Do Nothing. Followed by Do Something. It would then be followed by something greater than two words evolving organically. Dice rolls may be involved. The intestines of goats may be consulted. The crystal ball market will boom.

The problem with improvisation is that it risks inconsistencies, ill-considered outcomes and knee jerk reactions. If, in the face of a complaint, the response of the PHP Project is to do nothing, very little, maybe something, then how do you expect genuine victims to respond? Is that the sort of community that anyone aspires to?

If the outcome is to do something, then the project faces the same problem being debated right now. Is this complaint valid? What processes should be applied? What outcomes should result?

Why didn’t we just resolve this in January of 2016?

The Code of Conduct As A Solution In Search Of A Problem

Once upon a time, there was a village. It was a nice village. One day, on a bright sunny morning, one of the villagers was murdered. Quite shocking. Even more shocking, since there had never been a murder in this sleepy village before, there was no law against it. Undeterred by this oversight, the villagers strung the murderer up on a nice tree by the pond. Followed several weeks later by the real murderer. Oops.

The point is that not having a robust solution for situations that arise in the real world, only makes perfect sense if you can predict the future and it’s all rosy. I assume none of you can. Otherwise, plan accordingly for stuff that really happens every day in that real world, even if you feel totally untouched by them, and try to make decent solutions that don’t explode in your face should you ever find yourself needing to apply them.

Also, pay more attention to the real world.


Debate the text of the Code of Conduct, or learn to read tea leaves ;).