Is .net core about server only workloads, or also client?


#1

I was under the impression that open sourcing .net applied only to the server workloads of .net, which will be under the title of .NET Core. But after reading this blog post I am confused.

NET Core is a modular implementation that can be used in a wide variety of verticals, scaling from the data center to touch based devices

Did I just pick on the wrong sentence, or my original understanding was wrong?

Another unrelated question, Does the .net framework runs on top of .net core?


#2

The .NET Foundation is an organization, so I don’t think that question makes any sense.


#3

My mistake, I meant the full (client) .NET Framework


#4
  1. Development on .NET Core is currently focused on ASP.NET vNext but the goal is to have it work across devices for client as well.

  2. In theory yes the Full .NET Framework should run on the .NET Runtime core since they both implement the CLR spec. However this is only true on Windows, since the Full .NET Framework has many calls to internals of Windows. Do the reverse, .NET Core on .NET Full Runtime should work with zero issues. To be safe though, did I get it right @richlander?


#5

Thanks for answering!
Actually I have seen references to the difference in strategy between .NET Core and .NET Framework around, including in this post:

Microsoft is not planning to open source the client side .NET stack, which means certain pieces like the Windows Presentation Foundation (WPF) and Windows Forms won’t be going open source, Somasegar confirmed.

This doesn’t settle with your answer (which is much appreciated nonetheless!). I think there is a slight confusion around this topic and I would be happy if you or someone from the team could clarify that.

About the second answer - so if we are talking about Windows only, .NET Framework is build on top of .NET Core? Or .NET Framework has it’s own version of the runtime?


#6

The second post is slightly misleading. By client side stack she means libraries that are client side only, aka GUI frameworks. So that doesn’t stop .NET Core from running on my Windows for background none GUI code. Also it it’s not clear from there if that means just not open source existing ones or never build a GUI framework (though nothing is stopping frameworks like GTK# from supporting .NET Core).

Ok, there’s the Full .NET Framework that came first with it’s .NET Runtime. Now Microsoft is making .NET Core with it’s .NET Core Runtime. Both are built to the CLR standard. The difference is that Full was built with only Windows in mind while Core is being built with cross-platform in mind.


#7

Allow me to simplify the question:
Is .NET Framework (not .NET Core) open source? Is it going to be?
(To my understanding the answer to both questions is no)


#8

Ah, to answer that, most is actually open source (but they are not taking pull requests). See http://referencesource.microsoft.com/.


#9

Thanks, this discussion helps alot.
So if that’s considered open source, one could argue that MS had open sourced .NET in 2008 no?


#10

No problem.

You could, and personally I would. However a large portion of the open source word believes that to be open source you must take as well as give to be open source.


#11

Just checked with Mary Jo and my interpretation of what she meant was correct.


#12

OK. So rephrasing the answer:

  • .NET Framework’s source is available for reference only (and has been for a while now).
  • .NET core is fully open source with contribution.
  • Client side GUI frameworks like WPF and WinForms is part of .NET Framework and are not open sourced.

Did I get it right?


#13

Yes, That’s it! :smile:


#14

you need one more correction. The old .net framework is not open for reference only purposes, Many of its libraries are fully open sourced under MIT licence and a patent pledge. You can find the licence and libraries in this repo https://github.com/Microsoft/referencesource. But yes they would not take your pull requests their but that does not stop you to use them in cross platform scenarios Mono is taking many libraries and replacing their own with it. The only closed source libraries that i can think of are WPF, Winforms,Webforms,WWF, and may be some others not very important. WCF is not yet open sourced but soon they will make it.
Other than this correction your answer is almost correct.


#15

Yes my bad. I thought was true but couldn’t find the repo so didn’t want to say it without it, thanks!


#16

No, to be open source, you need to allow others to read, use and modify the code.

You can then talk about the “spirit of open source”, or things like that. But the fact is that the reference source code that MS published in 2008 wasn’t open source (MS called it shared source).

The reference source that’s available on GitHub now is open source, since it’s under the MIT license.


#17

I personally find the term just adds to the confusion so I simplify down to Open Source is the source is open to look at. Because let’s be honest, once I can see what you code does I’m going to learn from it, in ways that are perfectly legal too. So I can read it, I did use it to learn, and I used what I did to create similar code aka modified.

That may just be me of course


#18

Please don’t start more confusion. .NET Core is server side only and .NET full is server and client side. .NET full can’t run on .NET core as .NET core lacks elements .NET full relies on, like appdomains.


#19

Ah, did not know that. My bad then.


#20

This isn’t quite right. The class libraries from .NET Core is used for both ASP.NET 5 scenarios (server) and .NET Native scenarios (Windows Store client apps). Both ASP.NET 5 and .NET Native are .NET Core based platforms. .NET Core isn’t restricted to the server.


.NET Foundation Website | Blog | Projects | Code of Conduct