In the light of the (relatively) recent heated technical discussions on display servers and init systems, I thought I would weigh in on how to handle this kind of discussions which, honestly, I find kind of annoying (at least their “heated” side).
I do not represent my employer in any way and I base the following considerations only on what I deem sensible and respectful behaviour.
Flamewars have always existed (in their different forms) and they will not certainly end today but we can (and should) all avoid them by simply not taking part in them.
Here are some points that I consider the minimum requirements for a civil debate.
1. Mutual Respect
It is never ok to insult others. No matter what they said to upset us, we should always do our best to keep it civil. Usually developers write their responses on their blogs, in mailing lists, chat rooms, and one of the benefits of written language is that, differently from spoken language, you have the time to calm down, think carefully about the message you want to convey, re-read the text and edit out the parts you perhaps wrote out of anger and frustration. Please think twice about what you write, before you send it out.
2. Offending Others
Name-calling is not the only way to be perceived as rude or to hurt other people’s feelings. Let’s face it, if I said that you are not reliable, you change your mind every other day, your project is badly designed, etc. or if I made silly jokes about you and your software, you would not be pleased about my assessment of your work or of your personality. Furthermore please pay attention to the overall tone of what you write. There is always a respectful way to say no or to dismiss other people’s claims. Passive-aggressive behaviour1 should never be an option.
Always ask yourself if what you wrote and how phrased it were 100% appropriate and necessary. Also try to see it from the perspective of the other side. Would you consider it acceptable if others said the same to you?
And no, being rude to the people who have been rude to you will not make you any better than them. Do not let them drag you down to their level.
3. Taking Responsibility
Whatever you said, as an adult, you should take responsibility for it. If you think you are right and that you were respectful (see point 2), stand your ground and do not pay too much attention to hostile responses, as unpleasant as they can be. If you think you crossed the line, then simply put your ego aside, and apologise.
4. Playing the Victim vs Being the Victim
Do not necessarily consider yourself a victim if people react the way they do to what you said. For example, the passive-aggressive are known to see themselves as some kinds of martyrs, innocent victims attacked for no apparent reason. This way they do not have to take responsibility for their actions (see point 3).
If you are not sure as to whether this applies to you or not, go through what you wrote – see point 2 and be honest to yourself about it – and then move on to point 3. Victims do exist but are you really one?
Sometimes it is not possible to come to an agreement. Either side will not do what the other side asked, or even meet halfway. If you feel you have done everything in your power to come to an agreement and it was not enough, then simply give up and leave the discussion. Insulting the other side will not do you (or anybody else) any good. The world will not cease to exist if there is no solution to a discussion, no matter the consequences. After all, we are still talking about software, right?