Make the full .NET as a free, OSS and cross-platform ecosystem


This post is a call to Xamarin and Microsoft to continue pushing further the fantastic movement of making .NET as a free, OSS and cross-platform ecosystem, not only for the core stack but also for the client stack.

More than 10 years ago, Microsoft started to work on .NET and we are here, with a great ecosystem that could even be more awesome! While making the C# language ECMA and releasing the Rotor source was a promising move from Microsoft, we quickly felt that it was in fact not enough, as we were still prisoner from a mono-centric-platform. Mono (!) and then Xamarin went into business with lots of love for C# to allow to use this ecosystem on other platforms. I’m deeply thankful because without their dedicated work, the development experience would be today quite a boring landscape… I was deligted when I learned last week about all the goodness Microsoft is going to put in .NET…

Still, and I know that Miguel is looking at this forum, as we have been already discussing indirectly about this, I would love to see an era where we don’t have anymore barriers in the adoption of .NET on all platforms, from Linux, Android, iOS, All Windows and consoles. Having .NET being backed by companies like Microsoft and Xamarin is great, but I would love to see a full .NET, OSS, free that will reach more communities, like academics for example, to see people experimenting ideas on language designs, JIT, native compilation, GC, performance… etc. I would love to see a community porting .NET to new platforms. I would love to see my company be more confident with .NET and to fully embrace this full .NET OSS, as we would be able to tweak the last things in the runtime to make their fear disappear about pricing, portability or performance issues… etc. Their are a tremendous amount of things that we could build more efficiently on top of .NET. Obviously, we all share lots of love for this environment, so let’s share the maximum of it so that we can improve it and build new products with great added value on top of it. Their are several examples in the industry, like LLVM/Clang, that strongly encourage this move for .NET

What to open, OSS, for free? Everything that is part of the core/client/full .NET, past and in development. See what is doing ASP.vnext, with pushing directly their commits to github, this is so delightful to see Microsoft taking this direction!

Let’s OSS .NET Native, the current JIT and RyuJIT… As discussed with someone from the .NET team, don’t wait to port the old JIT to RyuJIT, or cleanup the code, and make it open-source after, just release the source as soon as possible (in the state where it can be built easily), so that we can watch all commits coming inside, pull-requests and gets the full traction of an enthusiastic community that could bring some powerful additions.

What about some of the “old” techs like WinForms, WPF, Silverlight? Release them as well, we don’t care if it won’t work out-of-the-box on Linux. If some people are still interested in using these techs in some unexpected way, or on other platforms, let them go, contribute and innovate the way they feel!

Let’s make this dream real!


Just putting something on GitHub as open source does not mean the community is going to pick it up. You may love it, hundreds of people may love the technology but there’s a difference between liking it and having the time/knowledge to work on it and improve it. Also open sourcing something isn’t so easy in a large company like Microsoft. They would have to track down EVERY SINGLE person who ever worked on code and get their ok. Unless they all gave the all good to open sourcing the project there would be nothing Microsoft could do.

And in all seriousness you are the first person I’ve ever heard make the argument that technology X is backed by giant corporation Y so we can’t rely on it. OSS may be great but it is not the answer to everything. You don’t use a hammer to put a screw in.


[quote=“Shmuelie, post:2, topic:457, full:true”]
Just putting something on GitHub as open source does not mean the community is going to pick it up. You may love it, hundreds of people may love the technology but there’s a difference between liking it and having the time/knowledge to work on it and improve it. Also open sourcing something isn’t so easy in a large company like Microsoft. They would have to track down EVERY SINGLE person who ever worked on code and get their ok. Unless they all gave the all good to open sourcing the project there would be nothing Microsoft could do.[/quote]
Being there myself and experiencing this at a modest level, I’m fine with this, if it brings more confidence in using a technology and help to develop great product on top of it, that’s already a win.

Hm, I said that this is great to see a language and its runtime backed by a company AND being open-sourced AND free. This is not just about OSS. My point is that a language and its core ecosystem, like .NET, should be free and OSS and not locked-in to a platform. If it is backed by some large companies, that’s even greater.


Not going to lie, I’m not sure how that connects to what I said. Could you try again?

Ok, I misunderstood you then. I agree that .NET should be and be not locked-in to a platform. OSS I don’t think it should be but I have no problem with it being.

