> I really hope the platform can break out of the Microsoft silo and attract talent from other dev communities
The problem is often trust. Like so many Microsoft projects, to me the goal of .Net Core seems to be to get as much people as possible on to a proprietary language and/or get as many devs as possible onto developing stuff that doesn't hurt Microsoft. There's no guarantee that MS will not pull the plug at some point, and then soon after that .Net and .Net Core will start to diverge, and MS will lure in as much devs as possible with proprietary functionality that everybody wants but is only in .Net, not in Core. Or they'll just pull the plug because of whatever reason, like they did with Silverlight and Xamarin.
Don't get me wrong, I kinda like C#. But right now .Net Core feels like it's been developed by Microsoft, not like it's open source. I'm not entirely sure but is looks like the community developing .Net Core is made up almost exclusively of MS people.
> But right now .Net Core feels like it's been developed by Microsoft, not like it's open source
This is my biggest reason for losing enthusiasm for .Net Core. Despite all the noise about open sourcing the development on GitHub, it still feels like Microsoft treats .Net like a Microsoft platform, not an open platform. And I'm not talking about Windows vs Linux. More that the design direction for .Net seems to be largely set by internal Microsoft politics. For example, the recent ASP.NET Core running on .Net Core vs .Net Standard decision seems to be driven by how tightly tied the .Net Core runtime is to its underlying OS.
Compare to Java with the JCP (because Java is often compared to C#). The JCP is far from perfect (e.g. all the drama with modules). But, regardless of my views of Oracle, when I'm using Java I don't worry as much that I'm tying the long-term stability of my tech stack to the whims of a single company (even with the new JDK licensing snafu).
On a side note, I'm really confused when I see people talk about how great the new tooling is. Sure, the dotnet CLI tool does more out of the box. But it still can get hairy very fast because of all the design baggage it inherited and shoved under the covers with the fancy new SDK abstraction. And Microsoft keeps cramming more and more complexity into NuGet which makes it a pain to integrate with third-party tooling.
Lastly, for the record, this isn't an anti-Microsoft rant. I think they've done a lot of great work with .Net Core---the standard library updates, cross-platform runtime, Roslyn---and I still am very productive writing .Net for my day job. Like I said, I've just lost my enthusiasm.
If you listen to some of the DotNet Rocks podcasts around when they started open sourceing so many things, some of the higher ups like ScottGu and Scott Hanselman talk about this issue of trust. They said to the effect that they understood the lack of trust and intended to earn it. I really believe the old guard is gone and there is a core group there that is 100% dedicated to open source.
I looked for the stat to back this up, but I believe either AspCore or NetCore was one of the most active in terms of community pull requests for a while. I mean first, there is the sense that it _is_ open. If they do anything too evil, take it and fork it. You may say that is a huge undertaking, which leads to my second point:
In my day to day I don’t have time to contribute much to such a large project. Having the backing of a large company does present some issues, but it also lends some stability you need for a large project. This isn’t some mall pet project that takes off and fizzles. I feel the same way about Angular- I don’t like some of what they do- I prefer Vue- but can be confident it’s not _going away_ soon because Google backs it. In the case of .NET Core, though, even more so since it’s such a large part of core operations. So while even more community support would be nice, from a standpoint of trusting the product, it’s enough that it’s open source and the process is transparent even if dev hours are paid for by MS.
In the end, I think some distrust is valid, but some of it is kneejerk reaction to old MICROSOFT that is gone now.
Also why I don't see .NET Core going anywhere, it's controlled by the same old Microsoft who have a massive conflict of interest for directing everyone to use their preferred libraries and services. Unlike every other popular language which is typically developed with a transparent independent governance model whose direction benefit all libraries and services equally, instead of giving their own preferential treatment.
A good language is only part of what makes it appealing, having a large diverse open community is often more important as it ensures mature bindings are quickly available for new technologies and 3rd party API's, it influences whether the language will be used to create new technologies (instead of just playing catch up and making clones of what's in other languages), whether libraries are able to succeed on merit so it doesn't discourage the community to invest in developing a variety of competitive options and whether there will be an active community available to quickly answer questions and resolve issues.
.NET Core will never have the community of other popular languages, unless you're happy to use Azure and want to be locked into using Microsoft technologies there are much better platforms to risk your business on instead of committing to one whose future is controlled by self-serving interests.
Using .net core, or even framework on other cloud providers is easy enough. .NET Framework is tied to a Windows environment, but core isn't.
I don't get all this hate against Microsoft because they suggest or prefer things they worked on as solutions, without actually tieing you to them. Do you work on software for years and then tell everyone to use something else?
If it was actually tied to their other services then I could see the reason to avoid it, but if using .net core without windows, azure, or sql server then I dony see how you are actually tied to it
They still could have created a runtime where all libraries and services are able to compete and succeed on merit and basically how every other popular language evolves. If they want to give special first-class treatment to their libraries and services that's their prerogative, just don't expect for others to be investing in a biased runtime with conflicting interests where alternatives exist as 2nd class citizens limiting them to smaller niche communities and why it will never have the community of other popular languages.
Unless you want to be locked into a future centred around using Azure and Microsoft technologies, there are better, more open vendor-neutral languages with more diverse and mature libraries you could be building on.
I see that as a very negative viewpoint. For many, it's an easily embraced negativity because it's Microsoft.
Objectively, MS simply has done more work to create a comprehensive package. It would be a disservice to their customers to not increase integration between it all. For the longest time, this was Active Directory. Today it's Azure and .Net. Amazon doesn't control one of the most popular programming platforms to do tighter integration than already exists. Oracle does, but I've never really heard much about their cloud offering.
Microsoft has all the pieces, either it's appreciated or you can resent it. But they are no longer forcing you to use it, it's being sold on merit and I like what I see.
> to get as much people as possible on to a proprietary language
The C# compiler (Roslyn) is completely free and open source, as are a number of .NET components: CoreFX - Core foundational libraries, CoreCLR - runtime.
As well as PowerShell, VS Code, Typescript, ASP.NET Core, MVC, Blazor, F#, Z3 Theorem Prover, etc.
No. So far, only Microsoft has implemented the language spec and as long as no one else does it, no one can. Prove to me that "anyone can implement it" by pointing to someone who has done it, instead of relying on some theoretical "it could be done" fantasy.
The amount of effort, time, energy needed is just not something anybody else outside of MS is able or willing to put into implementing the language spec.
At least 3 serious, large scale long term non-Microsoft implementations.
Or something like https://github.com/SandipKumar05/C-sharp-Compiler and then you can argue that if it only implements a tiny part of the spec it doesn’t count and that proves it’s a Microsoft conspiracy?
Portable.NET -> Dot Gnu Project, has been decommissioned 11 years ago.
SharpDevelop -> IC#Code Team, project will be/has already been decommissioned, see [0].
Roslyn -> .NET Foundation, which was written by Microsoft, and is currently maintained (according to [1]) primarily by people working at Microsoft.
That last repo you posted is of course nice but like you said, it's tiny, doesn't even support arrays and is undocumented. Seems more like a assignment for a compiler building course. Like it though.
So, thanks for making me do some googling on this, but it just proved my point.
I think he proved you wrong, while there were many, the only example necessary is Mono. That lived alone, untouched by MS legal action or any other conspiracy theories about evil Microsoft, for many years. It was a great implementation, so great that Microsoft wanted it and those who built it received some good coin when they were brought onboard. Microsoft clearly has a track record of encouraging innovation on their (open) language spec.
Yes I am sure that it takes a lot of time, but anyone who is willing and able can do it there is no-one stopping anyone from doing it.
The spec is open, the source code for pretty much everything is now open and is sitting on github, it has been ported to MacOS, iOS and Linux and it runs on both x86 and ARM what more do you people want?
The problem is often trust. Like so many Microsoft projects, to me the goal of .Net Core seems to be to get as much people as possible on to a proprietary language and/or get as many devs as possible onto developing stuff that doesn't hurt Microsoft. There's no guarantee that MS will not pull the plug at some point, and then soon after that .Net and .Net Core will start to diverge, and MS will lure in as much devs as possible with proprietary functionality that everybody wants but is only in .Net, not in Core. Or they'll just pull the plug because of whatever reason, like they did with Silverlight and Xamarin.
Don't get me wrong, I kinda like C#. But right now .Net Core feels like it's been developed by Microsoft, not like it's open source. I'm not entirely sure but is looks like the community developing .Net Core is made up almost exclusively of MS people.