Every once in a while, somewhere on the internet some people get into a cycle of doomerism about F# and Microsoft. You can see a fun catalogue of this on Reddit but it comes up in the F# slack, discord, hacker news, and social media too.
All I can say is: ugh, come the fuck on.
First of all, anyone who has a bone to pick with Microsoft should take a close look at the high and consistent volume of code contributions over the years. When I was the PM for several years, I saw people in the community come and go, complain about “Microsoft investments” or whatever, and then disappear all while we were still just pushing code and adding new features. Drive-by GitHub issues, hacker news comments, reddit comments, etc. all from people who showed up out of nowhere, seemingly did nothing, and then left.
Detractors come and go, but Microsoft is still there, paying people to fix your bugs, add features you like, and continue to support people who pay money to have a supported product within Visual Studio.
And recently, Microsoft did the unthinkable: created an entirely new F# team in addition to the people who were already working on it.
Do you know that Microsoft has been regularly paying $10k USD to OSS projects for years now? There’s a program that employees participate in to vote for which projects get money. When I was at Microsoft, several F# projects were considered and voted on, even coming close to getting a grant. Instead of focusing on why an F# project didn’t win out yet, ask yourself this: does your company run a program like this? Why not?
When I was at Microsoft, I also helped ensure that Microsoft paid for 3 months of full-time work on Ionide and FsAutocomplete . The results of that work were the first version of the F# LSP, several new features, and tons of performance work. The stipulations of the contract? Just do good shit that users are happy with. That was it! And even better, I wasn’t the one who proposed this. An engineering director who noticed that a lot of people use Ionide kicked it off and got approval. Has your company offered to pay the maintainers full-time, no strings attached? Why not?
While F# is supported in the context of .NET and Visual Studio, at the end of the day, it is an open source project. There are timelines and oblogations that the team must meet, but other than that, there’s no master plan or anything, and there never will be. F# is one of the best-funded and most stable open source projects in the world. And like other open source projects, they don’t owe you a whole lot. They don’t owe you certain features, they don’t owe you a particular team size, they don’t owe you money being sent to a particular library, and they don’t owe you maintenance of your favorite library either.
If you want parts of the F# ecosystem to get better, be the change you want to see in the world! Roll up your sleeves and do the work. But you’re gonna need to flex your non-technical muscles, because writing code is the easy part here. The hard part is building an argument and demonstrating why it’s valuable to invest in F#. Wanna know how I know this? Because this is what people at Microsoft do all the time, and not just for F#, but for literally everything. If you think that it’s just a given that a particular project at Microsoft lives on forever because there’s always someone there to pick it up, you’d be horribly mistaken. People on the inside do the difficult non-technical work every year to ensure that the things they work on keep getting funded and improved. And they then follow up each year by building things that meet their goals. If you’re under the impression that “Microsoft doesn’t give a shit about F#”, then I would challenge you to do this work yourself. Buckle up, because it ain’t easy, like getting into a doomer argument on the internet is.
If that’s too much, then do the non-technical work to convince Microsoft that your favorite feature request (or whatever it is) is worth doing next! Build a careful argument, engage with the extremely kind people who work on F#, engage with others in the community, and build consensus in a world filled with different opinions. And if you’re not successful, be graceful in handling that.
Like an open source project, you can also fork F# if you like. If you truly have the time and money to be able to turn it into what you truly want it to be, go for it! Supplant Microsoft as the major contributor to the language and its development. Package it up in wild and wacky ways, add incredible features, build the best IDE tooling on the planet, and get the community to back you instead of Microsoft! Since it’s MIT licensed all you need to do is provide attribution. What’s stopping you?
So why did I write this post?
- You don’t really have to worry about Microsoft
- Microsoft is doing a lot more than you likely think they are
- If you really care, you should put in the work instead of complain about it
And above all else, just build cool shit and have a good time. Stop focusing on what Microsoft is doing or not doing. F# is a turing complete language available on all major platforms in the world. You can build just about anything you want with it.