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.
So can we expect to see a multitude of Scala related post in the near future?
At least you get an easy transference of skills, all there is to do is memorise the syntax and pickup a few idioms.
Pingback: F# Weekly #46, 2013 | Sergey Tihon's Blog
Onorio, first off I’d like to say that I’ve really enjoyed and appreciated your passion and effort in the F# community over the years.
I’ve also dallied with other functional languages over the years including Erlang, Clojure and Scala. As Dave said picking up new languages tends to be easier once you’ve already learnt one. Personally, I keep coming back to F# for it’s productivity and the fact I can use it at work. I guess if I found myself on the JVM I’d probably be picking Scala or Clojure. Overall, multi-paradigm programming seems to be on the ascendency in terms of mind share, and Scala seems to be ahead with adoption numbers at the moment, so if you simply want to follow the herd/swim with the tide it does look like a pragmatic choice.
On open source, I guess I might be one of the small group of regular contributors you mentioned. That said I’ve been really encouraged by the number of new contributors building new projects with F# over the last year or so, from testing frameworks like Canopy through to to Type Providers for SQL and Azure services, not to mention increasing numbers of F# samples being provided for C# based OSS projects.
Anyways, was feeling a little thoughtful and just adding my two-penneth. Looking forward to reading about your experiences with Scala.
Thanks for your candid testimonial of your experience trying to promote F#. I fully agree that Microsoft can do more in this respect, even without having to spend additional money: At the very least, they could stop ignoring F# in almost all of their communication and at conferences!
However, what really matters in my opinion is that F# is one of the main Visual Studio languages, with already-good (and steadily improving) IDE support, full MSDN documentation, and easy interoperability with thousands of .NET Framework types. Compared to the situation of other ML-based languages, this is like paradise. Add to this Xamarin’s support and the use in MonoDevelop.
Also on the “F# promotion” front, things look rather positive to me. I run the Zurich F# Users Meetup (see fsharp.ch) and, at the beginning, did all presentations myself. By now, I always find enthusiastic local speekers who actually use F# at work. There are more and more of them, especially in the finance and trading industries, as well as (in my case) building technology.
Recently, I gave an F# presentation at a conference in Geneva and was surprised that the room was packed full, although it was one of the last presentations on a Friday.
Even without knowing more and more other people who appreciate F#, I would still use it, simply because it makes me more efficient and lets me solve complex problems writing understandable code with fewer bugs: In one case, I wrote 53 types in three days and then had zero bugs upon first run. Last not least, I find coding in an ML-based language highly enjoyable…