Live data from Hacker News

The Weakness of the .NET OSS Ecosystem

aaronstannard.com

31–40 of 215 posts

Re: The Weakness of the .NET OSS Ecosystem

#31
post #22

A good chunk of that is the "invented here syndrome". With EF, WPF, ASP MVC, MEF, etc, plus annual MSBuild conferences, .Net has far more internally-developed ecosystem than Java. Which tends to promote the idea that the MS way is the right way, and if I need something else I must be doing something wrong (or I need to wait till next year). Perhaps MS should just kill off all these frameworks and force the community…

Nearly all of Microsoft's "invented here syndrome" is actually re-invented (often just different enough to be annoying).

Things are changing though lately, which is a good thing.

Re: The Weakness of the .NET OSS Ecosystem

#33
Edit: Perhaps this comment is gratuitously negative. Nonetheless I'm not going to delete it because all these things contribute to why people have avoided MS/Windows and hence .NET. (Mono's great and has worked well for me in some scenarios, but, say, with ASP.NET/EF it hasn't been totally stable like the CLR.) I've also invested a ton of time into using MS and promoting them (MVP at one point), so I think I'm rather fair on my criticism.

Don't blame Microsoft? Ha, OK. MS is responsible for gimping the .net environment to Windows with no technical reason. I'm a bit of an MS fanboy but I'll admit deploying on Windows is a pain in the ass. Shit, it's just now they're getting around to "Windows Server Nano'. OpenVZ's been around for a long time, and MS just steadfastly ignored containers as long as they could. Or DRBD - 2015, and MS ships nothing like this. Everything is commercial 3rd party stuff.

Or look at SSH support. It's just now they decided to add that, despite wanting to do it internally for a while. WinRM is annoying but that didn't stop them from leaving it as the only option. And before that? Deployment was what, exposing smb shares?

Or look at IIS. It's 2015, IIS has no real reverse proxy (ARR is a terrible joke), and nginx only runs with limitations on Windows. Why is that? And FFS, they're making you upgrade the OS to have HTTP2, and this whole time, you've not been able to use SPDY. I've seen .net/win shops add Linux just for nginx/SPDY, then realize the grass is greener... Not to mention every other thing, like Elasticsearch - Linux is the OS of choice for deployment, so why bother dealing with it on Windows?

.NET was designed from the beginning to be cross platform and cross language. The first book I read on targeting the CLR was for Component Pascal! The CLR design is far better than the JVM. And around that time, MS had a version of .net running on BSD. They chose to ignore developers and thus everyone flocked to the JVM. This is entirely MS's fault. They could have destroyed Java (or at least started an arms race). The JVM was built solely for Java the language, with no thought for running other languages the CLR was designed explicitly with this in mind, yet almost no langs target the CLR. Explain that without blaming MS.

Even now, they have F#, which is essentially better than C# in every way. How do they promote it? By fucking up features in Visual Studio so things don't quite work. By downplaying it as a language for "scientific" and "financial" work. This is the team that brought generics to .net; without them they'd probably have Java's lameass erasure model. And it looks like MS just grudgingly throws a bit of F# support out as a bone. They don't get it. Instead MS focuses on their line-of-business "Mort" developers. (The kind that can pump out useless, scammy crap to get the Windows Store numbers up, or contribute to more licenses.) They're focused on ops that suit companies that run AD and Exchange. Excellent solutions for those companies; no real focus on others. I'm sure it's been a great win for immediate licenses, but they shouldn't be surprised they lost the war. (And note that via BizSpark, they're giving this stuff away and still can't make it stick.)

And it's not their fault people don't rush to implement code that will possibly only work on Windows? Ha!

