This article is more than 1 year old

Microsoft boffin inadvertently highlights .NET image woes by running C# on Windows 3.11

Old? Windows-only? Community struggles with '40-year-old male' problem

Microsoft senior software engineer Michal Strehovský has run a small .NET Core application on Windows 3.11, a version of the OS released in 1993.

Strehovský posted this achievement on Twitter, explaining that it demonstrates C# compiled to native code with few dependencies. Windows 3.11 is 16-bit, but includes a library called Win32s, which supports some 32-bit applications. "Turns out the object files produced by the CoreRT ahead of time compiler from 2020 can still be linked with the linker that shipped with Visual C++ 2.0 in 1994," he wrote.

While not of any practical use, the example shows Microsoft's progress in compiling self-contained .NET Core executables, as noted by Microsoft partner program manager Scott Hanselman. Success in this case hinges on the use of CoreRT, described as an "experimental .NET Core runtime optimized for AOT (ahead of time compilation)". Microsoft has indicated that it plans to make compilation of .NET code into native single-file executables part of .NET at some point, but has "no plans to productize [CoreRT] in its current form".

Strehovský's post with C# running on an ancient version of Windows is intended to show us something interesting about its future, but does so with echoes of the past. Does Microsoft have an image problem with C# and .NET – that it is perceived as old and tied to Windows, rather than cutting-edge technology?

Last week Microsoft ran its "Ignite on tour" event in London, the idea being to share news from the main Ignite event last November in Orlando. London-based developer David Whitney attended a .NET community panel there and was struck by the demographic profile.

He said on Twitter: "We're all very aware that technology has a huge representation problem. I absolutely adore the .NET community that has been my 'spiritual home' for almost two decades. But here's an uncomfortable truth – it's a number of orders of magnitude worse in our community. In its current form .NET is for 40-year-old white men. That's the visual."

Microsoft's Mikayla Hutchinson, a principal software engineer who works on .NET tooling, agreed, saying: "I've lost count of the number of times I've had this conversation, and although folks are generally sympathetic, translating that into concrete change is difficult."

.NET developer José Manuel Nieto responded with his own summary of .NET's image problem, stating: ".NET doesn't get much love from younger devs."

He pointed the finger at the lack of compelling cross-platform GUI technology, Microsoft's enterprise focus, and the fact that Visual Studio is a paid-for product.

Although the points made are primarily about the kind of .NET events Microsoft sponsors and puts on, rather than the usage of the technology itself, the two issues are related. Despite making the technical leap to cross-platform and open source, the company struggles to shift the perception that it is Windows technology and less suitable for mobile or Linux targets than alternatives. By contrast, Java has Android as well as enterprise, Python is all the rage in AI as well as general development, and JavaScript is everywhere.

Putting this in context, note that C# remains popular, ranked sixth after JavaScript, Java, Python, PHP and C++ in the most recent Redmonk language rankings, for example. It is the 10th most-loved programming language in the StackOverflow 2019 survey, with 67 per cent approval. You can also be sure that if Microsoft had not taken the decision to make C# and .NET cross-platform, both usage and popularity would be below what they are. It is also true that the "40-year-old male" image is a problem for many technology events, not just .NET.

The issue is real, though, and the company has a challenge in marketing C# .NET to a younger and more diverse range of developers. ®

More about

TIP US OFF

Send us news


Other stories you might like