(Follow-up to) Attracting more developers to F#
So I ruffled a few feathers with my previous post, Attracting more developers to F#.
Most of the feedback I received was positive, but not all of it, and I want to continue the conversation a bit further.
The Big Idea
For some readers, the big idea of my post got lost due to some clumsy writing on my part. Here's the main thing I was trying to say, in five points:
(1) In the context of .NET ...
(2) F# usage is being hindered by the perception that adopting F# will be a terribly painful change, and ...
(3) This perception is inaccurate, as it is very possible to approach F# in an incremental and additive way, and ...
(4) To some extent, that will involve using the non-FP features of F#, and ...
(5) That's okay.
I like to think that if my post had contained only the five points above, it might have earned an "Amen" from nearly every F# fan.
However, based on the feedback I received, I now see that my post had some minor problems, and a couple of major ones.
The minor problems mostly came when I tried to illustrate my big idea with somewhat quirky examples. Perhaps it was a bit contrived to reference the issue about the F# compiler backend. Perhaps the terminology of "ML dialect" was not the best way to speak about how questions of functional programming might play into the perception of F# as a non-incremental change.
Those things don't bother me too much. It's rare to write something and never find ways it could have been better.
The main reason for this followup is to address the two problems I see as "major".
What about JS, Fable, SAFE stack?
My post doesn't clearly explain where it fits in the F# community as a whole.
F# is a .NET language, but nowadays it is also a JS language. It targets two (somewhat) distinct platforms.
Point (1) above wasn't clear at all. Picture a Venn diagram of the F# community and the .NET community. My post was intended to be applicable only to the area where those two circles overlap. When I was writing it, I was thinking mostly about .NET Core and Xamarin.
So it (understandably) seemed strange to some readers that a lot of the exciting stuff going on in the F# world right now is with Fable and SAFE, (which, BTW, are obviously awesome), and I didn't mention them. I should have, if only to provide better context.
Personally, I am extremely interested in the perception and adoption of F# in the .NET community, so that's what I was writing about.
But plenty of F# developers are focusing their attention on other areas, and that's cool too.
Given points (2) and (3) above, the question is "Why?".
Perhaps I should have left this in the form of a question. Something like: "Much of the .NET community has a perception of F# that (I think) is inaccurate. How did that happen?"
Instead, I tried to proceed with the following sentence as my starting point: "My claim is that we (F# fans) need to examine how we are contributing to the problem."
Ordinarily, I would have no hesitation about that kind of approach. Every coin has two sides. I hold a basic belief that in every disagreement or misunderstanding or conflict, even if it initially seems like I am not at fault, it is profitable to ask myself how I might be "contributing to the problem".
I do think we (F# fans) have choices in how we talk about F# to others. Our words can help promote accurate perceptions or they can add confusion.
And I do still think maybe I am correct in saying that "The least effective way to promote F# adoption is the one that comes most naturally."
But my post tackled this issue with far too little awareness and respect for the full history of the F# community. I am, relatively speaking, a newcomer. In the 14 year history of F#, there have been quite a few ups and downs. I didn't start with F# until around 2014, so I wasn't there for all of that.
Quite simply, if you have been with F# for a long time, you've been through a lot. Did my piece seem like I was saying it's your fault that C# developers don't understand F#?
If so, I can understand why you saw that. And, given how complicated the relationship between the F# and .NET communities has been, I can understand why challenging you to examine your level of responsibility would be unwelcome, especially coming from someone with only a few years on the scene.
And I'm sorry.
I love F#. I love C#. I just want us to be a happy .NET family.
Thanks so much for those who took the time to read my post, and to those who gave feedback, both positive and negative.
But the memes. Not exactly fresh, but still, the memes were great, right?