Back in November I started trying to mess around with .NET again, with the twist of I refused to become Windows bound to do it. After some time experimenting holidays got in the way, then work got in the way, and as usual life gets in the way of hobbies. Today I needed to work out some standard C# code samples for interacting with REST services I had written in Java. I could have spent two hours installing Visual Studio in the virgin Windows 10 VM on my laptop, or I could fire up a new Linux VM and give cross platform .NET another try.
When I tried this back in the second half of November .NET Core 1.1 had just been released. The confusion in documentation and samples from .NET Core 1.0 to 1.1 was less than trivial, especially with the change in project format. Several months later everything has quieted down, and code samples and search engines direct to actually useful links. I wanted to be as modern as possible so I wasn’t going to install Mono on the new VM. This was going to be all .NET Core and VSCode.
As with any new platform there is the usual fumbling around, which is the fault of the user more than the platform itself. Certainly documentation can make that process worse, but in the modern era of StackOverflow, MSDN, and search engines I could muddle my way through. As I started doing things I found myself saying, “Microsoft definitely has the 80% solution down.” With each passing minute of coding though the rough edges were slowly hewed. The package management that I (perhaps unfairly) remember as being a disaster seemed to “just work”. It worked as well as Maven’s does anyway. The missing features I’m used to in an IDE I originally rationalized as being beyond the stretching range of an uber-editor like VSCode actually turned out to be just a few extensions away.
At this point I have my code samples done, showing interacting with my REST services. I then went some steps further and got a microservice written in NancyFx, just because that’s the other major use case I generally work with on a regular basis.
It is still clear that the non-Windows platforms are still not first class citizens. There is no ability to make desktop UI apps, nor will there probably ever be. While they hit 80-90% of the use cases for the .NET Core APIs, it still seems there are some missing. Certain libraries fill in some of those cracks well, perhaps even better than the Microsoft “proper” libraries, from the examples I was looking at.
At this point I’m really excited to be starting to do .NET development under Linux using VSCode and .NET Core. As I start switching over in my hobby projects, and hopefully/maybe on more work ones too, it’s even more abundantly clear how crusted over and stuck Java has become. Hopefully with the surge of true open source and cross platform focus the .NET platform can enjoy the renaissance it deserves.