After one last puff piece to blow up my blogging numbers, I will do penance by sticking to actual technical content for awhile.
So the other day I made a somewhat conscious decision to get more blog traffic and posted something I’d been dwelling on for a while: What I think is and is not better about .Net OSS these days. A couple follow up points from the feedback I’ve gotten:
Do most .Net developers care?
I honestly don’t know. I’d guess the answer is “no,” but I’m firmly convinced that there is no such thing as a “typical” .Net software shop anyway. I do know that when folks say that “most development shops do this,” it’s frequently something that I’ve never experienced.
Why does OSS even matter to .Net?
There’s a lot of smart folks in the .Net community that don’t work in Redmond, and OSS is a great way to capture and cultivate innovation in .Net from more people. Having a greater diversity of tools that take different approaches to solving technical problems is always nice.
Other communities have problems too!
Well, duh.
Someone pointed out that Javascript suffers from a lot of duplication too. The Node.js/NPM/Javascript world is churning fast, and some duplication of effort kind of has to be expected as a result.
Why don’t I leave .Net and go to <insert other platform here>?
.Net has been very good to me, and I probably get to do much more interesting work than the average developer on any platform. I’m one of the very few people who actually likes their job, and .Net happens to be a part of most of our systems.
Besides, I get to do enough Javascript development that I don’t particularly feel trapped into only working on .Net anyway.
Please stop using the word “Zealot”
Despite a comment or two to the contrary, I am certainly not a Richard Stallman-style OSS “zealot.” That’s one of the words that developers use very sloppily in technical arguments. I’m just gonna stick a link to my old post about why I hate the word “Zealot” or “Pragmatic” or “Dogma” tossed around in technical discussions.
About Microsoft, one last time
I don’t actually believe that Microsoft works directly against OSS efforts in .Net. I think the biggest issues simply arise from how utterly dominant of a mindshare that Microsoft has within the .Net community, and that’s the main thing that’s really different about .Net versus other communities.
Even with the lack of attention and publicity issues aside, I think that overall, the .Net community is probably more conservative about adopting new ideas or tools than other communities. I think that also explains why many software development concepts aren’t widely adopted by .Net developers until it’s been promoted, supported, or endorsed by Microsoft themselves.
But Microsoft themselves use Newtonsoft!
So? Everything does, and that’s why Newtonsoft binding conflicts were such an awful mess a couple years ago. I’d guess that any considerably sized .Net system has at least 3-4 privately merged copies of Newtonsoft.Json somewhere.
I’m just bitter
“You’re just bitter about FubuMVC” – I’m somewhat guilty on that score (human nature and all), but my main point was just to say that it’s highly unlikely you can succeed with an OSS tool that directly competes with an established MS offering. There were a whole raft of things I did wrong with fubu, but competing directly against ASP.Net MVC probably put our ceiling as a successful OSS project pretty low right out of the gate.
I’ll have to admit that it irritates me when I see folks all excited about something new in ASP.Net MVC Core that is very similar to something we had in FubuMVC years previously. A healthier way to look at it is that sometimes it has been nice to see our design ideas validated by similar designs in the real MS .Net tools.
I almost replied to your last post to defend Craig W… but he was the one who implied you were bitter and I didn’t want to piss you off (still don’t). Plus I tend to write long replies 🙂
I’ve been working in .NET for 15 years. When given the choice between a technology Microsoft has developed (or embraced) and an open source alternative, I consider all the options, but tend to give an MS option more weight on account of the fact that they’ve got a decent track record for keeping things that I choose care about alive and healthy. The trick is to be careful what you start to care about. Luckily, I skipped WF, Passport auth, Silverlight, and WCF. I left VB.NET, WebForms, and WinForms behind when the writing was on the wall. I went all-in on LINQ, Rx, and TypeScript and chose open source/Alt.NET alternatives when it just felt better. MassTransit, RabbitMQ, SQS over MSMQ, Akka.NET over Orleans, NancyFX once or twice, Angular over MVC, etc. But you win some, you lose some (I’m looking at you Angular 1.x).
Within the .NET bubble, it’s generally easier to learn a technology that MS produces and the risk of that knowledge becoming obsolete is lower. I’m more likely to commit to shorter learning curves from third parties (smaller libraries rather than giant frameworks). If I take on a new non-trivial library/framework, I’m looking at the # committers, commit frequency, release frequency, issue management, documentation quality, and how hard it’s going to be to train a junior level guy. At the end of the day, I’m trying to bet on winning horses.
I think the long-term plan for the CoreCLR / .NET Platform Standard stuff is going to bring a lot of new blood into this ecosystem and I think the OSS situation will improve as a result. Hang in there…
@scott732,
Everything you said is very understandable, but…
Your point of view here is all from the perspective of a consumer. If we could shift more .Net folks into being participants instead of just being passive users, I think those “# committers, commit frequency, release frequency, issue management, documentation quality” issues become much shallower problems.