I do question though why you want WinForms and WPF, two very platform locked-in technologies (Win32 and DirectX respectively). Do we need a cross platform UI framework? maybe, after all we’ve seen what Java did with this. If it’s need that badly currently you use a framework that was built from the ground up to be cross-platform, which I think works great (example can be found on Cross platform WPF).


As I understood your first post, you implied that not open-sourcing .NET would allow people to not contribute to it, and it will save us from managing potential contributions. That’s a weird arguments for a call to non-OSS. If this is not what you implied, never mind.

OSS is one of the axis. A community could choose to port .NET to a new platform where they have a strong interest for it, not having this possibility completely erase this kind of initiative and innovations. There are also lots of cases where you would like to trick the runtime (GC. JIT. NativeCode compilation) to meet some specific criterias of your application domain. It could be a different story to bring it back to the main runtime, because it would require more generlization work, but not having free and OSS, again, doesn’t allow this kind of scenarios (and I’m actually facing this everyday)

To be honest, even if I think these techs are a thing of a past (or I don’t like much their models), some people love them and I want a full traction for the .NET platform, not just for the thing I care.


Not what I meant at all. All good.

I suspect such cases are rare, more often than not it being a misunderstanding of the Runtime/GC/JIT/etc, though I’m sure you’ve done your homework and truly need it. For those cases you have the ability to make your own since the standard is open. If you don’t want to start from scratch you can start with Mono’s. When I have some free time there’s a platform I want to port .NET to and I plan to start with Mono’s as the core. There’s no reason we need Microsoft’s in particular. And .NET Native is really just AOT which Mono does so same case there.


Unfortunately, some of the core parts of Mono are LGPL and It doesn’t allow you this kind of scenarios. You can’t ship your own Mono on Android, iOS, or whatever new platform you would like (moreover when AOT is required), unless you comply to LGPL, and if you know this license, you understand the restrictions. In other words, Mono is OSS, but it is not free if you want to use it on some platforms unless you comply to LGPL.


I admit I had not known of the LGPL until now and had to look it up. To my understanding the only real limitation is that you must provide the source code of the modifications you make. Not seeing how that stops you from doing what I described.


There are two side effects of the LGPL license:

  • The LGPL license requires that if a person wants to relink with a (newer/different) version of the LGPL portion of the software that your application uses, he must be able to do it. It means that in the case of AOT (which is equivalent to static linking and mandatory for some platforms like iOS), you need to provide a way for a lambda user of your application to fully rebuild/relink your application (which is almost impossible for an iOS application, and even for non AOT platforms like Android, it would be quite a laborious way of distributing an application).
  • Also, if you port to a platform where the redistribution of the runtime/SDK is restricted (like PS4), you would not be able to release the modification of the LPGL sourcecode.

I can see that you are a MonoGame Evangelist: Why do you think that we need to have a Xamarin License in order to develop and ship a game on iOS?

So to reiterate my initial concerns, today, it is not free to develop and distribute a .NET application to some specifics platforms.


Having libraries like Windows Forms as OSS would be great, especially considering the fact that there’s no team within MS which adds new features to it (it’s in QFE mode afaik) or fixes long-standing bugs (there are still several bugs I filed on Connect 2+ years ago on in Windows Forms which they refuse to fix as there’s simply no-one interested in fixing bugs in winforms: progress is elsewhere (WPF, XAML + js)).

If the community then could fix the issues a newer version could then be pushed to nuget so people could use that instead.

It’s however essential that Microsoft plays ball as well with this: simply having a repo on github doesn’t mean anything if there’s no real commitment to merge PRs, to ship new binaries regularly to nuget/elsewhere. I’m not sure whether they’re really convinced this is the case. For new stuff, sure they’re working on it themselves so there are people active in the repository, but source which is effectively ‘EOL’, not so sure.


This made absolutely no sense, it’s not like it was open source from the start and requires anything from commiters, it’s an internal Microsoft project, Microsoft owns the IP to the code, not the employees that worked on it. OF COURSE they wouldn’t need to track everyone who worked on it and get them to sign anything, it’s already theirs, when you work on project as part of a company, except a few special cases, you’re producing work for your employeer not yourself.

Basically what you said makes as much sense as saying “i picked a gift for the wrong person, but i can’t give it to the person i wanted to give it to because i’d have to ask the shop that sold it to me and everyone who was active in the delivery process to agree”. Microsoft doesn’t need to “ask” anyone, they can release it as they wish (assuming they own all IP and didn’t have a lot of .net outsourced or based on licensed patents).


