Since the early 1980’s, Microsoft has developed software that assists developers in creating software applications for businesses and consumers. Initially it was for DOS applications, then the Windows SDK using the C and C++ programming languages, then Visual Basic, COM and for the past 15 years .NET using C# and VB.NET. It looks like .NET will stick around for a while. It is chock full of rich features that allow a developer to do just about anything you can think as part of creating a web, desktop or cloud application. And it does it with the programming language C#, which is in my opinion is the best that is currently available.
Up to this point, .NET has been firmly intertwined with Windows. It was difficult to run a .NET application on any other operating system. In addition, Microsoft has been the sole author of the .NET platform. If you wanted something fixed or added, you had to wait for them to make the change and release a new version. All of this is changing. Microsoft is close to releasing a new open source .NET platform call .NET Core 1.0. (The name was recently changed from .NET Core 5.0. I don’t particularly like either name. I think it should be something like .NET Open to emphasize that it’s open source and a break with the past.) This new version will run on Windows, Linux and the Mac and it will support Node.js. It still supports C#, which Microsoft has not made open source.
What this means is that there is now one code base for .NET Core on the GitHub open-source code repository that anyone can look at and that many developers outside Microsoft can contribute to. The .NET team will even share their design notes, specs and implementation specific documentation on GitHub. .NET Core 1.0 is a slimmed down version of previous versions of .NET. It does not contain things like a graphic library or Window Presentation Foundation (WPF), which is used to create a desktop Window Forms application. Thus, the .NET platform has split into two tracks, the open source .NET Core 1.0 and the existing feature rich (some would say bloated) .NET 4.6.
There is lot of speculation as to why Microsoft is taking .NET open source. I won’t go into that now, but no doubt it is a risk. Microsoft has been very successful and in general responsive in driving new features for .NET, ASP.NET and C# using an internal team as opposed to their Java competition which has used the open source model for years. If Microsoft truly embraces open source, that brings in new ideas but it could also slow them down by having to address a myriad set of less than intelligent ideas from the general developer community.
Should companies and developers move to .NET Core? Not yet. First of all, it is only for server-side development as it lacks tools for creating thick GUI applications. Second, even for server-side development it lack certain important tools, such as for database interaction. So it’s possible that Microsoft is pouring a lot of money into a vaporware platform that will never be that useful. Only time will tell.