.net 10 Could Hit the Sweet Spot

Intro

A quick recap of previous episodes:

  1. I tried to reflect on programming language development history and the reasoning behind it.
  2. I tried to write some real-world apps using JavaScript and Go.
  3. I still didn't find the unicorn and felt bad about wanting to write more server-side JavaScript.

What fit me well and allowed me to write the most logic per hour was actually Django, because of some embedded stuff like roles, an ORM, security features, user management, and not overloading me with technical stuff. But my requirements emerged, and now I want the following as well:

Of course, it should be open-source and permissive to write any apps I want – that's just non-negotiable, but something worth checking when you are dealing with Microsoft.

Go is great – it really pushed me in terms of thinking, but if you take a "machine-human" scale, it's somewhere on the machine part. These are not roadblocks, it just made me realize one more time what I'm capable of:

And with all that said, I'm going to try another ecosystem that introduced a few exciting changes recently: .net 10.

.net 10 perks

Actually, .net 10 has got everything from the above, specifically:

And there's Avalonia for a unified, modern UI across Linux, Windows, and macOS desktop as well as mobile (iOS and Android).

At the moment, I tried to cross-compile a simple desktop app from WSL to Windows, and it worked. I compiled one for Linux, and it worked as well. The drawbacks? Sure:

Conclusions

I always looked at C# as Java for Microsoft fanboys, but technically it was an effort to make Java normal. The surprise for me is that in .net 10, all the critical components are open-source and cross-platform. Even Microsoft itself hasn't produced apps leveraging all the features of .net 10. Teams could do that, but it has a legacy codebase and is a web-first app, so it makes sense for them to continue struggling with React. Let's review one reason pro and one reason contra.

The reason contra is that I've heard a lot of stories of rewriting Java apps in Go, but I don't know any examples of rewriting a Java app in C# and .net. It's especially strange because C# is similar to Java, while Go is not. What I think is that .net got this critical package of features in .net 10 quite recently, while Google and Go have been consistent for more than 10 years. It's about trust, which is a weak side of Microsoft. Again, what forced Microsoft to make the right choices finally? Maybe they feel they are losing ground, and locking users into their ecosystem is not enough anymore. It's like companies making their tech stack open-source before filing for bankruptcy. And the next question is: will Microsoft remain consistent with open-source components if .net gains traction? With the reputation Microsoft built (or destroyed) over the years, it's a risky business to invest in C#. By the way: who is doing it? There are quite a few well-known examples built on this stack, although it's widely used (as well as Visual Basic). Can you build Docker or Twitch on a .net stack (for those who don't know, these are Go apps)?

If you want to enter B2B apps with your product, you'll need to connect with very specific Microsoft stuff like domains and policies, and as business is conservative, it will not jump off this stack soon. It's kind of painful with any other tech stack, so it's a nice-to-have option.

Even if .net occupies the place for custom apps for just one company, it was a viable option before for companies using the Microsoft stack, and the good news is that now it's a viable option even if you don't want that Microsoft dependency.