I wrote a question a while back that mentioned (in passing) the relative merits of a particular software framework... and wow I got flamed! Someone said I was argumentative, and someone else called me naive. There were several other harsh comments and a number of downvotes... so I deleted my question, cried myself to sleep and regrouped.

I started digging around SO and Meta a bunch to look for similar threads... and began to see that posts comparing frameworks to each other were often closed for being subjective and argumentative:

I realized that there's an unwritten rule to never say anything that might be seen as a slight towards another language or framework... i.e. basically, avoid anything that might trigger a religious war. OK, makes sense.

So I've learned my lesson; I shall never again mention a programming framework - or if I do, I will only use the most objective language possible.

I was surprised by the whole experience though, because I had read just about every FAQ on the site before contributing... but didn't realize that there were unwritten rules and policies about how to phrase questions to take into account.

What exactly are the unwritten rules and policies of Stack Overflow? I've done some searching, but only found this thread. Is there a list of social norms somewhere on Meta or the FAQ?

Here are the unwritten rules and policies I've seen so far:

  • Be careful about expressing an opinion about frameworks or languages that might trigger a religious war.
  • In general, be careful with any opinions - especially on controversial topics. Use objective language and cite stats and sources whenever possible.
  • Avoid salutations like "Hi" and farewells like "Thanks! - Username".
  • Carefully search for duplicates of your thread before you post. If you find close duplicates, post a link so people know that you are aware of prior discussions on the subject.
  • Don't take it personally when people downvote you. It's not personal - it's just meta.

Any other unwritten rules and policies to keep in mind?

  • 33
    Dammit, kanamekun - if you write them down, then they aren't unwritten anymore! STOP INVALIDATING YOUR OWN QUESTION!
    – Shog9
    Sep 10, 2009 at 1:17
  • 15
    Hi kanamekun, Clearly python is best. But only if you code in vi; emacs produces slow code. And you should be running gentoo; a properly-tuned gentoo will run python code 2.174% faster compared with other linux, and 5.49% faster than Windows (because Microsoft DRMs every opcode). Of course, I only buy Macs. Their OS sucks but Apple makes the best hardware and it's so cheap for the price. Shame the iPhone was such a dud – Android FTW. L8R.
    – John Fouhy
    Sep 10, 2009 at 2:04
  • 3
    If you have to, you can always slander Java or Perl. Both are popular targets.
    – Kobi
    Sep 10, 2009 at 7:48
  • 3
    @john: you forgot to dis VB. Sep 10, 2009 at 13:27

2 Answers 2


I disagree that you can't sleight another language or framework. But if you do then you basically have to be right and your approach needs to be measured. You certainly can't go around willfully sledging.

But the real problem with your question was twofold:

  1. It asked for an objective comparison between PHP and Python. Such a thing is definitively argumentative and 99 times out of 100 there is no best. One might be slightly better suited to particular tasks and that's about it; and
  2. You answered your own question in the question. Many will interpret that as you having an axe to grind.

You can ask questions like "Should I use A or B?" but there are some guidelines for doing so:

  1. List some requirements. If you're trying to make a choice you will have some requirements and constraints. They could be knowledge you already have, a particular operating system you have to use, certain business constraints or whatever;
  2. Don't answer the question in your question. If you must, provide a separate answer;
  3. Qualify subjective statements. If you say "I'd like to use A because B sucks" that's quite different to "I don't know if it's just me but I've had issues in the past with B because of X, Y and Z. I'm concerned that this will come up next time."
  4. The question should be a question. Never ask "What do you use?" as that's a discussion. "What should I use?" is a question;
  5. There should be a definite answer. Even if it's subjective, this can still be true. "What should I use in this situation?" has a definite answer even though people may disagree.
  • 1
    Hey cletus - Sorry if I was unclear... that "PHP or Python?" post wasn't mine. It was just an example of a post that had been closed as subjective and argumentative...
    – kanamekun
    Sep 10, 2009 at 1:24
  • 2
    Most of these rules are in the FAQ, and are thus not unwritten. Sep 10, 2009 at 1:35
  • Indeed, it was most amusing the time I dissed PHP without really writing many reasons. I do suspect that even if I had, (and I did expand) I would still have been downvoted to oblivion. There are some topics that just aren't worth discussing on SO, IMHO.
    – please delete me
    Sep 10, 2009 at 2:09
  • 2
    @silky: whatever you do, don't dis Python, even by omission. Someone once asked "What RAD tools should I use?". I answered "VB.NET" (based on his requirements) and got about 10 downvotes from Python fanboys with comments like "-1 just cos I don't like VB". As for PHP, if you want to dis it general rather in a specific case you should be downvoted into oblivious because you've demonstrated an inexcusable level of ignorance.
    – cletus
    Sep 10, 2009 at 2:49
  • @cletus: actually, the takeaway from that experience should have been: don't recommend VB!
    – Shog9
    Sep 10, 2009 at 3:09
  • 3
    VB is only useful in tracking down killers via their IP address.
    – random
    Sep 10, 2009 at 4:13
  • 1
    cletus: Yes, there are certain languages coveted by fans so dearly that it's not worth the time to talk with them. And I did give a reason, (via editing) but I think people were too scared by my initial comment to take it seriously. No matter, it wasn't the best written post I'd ever published (I think it was one of my first). Just an amusing side-effect of the democratic system.
    – please delete me
    Sep 10, 2009 at 5:54

Actually, I think this is quite explicitly in the FAQ:

Avoid asking questions that are subjective, argumentative, or require extended discussion. This is not a discussion board; this is a place for questions that can be answered!

Perhaps it surprises you that a seemingly innocent question like Republican or Democrat PHP or Python should be subjective or argumentative, but that is just because you aren't as passionate about politics religion a given programming language as some others.

Really, except for the salutation issue it is all covered, one way or another, just not nicely cataloged. One, two are really part of the quoted line above, and five is kind of obvious from the description of voting. Four is thrown in your face by the interface when you type your question, with its attempt to find duplications (now if it would only try to find them after you entered the tags, keeping the search more relevant ...)

What is culturally interesting about SO is how much the people enforce the FAQ and similar expectations, and quote it to justify their doing so. I think that is a function of it being a community of IT people who like to look at the spec to remove ambiguity.

Not the answer you're looking for? Browse other questions tagged .