I have been a vocal advocate of F# for a long time. I’ve shared some of my little interesting discoveries in the language from time to time. I’ve been trying to help other .Net developers to see what a great, cool language F# is. I’ve tried to add intelligent conversation to the world although I have a bad habit of speaking before I think; I’ve been holding off on saying this for a while exactly because I do have a bad habit of speaking before I think. But this has been coming for a while.
I am just tired of seeing such a great technology being bungled by Microsoft. I don’t know what the internal politics are and I don’t much care. This has been coming for a while for me and today I finally reached the breaking point.
It started when I saw that the C# team rebuilt async functionality in C# 5. I had always been told that Microsoft’s position was to encourage people to use C# where it made sense and to steer people to F# where F# made better sense. The addition of async functionality to C# 5 shows that is simply a lie. No matter what they do to C#, async will be easier to code in F#. Yet rather than encouraging people to build their async code in F# and then link the libraries, the decision was made to build async into C#. That disturbed me but at the time I thought to myself–oh well. Now I am beginning to wonder if F# is being used as a way of prototyping ideas that Microsoft wants to pull into C#.
Then there were the conferences. I went to LambdaJam in July. There were maybe 30 or so of us who like and use F#. There were probably easily 100 who like Clojure and probably a just slightly smaller number for Scala. There were even folks interested in Erlang and Elixir–and I’m pretty sure there were more than 30 of them.
When I went to Strange Loop a few years ago–several sessions on Clojure, a few sessions on Scala, and one session on F#. Just one poorly attended session given by one of the guys from the MS F# team. Nothing speaks to Microsoft’s apathy regarding F# any louder or any clearer.
I tried leading a BOF for F# at CodeMash in 2011 as well. Two people showed up. Well two if you count me. Don’t get me wrong; no doubt F# is starting to gain some traction. F# is finally starting to gain some popularity. But Clojure, Scala and Erlang are also gaining in popularity as well.
I don’t feel the need to follow the herd but I am also aware that if everyone is going in one direction there’s a good possibility that they’re all right and I’m the one that’s wrong. That sounds like a statement of the obvious now that I reread it but I’ll leave it in anyway.
I’ve been waiting to see if maybe the open source community might embrace F#. F# is really a good language and I want to see it succeed. But the open source community for F# is basically the same small set of people that have always worked with F#. And somehow I don’t believe they will embrace F# any more than they’ve ever embraced Mono because they’ve grown up with “Microsoft is evil!” drummed into their heads.
So today someone for whom I have a great deal of respect basically told me to not criticize Microsoft for their apathetic approach to F# and that we as a community need to do more to push F#. I guess those two conferences I organized here in Detroit and that F# user group I ran for a while just demonstrate what a slacker I am. I guess the F# talks I’ve given basically show that I need to do much more for F#. David Giard, Microsoft C# MVP once referred to me as a “F# Fanboy” (he was kidding but only a little) but apparently that’s simply not enough.
So to sum up; I’ve had it. I’m going to learn Scala. I know a few decent folks in the Scala community and I have no doubt that the fundamental ideas of functional will transfer just fine to Scala. But I’m tired of fighting for F#. Tired of fighting the tide of apathy coming from Microsoft. I guess those folks who are fighting for F# within Microsoft just don’t know how to fight the politics of Redmond.
I am only bothering to share this with the world because I have been a vocal advocate of F# in a lot of forums. I hate the taste of crow but I hate being a hypocrite even more. Either way I’m not wasting any more of my time on the betamax of .Net languages. I sincerely wish good luck to those sticking with F#; they’re a great, smart bunch tilting at windmills as they are. As for me, I’m just tired of fighting for F# only to be told I’ve not done enough. I really hope they succeed but they really have a tough course to chart because MS doesn’t seem to care at all about F# and I think the OSS community only sees evil Microsoft and they’re not willing to look beyond that.