People occasionally ask questions of the form, "Why does language/API/etc allow/forbid/not implement feature X?" What is the policy, if any, for such questions?

Sometimes these are rants in disguise, a way of writing, "Lanugage/API/etc annoys me because it allows/forbids/doesn't implement feature X" in the form of a question. Obviously, these should be closed as non-constructive and likely deleted.

Other questions are genuine inquiries, people looking for actual information. Some of these questions work well within SO; they do so because the reasoning for it is something that is known or well-understood. In these cases, the answer is either fairly obvious to someone in the field or the subject of publicly available information that experts in the field know.

For example, if someone asks why Lua doesn't allow constructs like "value++", it can be explained. The reasoning behind the way Lua forbids expressions from changing the value of local variables is well understood and has been explained via documentation from the language's creator. Many Lua experts would be able to answer such a question, even though they were not directly involved in the language's creation.

My concern comes from questions which are clearly not rants, but the actual answers for which are not widely known. By that, I mean that the only people who actually know the reasoning why feature X is allowed/forbidden/not implemented are the people who were responsible for developing the specification/implementation itself. Only the owners of the language/API/etc actually know the reason why they made certain decisions.

What this often leads to is a form of popularity contest. People offer varying opinions about why the feature is the way it is. Some of them are well-reasoned and some are not. The concern is that the answers will ultimately be speculative; as such, people will either vote for the argument they feel is stronger or the opinion they agree with.

That's a lot like a poll question, is it not?

Now, it would be easy to just say that such questions should be closed. Except... sometimes the actual authority(ies) in question are here on this site. Howard Hinnant is a member of the C++ standards committee and has, on a couple of occasions, provided insight into the reasoning behind certain C++ standards committee decisions. If we simply shut down such questions, we wouldn't be able to get his insight on them.

At the same time, if an authoritative source is not forthcoming, then it becomes a free-for-all of everyone posting their own belief about why the language/API/etc is the way it is.

Is this a problem or concern? Do we need to decide on some form of policy? How do we balance the needs of keeping the site clean with allowing authorities to participate and bring their unique insight into Stack Overflow?

As an example, consider this question*. Many people can post reasoning, and quite justified reasoning. But unless you were actually on the standards committee, then there's no way to know whether any particular reasoning is the actual reasoning they used.

* I didn't post this solely because of this question; I've been thinking about this for a few weeks now. This question was more of the straw that broke the camel's back.

3 Answers
3

Please don't have a rule about this. We don't need new rules to deal with this.
Our existing rules cover all the problems this raises.

If it's ranting or trolling, we can shut it down for
being rhetorical or sparking extended debate.

If it's just seeking some sort of workaround or explanation because of
genuine confusion, everyone chipping in is appropriate,
and having a variety of viewpoints may really help the OP understand.

If they genuinely are only interested in some authority's original reasoning,
they can ask so clearly. If they want to ignore answers that aren't written by the
original decision makers, that's up to them.

Sometimes they've phrased it as
"why did they decide that?" when they just mean "please explain this design decision
which baffles me"? It's OK to answer the underlying confusion in this question instead
of taking the question completely literally as an appeal for information about what
happened in some meeting years ago.

If an answer is speculative and incorrect, more experienced posters can point
that out and downvote.

I've come across questions where this was asked, where the OP ended up
having an epiphany and coming to a deeper understanding.
A lot of times, people ask this question when they're inexperienced
in a particular area, and having a bunch of experienced specialists
turn up and explaing something is why SO is so good.

We should deal with these questions on a case by case basis and not
have an appeal-to-authority policy.

In some cases, language designers and maintainers don't come around to talk about their language. That's ok, they're busy people. That's why they have us. Does this mean the question should be closed? No.

Unlike Quora, we don't care as much about your title or who you're with. Don't get me wrong, we respect it, but when's the last time you saw someone downvote Jon Skeet because he gave a canonical answer on C# Language design, even though he works for Google?

There's no need to have a rule about this. The community can sniff out those occasions where no one will ever be able to give a canonical answer and deal with them as they arise. Otherwise, it's not even something we should worry about.

Fortunately he wasn't put off by the closure, and re-asked the question on Programmers, where both maintainers of the Python module in question showed up and answered the question. Yes there are a couple of other answers there, that read more as (perhaps educated) guesses than actual answers, but that's not really a big deal.

As George Stocker already mentioned, we can't really dismiss the possibility that a core developer of the language/platform/API/whatever will show up and provide a definitive answer to the question, it might be a rare occasion but it's not that rare. And it's not unthinkable that someone that wasn't involved in writing the code will be able to give a definitive answer, especially for open source projects.

However I think it's true that more often than not this category of questions tends to be borderline or outright Not Constructive. And if you think Stack Overflow gets a lot of guesses posted as answers, well, imagine what the situation is on Programmers, where we are a (tiny bit) more tolerant towards subjective questions.

That said, I think a specific rule against such questions, any rule, would prove counterproductive. I'd hate it if we had missed the opportunity to have Ruby and Python core developers collaborating on one of our sites, and we almost did. Again not criticizing the closure, however on Programmers I did go against my mod instincts and let the question breathe for a while, a luxury SO mods don't have. I've handled less flags this month than SO mods handle each on average per day, I have the time to closely examine such questions, share them around to language specific communities and do whatever else is possible to get definitive answers for them.

And I think that's what we should be doing for such questions on Stack Overflow as well, the difference being that we can't expect our already overworked moderators to take the lead. I think the preferable solution to the problem is to be even more vigilant than we already are, downvote speculative and opinion heavy answers to oblivion, advertise the questions to relevant communities outside Stack Overflow, edit and improve anything that can be improved. And above all, kill the outright rants with a vengeance.