Compartmentalization in the PHP community

Posted on by Matthias Noback

The PHP community

I'm a proud member of the PHP community. Recently I've come to realize though that "the PHP community" is a very complicated thing, and in fact, not even one thing.

I consider it part of my "job" to keep track of what's going on in the community and I consider Twitter to be the proper place to look for news from the community, as well as a great place to check in on the pulse of the community. What are people happy about, what are people looking at, who are they trolling? This is all fascinating to me.

It turns out that what's going on is not always so nice. Neutral or even funny tweets get misinterpreted as having some negative tone. When a tweet touches a sore point, people are likely to get very angry about it.

PHP "drama"

Some of these conversations are marked as "PHP drama". As some have said earlier (even though I don't have a reference for it), this doesn't do justice to the people involved in the discussion. If something is important to you and someone else downplays your concerns, then that's not really fair.

Recently my inner drama queen (or actually: drama king) awoke when I saw a conversation going on about firing events. The initial question by Jonathan Reinink was about firing events in a controller. Then Yitzchok Willroth said "Controllers firing events?!". I got what that meant, since he was probably referring to a more domain-oriented approach where indeed you're not supposed to create/fire/dispatch events inside a controller. Finally, Jeffrey Way responded:

Ready? Fight!

When I read this, I was so much tempted to cook up a spicy response... But instead of letting the anger win and getting myself tangled up into this conversation, I started analyzing what was actually going on:

  1. I got mad because what Jeffrey said was such a bad argument that he couldn't be serious about it. Surely, every good advice or initiative can be counter-attacked by a response like this.
  2. Then I thought, he probably isn't serious about this anyway, right? It has to be a joke. Hard to decide though, because I don't actually know Jeffrey in person.
  3. If he is serious, or even somewhat or remotely serious about this, something else must be going on right? I remember some Laravel people saying things like "let them fight over Active record versus Data mapper while we ship valuable software". Is this comment somehow related?

Discussing matters of faith

Looking at myself, thinking these things, I was suddenly reminded of the way that people tend to deal with "wrongness" in discussions about matters of faith. Being raised as a member of the protestant church I was baptised as a child and when I was 20 I did my confessions, explaining publicly what I believed. Then something curious happened: within the same year, I completely lost my faith. I said goodbye to everything I had believed about life, the universe and everything, and started to completely rebuild that.

This obviously came as a big surprise to my parents, who are both theologians. We are not our biggest enemies today, but it's impossible to talk about certain things. In the past we did try to convince each other (I guess we all wanted to agree on the what and why of the world). This never worked, because from the time I was no longer a practising Christian, it seemed that we lived in different worlds. We even appeared to have completely different rules about thinking itself. When one of us brought in some argument, it sounded to the other person like:

  1. It was such a bad argument.
  2. He can't be serious about this.

Finally, I came to the conclusion that indeed, with a different mindset, my parents - of course - couldn't agree with me. What I was saying must have sounded really stupid from their perspective on the world.

Compared to technical discussions

Do you see certain similarities with the discussion about firing events in controllers? To me it's very clear that something like this is going on there as well. Maybe not even in this particular discussion, as well as in many, many other discussions which you read on Twitter.

The way our community is divided often looks like a subdivision based on what people believe. There are Symfonians, Artisans, Drupalistas, etc. There's people who believe that we should all do TDD and there's people who believe that's downright stupid. Some like DDD, some think it's likely to make your application over-engineered. Some do PHP "the right way", some don't.

Having these compartments in our community causes several things:

  • We tend to gather followers and followees who reinforce the way we think about programming.
  • We tend to fight everything that and everyone who doesn't fit within that way of thinking.
  • We tend to blindly follow "thought leaders" who speak the loudest and the most often about the things we find important.

This, again, is not very much unlike what happens within and between subdivisions of a real-world community. A lot of blind following, fighting as well as reinstating previous beliefs.


From this comparison, I draw several conclusions:

  1. It's perfectly fine to gather people around you who think alike, are interested in the same kinds of things. We all do this, it provides some safety and sanity in a crazy and chaotic world. Most groups within the PHP community are no longer fully compartmentalized anyway.
  2. Though starting a fight is always tempting, it doesn't lead to converting someone to your opinion. It's not okay to fight with everyone who doesn't agree with you or your group. It's particularly not okay to fight with someone who seems to have a completely different mindset. Even though they sound stupid to you, they may have a set of experiences that's entirely different from yours. And, you know, they can live a successful life as well, believing those "stupid" things, so you might even learn something useful from them.
  3. Just because a well-known person from the community (guru, hero) says "Don't be afraid to use active record, I'm making big bucks with it!", or "Don't use facades, because, uhm, there be dragons!", doesn't mean you need to follow that advice or blindly parroting them. I don't think any person should be called "thought leader". It sounds to me like blind worshipping. You should never let your thoughts be led by anyone else. You can keep yourself informed on the matter, discuss alternatives with people, but never let someone win the argument just because they are the "leader". Or, as Taylor Otwell puts it:

What about firing events in controllers?

The unanswered question remains: is it okay to fire events in controllers? With my own (current) mindset, habits, experiences, goals, discipline, etc. I'd say: no. And no, the world won't explode, but I don't think we're better of with events being dispatched in a (web) controller. That may never be an excuse to do the other, "right" thing. And if someone on my team is doing it anyway, I'll ask them to find a better solution for it.

What's absolutely crucial to note is that this is my personal opinion. Even though I know that many people share this opinion with me (people who follow me and whom I follow), I know there are different ways of looking at things as well. I don't want to fight over these issues at all. I just want to set the example that I think is worth setting.

I think software development requires an enormous amount of discipline, which we, being humans, don't always have. Because we "fall back" on suboptimal behavior all day, I think that teachers (bloggers, speakers, etc.) always have to aim quite high, to the point where, yes, some will think that we're overdoing things. That way, we can gradually improve the state of (PHP) software.

I encourage you from time to time and always in a respectful manner, to question my logic. If you're unconvinced a particular plan of action I've decided is the wisest, tell me so. But allow me to convince you. And I promise you right here and now, no subject will ever be taboo. Except, of course, the subject that was just under discussion.

— O-Ren-Ishii, Kill Bill, Vol. I

Just kidding of course ;)

PHP community