About F# popularity

Vladimir Shchur
6 min readJul 8, 2024

--

Life is Not a Popularity Contest

From time to time people join F# chats and question language popularity, so I decided to save others people’s time and write an article about it.

F# is indeed not a popular language (as of mid 2024). So what? If you think about it a little bit, this fact alone doesn’t justify any other actions about it. Taylor Swift is popular, does everyone have to listen her music? McDonald’s is popular does everyone need to eat there? Belarusian language is not popular, should it be abandoned? Popularity alone is not important, you need to dig deeper to get answers to the questions that are important. Usually when talking about F# popularity the person usually worries about the following topics in mind: finding jobs, finding developers, community, maturity, language features and language future. Let’s go through those items one by one!

Finding jobs

There is not much to say here, finding F# jobs is difficult indeed. It’s difficult for seasoned developers, but even more so for junior developers. However, there are several takes from it:

  • If you are a junior developer struggling to have you first or second job — leave F# for the later time in your career
  • F# will most likely be not the first and even not the second language for any F# developer, so they will have a broader knowledge compared to a more “popular” language developer
  • Once a company hires F# developer there is a very low chance somebody will lure him away

Finding developers

Surprisingly, there is no strong correlation with the previous section. It’s pretty easy to find F# developer, especially if you are open to remote international hire, because those who know F# but have to work with other languages (because of missing F# positions) often suffer and actively look for any opportunity to get F# job. I was personally able to hire two F# developers in two weeks without any support from recruiters and then repeated that two more times later.

Even if you are in a situation where you need to hire F# developer (for example if you are worried about legacy project support) but you can’t hire globally and can’t find developer in your area, you‘ll still be able to get C# developer and let him learn F#. Normally it takes few days for them to learn syntax, few weeks to be able to read and write working code, few months to write high quality F# code. .NET platform is the same and makes transition quite simple.

Community

Microsoft corporation is the main owner of the F# language (co-owners are FSSF and Don Syme), it has a small team of developers who work on the compiler, core library and Visual Studio tooling, decide on what and when to release and also manage open-source repositories. Nevertheless, Microsoft currently doesn’t promote F# in any way (for example there was no single notion of F# at the recent Microsoft Build) therefore community plays a vital role in the language ecosystem and does this well.

F# community is well known for being very helpful and supportive for years. However, it’s been a long time (F# is almost 20 years old), so I’d say that community has grown in waves.

First wave (2005–2012, “Evangelists”) was mostly initiated from Microsoft and included language main contributors, first adopters and book writers (Don Syme, Tomas Petricek, Chris Smith, Robert Pickering, Jon Harrop, Dmitriy Soshnikov and others). They did great job at showing F# potential, but couldn’t make F# mainstream that time, functional ideas were quite unfamiliar in general programming community.

Second wave (2012–2018, “Builders”) was much bigger, and was very close to make F# “popular” (it reached Tiobe top 20), however C# did very well that time as well, so F# couldn’t take over. This period is a period of skillful practitioners and ambitious projects (fsharpforfunandprofit, fslab, mbrace, ionide, fable, websharper and many others) and commercial projects (the most famous was jet.com). Unfortunately, for different reasons most of the people behind those initiatives either stopped using F# at all, or stopped supporting those projects. Still, their work wasn’t wasted and proved F# applicability to the wide range of real world tasks.

Third wave (2018–2024, “Survivors”) consists of people who finally were able to bring F# to “regular” production. This is a period of consensus between F# users, also the most “aggressive” F# marketing from community. Most of the “best practices” have been developed, tools reached high quality, functional programming has gained traction overall, processes stabilized, channels (slack, discord, telegram, twitter) established, clear separation between “used” and “abandoned” libraries has been formed. One downside of this period is that F# BDFL Don Syme is no longer as active as before and it’s unclear if anyone could replace him in this role. However the path is paved and current wave is coming to the end, so there is an open question whether the fourth wave of new users will continue the circle of life.

Disclaimer: the above classification is not strict, there are activities that span multiple waves, but I still hope that some separation will be useful for understanding

The latest most effective community initiative is Amplifying F#, they actively work to make F# better by doing their code and video content contributions, so if you’d like to help F# strive, the easiest option is to donate them and that money be used in proper way.

Maturity

As mentioned above, F# is mature already. Yes, tooling has still a lot of room to improve, there are many bugs to fix, but it’s so much better than it was 10 years ago. The tools (Ionide, Rider, Visual Studio) have come a long way from “there is a feature that works well” to “there is a feature that doesn’t work well”. Most common areas are covered

  • Major cloud providers support CI/CD and runtimes (article)
  • Server web development (Oxpecker, Giraffe, Falco)
  • Client web development (Fable, Bolero)
  • Desktop and mobile development is available (FuncUI, Fabulous)
  • And the galore of other scenarios through the use of common .NET libraries

Through the years there have been thousands of articles and books written about F# from novice to expert level, so availability of information is not a problem nowadays. Also LLMs can generate F# code and explanations pretty well, so this box is also checked.

F# is fully production ready and I can confirm that building applications with F# is very productive and valuable for businesses, despite being not that “popular”. (another reference)

Language features

F# resides in the middle ground between classical FP and OOP languages (article). It’s combination of features and defaults helps writing robust, concise and high quality code without bugs, so the development cost effectiveness is unparalleled. It’s a general purpose language, so most probably you’ll find areas where specialized language with particular features will work better, but for the most of business line applications F# will cover 100% needs.

There are many articles comparing F# with other languages, so I won’t repeat them here, still the main competitor will always be C#, since they are both .NET languages and platform selection goes first. One strong point in comparison with C# these days is that most of the newest C# features have been copied from F# (which proves their relevance), but they don’t fit C# as nicely as they fit F#. So if you want to follow modern programming industry trends, you’ll have much more pleasure going with F# on .NET platform.

Language future

It’s always challenging to talk about future that is unknown. Currently there is a list of problems that F# team and community have to solve

  • Attracting new people for the “fourth wave”
  • Keeping up with C# feature interoperability
  • Develop some new features
  • Continue evolving tooling
  • Adopting the AI era
  • Finding a way to evolve without BDFL (many processes still have strong dependency on Don)

Some of those points are connected with the others, but I believe that all of them are very important to keep language healthy. While right now it is the best time to easily get into F# and use it successfully, it’s unclear why new developers with different backgrounds are not ready to try it. It’s funny that two most commonly used criticisms about F# are that

  • it’s too functional (from OOP developers)
  • it’s not functional enough (from FP developers)

This makes clear that F# has the right balance of FP and OOP features, however whether this balance is attractive enough for the newcomers of the 4th wave is to be seen.

--

--

Vladimir Shchur

F# developer, contributing for greater good. You can sponsor my work on Github: https://github.com/sponsors/Lanayx