I can’t agree more, even WPF future doesn’t look so bright when you read the WPF Roadmap published 4 days ago. It doesn’t mean there is no “community”, there is huge ones for sure ( me included ). But in a sense, it depends of Microsoft plans, if they want Winform & WPF to get replaced by some other newest tech ( a WinRT for Desktop ? ), is it worth the effort ?

Note : The more I writing, the more I’m thinking that even Ms doesn’t know what to do with Desktop application…But this is an other topic :smile:


Ok now I get what you meant. I admit I did not see that. And while I am a MonoGame Evangelist, I deal with the code side so I fully admit legal things is not an area that I know as well.

In a nut shell that’s one of my augments why Microsoft may not. The may not want to dedicate resources to managing OSS versions of the frameworks.

You answered yourself, we cannot assume that Microsoft owns the IP.

Merge Mono and .Net Efforts to avoid Duplication of Work

We want this same future, that .NET is a vibrant open source and commercial ecosystem. We’re both investing in that ourselves and working closely with Xamarin and Mono groups to make that happen. We would like >50% of the commits on the dotnet repos to come from the community.

At the moment, we’re focussed on the ASP.NET 5 scenario. This will include RyuJIT and the rest of the runtime. Later on, we’ll look at enabling other scenarios. Right now, we’re needing to focus as much as possible in order to complete sharing the rest of .NET Core and making it work on Linux and Mac. Landing that will be an amazing contribution on its own.

It takes a lot of effort to share code that both builds and has meaningful tests. Both our code and tests assume a Microsoft internal infrastructure. Removing those dependencies is work, often a lot of work. We don’t want to take the time out to do that for anything other than the ASP.NET 5 workload that we’ve committed to.

That all said, I appreciate the interest in a broader set of .NET technologies, including the client workloads. We’re hearing that and understand that it is valuable to many people.



Since this is a forum dedicated to discussing .Net open source efforts and collaboration/coordinated efforts between Microsoft and the community, please post the GitHub link of your product’s source code.

If your product is not open source and free for everyone to use, please stop propagandizing it here. This is not the right place for your marketing of proprietary products.


hes not trying to sell shoes or somthing, its sound interesting,the are tons of xamarin post all over,not sure if what he has is good or not, but where do you get off making the rules anyway,maybe you the one that should refrain from making useless post, or are you a mighty softie?


looks prettyq nice ivo, but the fact is WPF is not dead and i would run circles around everything your doing with it,so don’t be so cocky


xoofx, do you have a mouse in your pocket? who are you to proclaim what we need? you have a lot of opinion that show your lack of understanding, mono is tiny tiny fraction of .net, with some rabid fanz, its real not that big a deal,wpf app make mono lok rather silly, the fear it creates in some of you says alot,please don’t make me compete with that is what im hearing


I am not sure I can really agree with the idea of putting the whole of .NET out as OSS. While I would certainly like having a pretty complete end-user API that I can build cross platform compatible applications from an app-developer point of view I think there are other constraints that people tend not to think of when considering such a move.

Two of them that immediately come to mind are I think that perhaps not all components of .NET would be suitable to run on other platforms, which would likely mean that the technology behind those API’s would need to be re-created which would require considerable effort for perhaps not so much gain (but never under-estimate the will of OSS I guess).

Primarily though, it is when I put my enterprise thinking-cap on that I have the most concern. When you have 300+ developers and an expense of over a million dollars per week, having even a small hiccup such as finding and resolving a mission critical defect can become an expensive proposition very quickly. It is very important to have a stable platform to work on and a very very clear long-term roadmap of upcoming changes.

My view is that there needs to be an enterprise version of the .Net platform which is what runs on windows natively and is in effect continued to be developed and maintained by Microsoft internally, and there also needs to be an OSS compatible sub-set that offers the flexibility and direction required by the broader community. How these versions are kept in sync, I guess is another matter.


One big reason for Opening up as much of .NET and its runtime as possible is to slam all those haters on the lang who’s only reason for not using it or hating on it is it came from MS and isn’t portable or open source. Which are good reasons other then the MS one of course… and Mono is not the answer because of its licensing issues which .NET Core does not have.

The more people convinced there is no reason not to use .NET and C# ect, the more are likely to pick it up and develop useful tools for everyone making the ecosystem that much better and its also good for MS as a company now that many more will in tern make Visual Studios and Windows for at least the majority of there development the #1 choice. Win Win for everyone as I see it.

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