On February 6, 2023, Kathleen Dollard, Principal Program Manager on the .NET team at Microsoft, published an update to the .NET language strategy. The new document is a continuation of the same ideas from the previous one written in 2017, in which C# and F# are the emerging languages and VB.NET is a niche language.
The new strategy document is hosted on the Microsoft Learn website. It’s divided into three main .NET languages: C#, F# and VB.NET, Infoq wrote on the topic.
C# is recognized as the language with the widest usage in the .NET community. Because of this, it will evolve aggressively to remain the “state-of-the-art programming language.”
The team clearly states that it prefers design solutions that benefit most developers, avoiding specialized enhancements for C#. At the same time, maintaining a “high commitment to backward compatibility” means that the team will consider the scale and impact of any change on the entire C# ecosystem.
One of the most significant comments from C# developers about the evolution of the language is the continued existence of many legacy structures, such as non-generic collections (like ArrayList from the first version of .NET) or native event support (largely obsolete in the asynchronous world of modern C#). Immo Landvert, a program manager on the .NET framework team at Microsoft, admits that the team has already tried to release a new .NET without the legacy components in the Windows 8 era and that “it proved to be completely unworkable” and “breaking the whole ecosystem.” In that case, it’s likely to assume that these features will be retained in C# for a long time.
The stated focus on “robust design” and “core VB scenarios” also makes it clear that Microsoft will not be extending either the VB.NET language design or its workloads, largely grouped around Windows Forms applications or libraries. Furthermore, there is an explicit sentence in which Microsoft “does not provide” support for web front ends (meaning Blazor) or cross-platform user interface frameworks (meaning MAUI).
Older .NET languages, such as C++/CLI, are omitted from the strategy, although the release notes state that these languages are not managed by the .NET languages product team. Developers have commented on social media that they are confused about what the changes in the strategy actually are.