(MS has finally shifted to being open towards Linux because they wanna sell overpriced VMs on Azure. And by overpriced, I mean 2x or more of GCE's cost, with none of the perf benefits. And note this was not MS's first choice. They wanted Azure to be a lock-in PaaS, and only when they realised customers didn't want to deal with that mess did they go after IaaS and start "embracing" open source and Linux.)

I apologize for the rant, but I do blame MS for doing all they can to drive developers and ops away from Windows, .Net's only officially supported platform, and thus away from .Net.

Re: The Weakness of the .NET OSS Ecosystem

#34
post #5

The level intellectual laziness is immense. Most of the developers, me included look at Microsoft for guidance than embracing hard problems and solving it for ourselves. This does not mean .net is filled with incompetent programmers but it is full of "unless you pay" programmers.

> ...than embracing hard problems and solving it for ourselves...

Can you clarify: you mean implementing custom solutions at employer's cost or solving employer's tech problems in your own time?

Re: The Weakness of the .NET OSS Ecosystem

#36
post #4

Alternate title: "It's hard to build a church on top of a native american burial ground."

I liked this analogy. Why is it getting downvoted? It's totally true. Too much cognitive dissonance between open-source on a for-profit foundation.

I interpreted it more along the lines of the impact of Microsoft's underhanded tactics over the years.

Re: The Weakness of the .NET OSS Ecosystem

#37

I asked on Twitter long ago for any prominent examples of open source software that originated on Windows and transitioned to other platforms. I think after some discussion we may have come up with an example. Maybe. I certainly can't recall what it was.

http://MonoGame.net

Re: The Weakness of the .NET OSS Ecosystem

#38
post #22

A good chunk of that is the "invented here syndrome". With EF, WPF, ASP MVC, MEF, etc, plus annual MSBuild conferences, .Net has far more internally-developed ecosystem than Java. Which tends to promote the idea that the MS way is the right way, and if I need something else I must be doing something wrong (or I need to wait till next year). Perhaps MS should just kill off all these frameworks and force the community…

> Which tends to promote the idea that the MS way is the right way, and if I need something else I must be doing something wrong

This is not exactly true. MS recommends other technologies when they fit. Like Redis for caching on azure.

https://azure.microsoft.com/en-us/documentation/articles/cac...

Re: The Weakness of the .NET OSS Ecosystem

#39
Here is some blatant speculation about the problem with .NET and OSS.

The the larger problem is one of self-selection. C# devs are not alone in not contributing to opens source software. The vast majority of devs don't make meaningful contributions to OSS. It's just the the few people who get really stoked about open source software and love making a positive contribution to world through software have been turned off by Microsoft's behavior for the last 10-15 years. So they never entered the .NET/C# world to begin with.

The second is incentives. Java shops are much more comfortable with open source then .NET shops. Open source is still terrifying to many enterprise customers, and a lot of .NET shops. And the incentives besides making a positive contribution to the world [0] for contributing to OSS are it looks good on your resume, maybe you could consult on it, and getting to be paid to work on your own OSS project. But with most customers not using OSS the developers don't get a lot of personal benefits from it.

The third is how bug fixing your favorite OSS acts like a gateway drugs. In the past .NET devs wouldn't have very much experience with any OSS. If they found a bug in their favorite framework they would report it. End of story. Everything they used was closed source MS stack. But if they were working with Java(and probably working on an OSS library) they could dive into that library and make the fix themselves. Now that all of the core libraries for MS are being open sourced many more devs will start to get familiar with what it's like to be able to make a change to library or framework you use on a daily basis. And hopefully some will catch the OSS bug.

I think this will change. As Microsoft pushes more OSS, enterprise customers will see it as less scary. Devs who are into OSS might start considering .Net as an option. And finally devs will start to get a taste of what it's like to get to fix a bug on a framework or library that 1000's of people use.

[0] -see point 1 why people who wanna make a positive contribution to world through open source software shy away from being .net developers

Re: The Weakness of the .NET OSS Ecosystem

#40
post #17

Yes, the author is correct. There is a distinct lack of OSS in .NET. I've been trying to find a project to contribute to among the graveyard on Github. However, I think the author falls flat explaining the why. I have a few thory on this. For so long C# has been a walled garden of closed source software. This closed source software, for the most part, works damn well. Why reinvent a square wheel when there is a shop…

The tools and libraries from Microsoft are so solid that frankly you don't need an entire class of open source projects.

I don't need to "contribute" and "socialize" with some Python craziness named after a dolphin (though I did!) because Amazon provides a real .NET SDK for talking to AWS. I don't need to wrestle with three different constantly-patched Ruby image libraries because .NET has been able to load and save six kinds of bitmaps via everything from C# to F# to Excel macros since the 90s.

The community around node.js in many ways is an attempt to re-write .NET from the ground up. And they're doing an amazing job. But so am I, when I can write three lines of code in a version of F# that shipped six years ago and issue SQL-like data gathering queries over everything from Wikipedia to the Department of Labor.

That said -- Microsoft's idiotic forges and weirdo repositories were total incompetent nonsense. And the stupidity with their C compilers -- from strategy to implementation -- presented a brick wall to anything resembling clean cross-platform development, which DAMMIT, is a must.

There is a lot more open-source .NET code out there than you'd think. But it tends to be very narrow and very vertical (and often, very high quality) because the core libraries are so broad and so great.

Post reply on HN