Microsoft's open source fork of the .NET platform, called .NET Core, will be modified for better compatibility with existing applications, says Program Manager Immo Landwerth in a recent post.
When the company embarked on its .NET Core effort, it took a minimalist approach, stripping out legacy code in order to get the best performance and smallest footprint for cross-platform server applications.
The consequence is that porting existing applications is hard, because so many of the existing .NET Framework APIs are missing.
"We’ve decided to drastically simplify the porting effort by unifying the core APIs with other .NET platforms, specifically the .NET Framework and Mono/Xamarinm" says Landwerth.
This will be achieved by providing "source and binary compatibility for applications that target the core Base Class Libaries (BCL) across all platforms. The Base Class Libraries are those that existed in mscorlib, System, System.Core, System.Data, and System.Xml and that are not tied to a particular application model and are not tied to a particular operating system implementation," Landwerth writes.
The move is controversial, since it means .NET Core will no longer be a clean break from the Windows-only .NET Framework, and the size of its system libraries will increase. Landwerth says that the overhead of larger libraries will be mitigated by a linking tool that "will be more precise and provide better savings than any manual process."
Another concern is that .NET Core, which is not yet at version 1.0, has had too many changes of direction in its short life. Between RC1 and RC2 (the RC supposedly stands for Release Candidate) Microsoft introduced new tooling called Dotnet CLI (Command Line Interface). The new announcement means that .NET Core 1.0, which is expected soon, will change substantially soon after its release.
"I no longer have any certainty with anything in regard to .NET Core, because the roadmap has been changing rapidly," complains Aaron Stannard, founder and CTO at .NET tools company Petabridge.
In fairness to Microsoft, a lot has happened since the first .NET Core announcement, including the acquisition of Xamarin and Mono (an earlier open-source port of the .NET Framework), and making sense of all these .NET pieces is challenging.®