There was a question posted to Stackoverflow about an implementation of the solution of “Einstein’s Riddle” in F#. Here’s the text of the question, which I include in case the text of the question is later altered:
I’m looking for Einstein’s Riddle solution using F# and I’ve found only Einstein meets F#.
Is F# suitable for this problem and are there any other implementations?
After a bit of discussion and debate, the question was closed. After a bit more discussion, the question was reopened. It’s currently well on its way to being closed again. This is nothing that unusual for Stackoverflow.
What I found quite interesting and a little bit troubling was a thread of tweets on Twitter about who closed the question and why it was closed. Perhaps I misunderstood the tweets in question but it seemed that people thought the question was closed partly because it concerned F#. One person implied that one of the people who voted to close the question had no right to do so because he’s never answered an F# question and therefore can’t know anything about F#.
Now this is solely my opinion, of course, but I think the question should be closed, F# or not. The reason is the second sentence. “Is F# suitable for this problem and are there any other implementations?” If he had stopped after the first question, I would have been fine with the question being left on Stackoverflow. However, think about that second sentence “Is F# suitable for this problem” – well, I don’t know. Define suitable and then we’ll talk. F# is suitable for lots of stuff but if you need to build a solution on the JVM then no it’s probably not suitable. If you need to interface with lots of native DLL’s on Windows, there may be more suitable approaches. If you’d like very succinct, short code then probably Prolog is more suitable. This strikes me as a terrific example of an open-ended question. Without additional context it’s impossible to give a definite answer. And the second part “are there any other implementations?” Well, yes, I’d be willing to bet there are. Which language? Why do you want to see the code—I mean I doubt this is something for work so why do you want to study it? Again, hard to answer without additional context.
To my mind the second sentence is rather an open-ended question no matter how you interpret it. And the Stackoverflow FAQ pretty clearly asks people not to ask open-ended questions: “Chatty, open-ended questions diminish the usefulness of our site and push other questions off the front page”. Now the FAQ is not the received word of God but it is a sort of contract that the people paying to run the site ask all of the users to honor.
Frankly I have to say that I’m a little disappointed with my fellow F# developers who seem to think that someone is going through and closing questions solely because they touch on F#. It takes five votes to close a question—one person with a grudge is only 20% of the way there–and I don’t think implying that someone has a personal grudge against F# is really helpful or productive.
Don’t get me wrong; I have nothing against open-ended discussion questions. I do have a problem with people posting such questions on Stackoverflow when the people running the site have repeatedly asked members not to do so.
Now some of you reading this will think—fine delete the second sentence. But that’s not quite the same thing as fixing a typo now is it? If the original questioner would remove that second sentence I’m sure no one would be voting to close his question. But that should be his decision.
As I say, I’ve got nothing against open-ended discussions—love them in fact. But when someone provides a great service to me for free and they ask me to please avoid a certain behavior it seems a bit ungrateful for me not to avoid it.
And please fellow F# developers—dial down the paranoia a bit please? Hypersensitivity to any whiff of anti-F# feeling isn’t really helping us to get the word out about a great language.
Closing questions is like surgery: it should be a last resort. Opinions obviously differ on this particular stackoverflow question, and that should be reason enough to let the question live.
Just to clarify the position of the other side: The question is oddly formulated, probably because the asker is not a native English speaker. I think the asker wanted an F# program or pieces of an F# program that solves this problem, but felt the question was too short and felt a need to add the unnecessary fluff about F# being good for the job or not.
desco managed to understand the real question behind the text and provide an answer that was accepted. This should be indication enough that the question was in fact not open-ended.
My opinion is that this question should be closed for being a duplicate of http://stackoverflow.com/questions/318888/solving-who-owns-the-zebra-programmatically
Note that it’s important this question not be closed for “not being a real question”, as it may eventually lead to its deletion. This is unlike duplicate questions, which are typically allowed to live on as they lead to the earlier question.
The question has an answer by desco which is good, and it would be a pity to lose it.
Regarding the supposedly anti-F# bias of stackoverflow: There is in general a bit of animosity between imperative programmers “from the trenches” and functional-programming enthusiasts “from the ivory towers of academia”, and I wouldn’t be surprised if it occasionally showed on stackoverflow. I don’t think we should be worried that this would lead further than the occasional fight around languages, there’s enough of F# enthusiasts to protect F# questions.
Thanks Johann–good points. I posted this because I was tired of trying to discuss this in 140 character snippets.
It was when someone threw out the phrase “anti-F# witch hunt” that I felt that possibly the situation was getting blown out of proportion.
Wow, I had seen the questions but missed the ensuing comments storm. Weird for such an innocuous question…
I am with Johann on the idea that a question should be closed as a last resort – to an extent. Closing questions is also an essential part of keeping StackOverflow fairly high quality – I think the author of the question should simply be given a chance to adjust via a comment before pulling the trigger. Maybe in this case the simple solution would be to edit the question – it has a great answer already, just work on making the question fit the answer 🙂
And I am very excited to hear that for the first time in my life, I am part of a Conspiracy involving a Witch Hunt! How adventurous and romantic the life of the F# enthusiast is.
“This is nothing that unusual for Stackoverflow”. But think about what it means. The people voting to reopen are going out of their way to say that they can provide an informative answer given the chance. The people voting to close are just preventing everyone from seeing any such answer. Why not give us a chance to answer the question?
“it seemed that people thought the question was closed partly because it concerned F#”. One person wrote one tweet asking me if I thought this was an anti-F# witch hunt and Joh and I both replied “no”.
However, as Joh also pointed out there is a less specific question on the exact same problem thriving on Stack Overflow so why are so many people going to such great lengths to destroy the F#-specific question? Also, why was this question closed and deleted without comment? And why when I stepped up and asked people to justify the action they had taken against Pavel’s question was I subjected only to ad-hominem attacks from John Saunders to the extent that a moderator deleted his comments?
“One person implied that one of the people who voted to close the question had no right to do so because he’s never answered an F# question and therefore can’t know anything about F#”. I pointed out that two of the three people who deleted both the question and its answer hadn’t earned any F# tags on StackOverflow. Only ildjarn had any F# tags and he has 1/10th as many as me. Pavel’s question was about F# and logic solvers but John Saunders earned the right to destroy Pavel’s question by posting thousands of answers about web programming and XML. Same story for almost all of the other people who voted. You should not value their implied agreement with you.
“This strikes me as a terrific example of an open-ended question. Without additional context it’s impossible to give a definite answer”. Yet all those people who voted to reopen, including me, believed they could give a definite answer but now they have been prevented from even trying to do so. Relatively few languages features are useful when solving this problem and F# has some of them but not others. A good answer would enumerate these and highlight some of the different approaches that could be used to solve this problem in F#. I don’t believe any of the people who voted to close or delete this content understand that and now they have robbed themselves and many other people of the opportunity to learn.
“Why do you want to see the code—I mean I doubt this is something for work so why do you want to study it?” I assume he wants to learn how to solve logic puzzles using a computer but I see no merit in requiring people to explain what they intend to do with information. It is irrelevant.
“are there any other implementations?…Again, hard to answer without additional context”. You Google the other implementation and post an answer referring to it. How is that “hard”?
“It takes five votes to close a question—one person with a grudge is only 20% of the way there”. You failed to account for the gangs of people (like John Saunders) who go around adding votes to close or delete regardless of content, and the fact that this question was deleted with just 3 votes. One person’s grudge is actually ~100% of the way to deleting a question and its answer. And when I am personally attacked for simply asking them to comment, where does that leave us? I, for one, don’t want to partake.
“To my mind the second sentence is rather an open-ended question no matter how you interpret it”. Then my answer should not exist, yet it does exist. You only succeeded in prevented me from posting it.
“And please fellow F# developers—dial down the paranoia a bit please?” You are the only person in this context to have subscribed to a conspiracy theory.
I find myself at a little bit of a loss for how to respond. You tell me that I’m the “only person in this context to have subscribed to a conspiracy theory” and yet, you say things like this:
“You failed to account for the gangs of people (like John Saunders) who go around adding votes to close or delete regardless of content, and the fact that this question was deleted with just 3 votes. One person’s grudge is actually ~100% of the way to deleting a question and its answer.”
It sounds an awful lot like you think there’s a conspiracy–“gangs of people”? Not an anti-F# conspiracy I’ll grant but a conspiracy nonetheless.
I get the feeling that you think that Stack Overflow isn’t very helpful. I think “isn’t very helpful” is an understatement but I do try to avoid putting words in people’s mouths.
I think you’re mistaken about Stack Overflow but everyone is entitled to his own opinion. I think that people like Pad and Tomas Petricek and Daniel do a great job of answering the F# questions but I don’t believe that leaving open-ended essay questions open on there is really serving the purpose of either StackOverflow or F#. I guess it’s just down to what one considers an open-ended question. As I said I consider the first part of the Einstein’s riddle question just fine and if he had stopped at that, I wouldn’t have voted to close the question. But he didn’t stop there.
“It sounds an awful lot like you think there’s a conspiracy”
Gangs of people can systematically add more votes to close questions at random on Stack Overflow without knowledge of each other, i.e. without conspiring. Therefore, it is not technically a conspiracy. Just an observable pattern of behaviour.
Regarding whether or not people are actually doing this, read the Meta question I cited in one of my tweets where someone pointed out that John Saunders has been deleting up to 20 questions per day and he responsed with a description of how he simply goes down the list of questions with pre-existing votes to close and adds his own vote. Given his failure to explain his actions in this case, it seems safe to assume that he is essentially doing this randomly. Given the irrelevance of the other voters to this question, it seems safe to assume that they are also casting extra votes at random. http://meta.stackoverflow.com/questions/14652/people-abusing-deleting-questions
“it’s just down to what one considers an open-ended question”. Exactly. In this case, I don’t understand why a discussion of the applicability of F# to this kind of problem is “open ended”. It seems quite the opposite to me. The answer is quite short and simple. You could have seen this if only you hadn’t closed the bloody question! 🙂