Hacker News new | past | comments | ask | show | jobs | submit login

.NET is the most open, non-trivial ecosystem I have ever participated in.

I experienced 2 different problems with .NET (back in 2.x/3.x days), and was able to have interaction with the actual MS developers on their Github issue page without any sort of bullshit overhead process.

Within days, I saw traction on my comments and within months I saw PRs that ultimately resolved the issue I presented. The following year, I was deploying framework code to my customers' instances which incorporated fixes to my concerns.

Perhaps I am unaware of just how much better it is with the other ecosystems, but for me this is enough interaction with my framework vendor.

Are we upset that we have to pay money for the privilege of using other peoples' intellectual property? Or are we asserting that Microsoft is stealing other peoples' IP? I am trying to find the actual crime here.




You are unaware of how much better it is with the other ecosystems. Probably all of them except the ones controlled by Apple, Oracle and IBM.

You want to know what's better than having actual MS developers interact with your issue on GH? Being able to submit a MR yourself and actually have that MR be merged in within days of it being good to go.

That's not just a dream, that's the standard way of operating for most large open source ecosystems. If you solve a known issue with a clear well considered merge request, and you've gone through all the prescribed steps your MR will get merged.

From personal experience I've landed MR's in the Ruby interpreter, in the Rust compiler and in the Rails framework. All as a complete outsider with no prior introductions to the team. Just be polite, follow the rules, solve something that's real with no architectural impact and it'll get merged (just mentioning these because they're ecosystems, I've had MR's merged in for dozens of smaller projects in the same manner).


You can do this in the .NET ecosystem too, they accept pull requests from the community regularly. I have a few merged PRs in Roslyn, one in particular I made because I knew it didn't affect very many developers and would have trouble getting prioritized.

Also personally the ideal situation for me is for someone who is getting paid to fix the issue to go fix it without me having to get my hands dirty.


I ran open-source teams for Microsoft for a number of years, all through GitHub. We had contribution policies, encouraged PRs, and would bend-over-backwards for external developers contributing code.

It's not an exaggeration, but I don't know how it could be better done.


.NET PRs sit unmerged for years if they're not a priority for MSFT. I'm glad it works well sometimes and that MSFT seems to care about .NET on Linux, but it's not that open.


Point out a major language that doesn't have a graveyard of PR's with similar stories.


The important distinction is that the PR graveyard of other projects isn't determined by MSFT's corporate priorities.


Of course Microsoft only include functionality they want. Just like any other platform only include what they want. It is entirely their prerogative. Just because they don't include anything and everything other people want, it does not make them less open source.

We are entirely free to fork the project, embed the change and compile our own binaries. You don't have to strongarm a change into upstream for that.


Every major open source project is in no small way driven by the interests of corporate users, from which a non-trivial number of PR's and contributions come from. This is true from Linux and Postgres to Rust and Java.


Any non-trivial OSS project has corporate sponsors on the steering committee and feature set/fixes are mostly driven by these corporate sponsors. So in the end it's all same.


That other languages may or may not be as bad as .NET does not make .NET any more or less bad.


Bonus points if you're either not asked to transfer your copyright, or asked to transfer it to a non-profit foundation.

Personally, I'm ok with doing the work myself if I didn't pay for the product. It gives me a feeling we're all working together on a better software ecosystem, because Turing knows we need it to be better sometimes.

edit: sorry for moving the goal posts, it's definitely cool that you got MR's into Roslyn, it's an awesome project.


I work on an open-source project for Microsoft, and I review and merge community PRs all the time. Nobody pays for the product I work on (or for C# or TypeScript, for that matter).

The Contributor License Agreement used on all MSFT open source projects doesn't ask you to transfer your copyright, though it does require submitters to agree to grant a permissive copyright and patent license. IANAL, but the copyright and patent clauses in Microsoft's CLA[0] do not look substantially different from the equivalent clauses in the Apache 2.0 license[1].

[0]: https://opensource.microsoft.com/pdf/microsoft-contribution-...

[1]: https://github.com/rust-lang/rust/blob/master/LICENSE-APACHE...


It's a stretch to say that nobody pays for C#. A commercial Visual Studio license sure isn't free, and depending on what you're making you're at a big disadvantage without one.


Right, you're not paying for C# you're paying for an IDE. You don't need VS to use C#. Especially now with Roslyn a the c# language server a lot of other IDEs can do a lot of the same things VS can do.


And if you're working on open source/non-commercially, the free community edition is also a good option.


Indie devs and small businesses (<5 installs) can use the community edition for commercial purposes, too. I use VS Code & the C# extension most of the time, and that's free as in beer for use by anybody.


The same way that js isn't free because you need webstorm or an aws account to deploy a node app? That argument is a stretch too.


I had the same experience, submitted a PR to Roslyn, was asked to add some additional unit tests, and was merged within days.


I have a problem with that. You have essentially done work for multi-billion corporation without remuneration. That would probably violate many laws like minimum wage requirement and volunteering at for profit corporation (minimum wage must be paid). I wonder why this is not pursued.


Nearly everything that is open-source depends on people doing work for free that is used by other people who use it for profit. Maybe OP is making profit through the software they're writing using C#. Should Microsoft charge them for C# usage? Microsoft is the ones paying for development costs after all.

The purpose of open-source software is to be able to fix problems for your use case and continue using the improved software. OP could have just chosen not to upstream their changes (I'm assuming you'd be okay with that since Microsoft doesn't get their hand on the fix) but then they wouldn't be able to easily update their compiler.

I guess the only real option here is to use a community-developed language with no for-profit company behind it. Then write all the libraries that Microsoft wrote for C# and published for _free_. Hmm.

I wonder what percentage of popular languages / libraries out there have the level of reliability & support that C# and other open-source software with big corps behind them has.


But this way you are promoting inequality. Being able to commit substantial amount of time to volunteer without remuneration is a domain of privileged people, usually from wealthy white background. They can they use their contributions as highlights in their CVs and for instance get better jobs than people who were not in a position to give their time for free. Hencewhy in many countries, like mine, things like internships have to be paid. If they weren't then positions were mostly filled with youth from wealthy families.

If Microsoft was honest about equality and open source, they would have donated the whole platform to a non-profit foundation and removed its name from it.


> "You want to know what's better than having actual MS developers interact with your issue on GH? Being able to submit a MR yourself and actually have that MR be merged in within days of it being good to go."

.NET isn't your average hobby project - it's used everywhere. It's imperative that changes go through the proper due process here. It takes time to prepare design documents and review them, discuss the changes and different alternatives, review the code, implement the changes and test them properly.

If that's somehow a problem to you, I think your expectations need to be readjusted. This is not the kind of project that should hastily accept code.


I'd be very surprised if Microsoft's development process is more thorough than that of Rust or even Rails. These are not your average hobby projects, it is imperative that changes go through the proper due process there. It takes time to prepare design documents and review them, discuss the changes and different alternatives, review the code, implement the changes, test them properly, and you can participate in all those steps.


Having submitted a somewhat trivial PR (System.HashCode), they really put you through the ringer. It took almost 3 weeks of constant (and valuable) feedback for the PR to move into a state that they liked.

All of this about dotnet not accepting PRs is unadulterated "Micro$uck FUD". The other critiques are valid, but not this one, not by a mile, it is complete bullshit.


It's not used everywhere, or not to a significant degree different to how Ruby is, which was in the example of the post you were replying to. And this isn't about haste, it's about openness. Code that is well written and passes tests can be reviewed and merged in hours, let alone days, without being considered hastily included.


Ruby and Rust and Rails aren't exactly hobby projects either. Mission critical software exists that uses those as well. Ultimately it's on the development and deployment teams to pin a version of the runtime for actual consistency in environment.


This is an absurd straw-man. Nowhere did the parent comment say anything of the kind you're arguing against. In fact, they highlighted that you should the follow the procedures and rules. This is silly.


The parent said within a few days. That might not be realistic with the processes in place and I think that's all they were getting at.


The guy's got code into Ruby, rustc, and Rails. I'm pretty sure he knows what it takes to get things into master at a widely used project.


Just so no one's deterred, it's actually not very difficult to do this. The rustc and ruby patches I submitted as an exercise. I went to the issue tracker, sorted by oldest first, and then picked the first issue that had little/no discussion on it. I purposefully avoided picking an issue with significant architectural impact or political context this way.

So there's also not much designing and reviewing needed. The merge requests were assigned to very senior reviewers each time. The automated test suites made sure I didn't waste much of anyone's time with trivial errors. Of course the requirement is that you're actually at least proficient with the languages (C for Ruby and Rust for rustc) but beyond that I think anyone can do it with a couple of sunday afternoons spent diligently digging through the codebase.


> Being able to submit a MR yourself and actually have that MR be merged in within days of it being good to go.

And? The vast majority of the .NET ecosystem operates this way, and discounting that because MS still has proprietary closed-source projects is disingenuous.


You mean the ones where the JIT and AOT compilers, GC algorithms, GUI frameworks, and the IDE toolings are poor examples of the ones controlled by Google (forgot this one), Apple, Oracle and IBM?


> .NET is the most open

People aren't using "open" in this thread as a euphemism for "nice" or "open to help." There are a lot of nice, friendly, helpful people who work on very proprietary, very closed, intentionally non-interoperable software. It's alright for you to like them personally and to think their products are great, but maybe it's not alright for them to have critical software in Linux distributions, or for people to base their own businesses on that software without being mindful that when you do that they become a defacto partner.


We are not upset. MS can do as they wish.

We are warning people to not consider this platform the same way they consider fully free ones, despite the obvious wish of MS that they do so.

This platform comes with invisible strings attached, some of them will likely turn into chains in the future.

And it's MS new marketting strat to say they are open now for everything, so it's only fair we point out that the player matters. You are not dealing with the LSF or the PSF, but with MS.


> This platform comes with invisible strings attached, some of them will likely turn into chains in the future.

Can you go into more detail about this?


MS has a long history of taking something (a tech, a concept, etc), playing fair for years to attrack people, then add more and more little details that in the end, lock you in into their ecosystem.

In this particular instance, MS has been pushing the "dev env in the cloud" commercial strategy for some times, using the openess of the VSCode ecosystem as on of the bait.

Don't get me wrong, I think VScode is a good product, and I can see the value of a dev env in the cloud that matches your local setup.

But given MS track record, I expect this to be likely a way to take control of your dev env: once it mostly resides on their server, you are locked in.

Parts of VSCode being not free are one of those little details I talked about. They hint at the direction MS is likely going to follow, as it used to do in the past.


Thanks


Everyone who understands .NET a bit praises the engineering but has hard times with strategic management calls.

Tim Heuer the guy who wrote the GitHub issue is a high ranking guy and was explicit protected by Miguel de Icaza as not being the evil one. ... Means the call was made so high up in the ranks that this is not about engineering, daily work, etc anymore. This is a decision made by people who are counting beans.


Being devils advocate, there are other languages and ecosystems significantly more open than .NET.

Microsoft has a stranglehold not just on the language, but the runtime, build tools, and even the most popular frameworks to do anything useful. And they have shown multiple times how management decisions from various business units at Microsoft can be applied unilaterally to their ecosystem.

I'm also confused by the "non-trivial ecosystem" goal posts here.


I'm pretty confused how anyone can be around for the "dotnet watch" debacle and come out the other side thinking "this is the most open project I've ever participated in"


Haha. I would guess that >95% of NET developers have no idea what you are even talking about.

This really seems like the recurring bubble where posters on HN somehow things that a large majority of the industry is hitting F5 on HN while they are instead busy doing actual work.


You're probably right. I'm not a developer, just a tech nerd, so it's a mistake to assume others would care about minutia.

Regardless, I think it is still fair to say that if any other language platform was withholding features like a debugger, nobody would consider those platforms particularly open.


I missed this "debacle" as well, the HN story on it in October only had 59 comments, of which about half a dozen were actually about the topic itself. Not much outrage here apparently.

> ... if any other language platform was withholding features like a debugger, ...

Except "withholding a debugger" is not the same as "a complex new feature that builds on top of the existing debugger will only be released on one platform to begin with" is it? Features in beta releases aren't guaranteed to in the final release, even if some users really liked it.

Visual Studio already had a lot of code relating to editing program state when the debugger is paused after hitting a breakpoint. Seems plausible that Hot Reload in VS would be able to leverage some of this code to reduce the amount of work required to build, test and deliver the feature on that platform. It would also mean getting feedback and issues more relevant to the core of the feature, because the integration and UX is an evolution of code that's been there pretty much since VS was first released.


being open is not about not paying but using it however you like, not constrained to VisualGarbage XYZ or Windows 15-xtra ultra edition


It clearly isn't about that; .Net Framework and OmniSharp are MIT Licensed so you can use it however you like. From the Github issue linked in the article: "Once the “LSP Tools Host” is complete, this will become the default experience for the C# for VS Code extension. Existing users will be able to choose between the open-source OmniSharp powered system that exists today, or the new “'LSP Tools Host” which will provide access to additional experiences."

That's freedom in action. Microsoft has a fork of two open projects which they are working on however they like. If you don't want to use their work, you can fork and develop .Net and VSCodium and OmniSharp however you like. Now look at the the top GitHub comment: "once LSP Tools Host gets full attention, OmniSharp will slowly die out (especially if the OmniSharp team is working on LSP Tools Host). Which is of course the last step, extinguish."

Which says: "I don't want to develop the thing I want to use, and if Microsoft doesn't develop it for me and give it to me for free, this is equivalent to Microsoft extinguishing it".

MIT License grants "rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software", and not "you can have what other people develop on this" or "the developers of this will never make non-free software in future". https://mit-license.org/


Say what you want, but Visual Studio 2022 is one of the best IDE I've used, way better than Eclipse. And You're not stuck on it either, JetBrains Rider is a 100% viable alternative and often preferred by many .NET developers.

Windows is also not a requirement unless you are using old Windows-specific frameworks like WPF. ASP.NET, EFCore, IdentityServer, and everything else you need to build a web app works equally on Windows, Linux, and macOS.


>Visual Studio 2022 is one of the best IDE I've used

I consider being cross platform a valuable feature of an IDE. Do you not?

>Windows is also not a requirement unless you are using old Windows-specific frameworks like WPF.

My day job includes a lot of this. Hell even winforms is still very much alive. And even if the likes of WPF or winui was old aren't they still the graphical subsystem for desktop being pushed? I suppose then there's Maui being worked on but I believe they decided to fuck over MauiKit with that one's naming.


While I like Visual Studio, comparing to Eclipse is a little unfair. Exactly like DotNet today, you can use any IDE you like, InteliJ will compare extremely favorably to Visual Studio if we want to pick a good Java IDE to compare.


I compared to Eclipse because it is the most notable open source IDE I have meaningful experience with. I haven't used IntelliJ, but I have used Rider which is very similar.


"open" can mean lots of different things, and refer to different aspects.

I think the OP is talking about "open" in large part in terms of open source licenses, and intellectual property. They complain about "subvert[ing] an active open source project by ramming in a proprietary extension to continue to lockdown .NET" and "Over time, the .NET platform is becoming closed, to ensure it is only useful if you are a customer."

You are talking about "open" in terms of access to developers at Microsoft, who you can commicate with, and who then respond by getting fixes to your problems in.

These are actually pretty different things. You and OP can both be entirely right. .Net can be a platform where Microsoft is working to make sure that the platform is only useful if you are paying customer, and where you have access to communicate with developers who take your concerns seriously.

> Are we upset that we have to pay money for the privilege of using other peoples' intellectual property

Well, I mean... you know what open source is, right? Yes, it means you don't have to pay money for the privilege of using other people's intellectual property. That's literally what open source is.

That's fine if you don't care whether or not .Net is open source. That's fine if you think it's silly to be upset that something isn't open source when you think it should be.

But... .Net claims to be open source, right? So, yes, it is reasonable to expect you can use it without "paying for the privilege of using other peoples' intellectual property". That's literally what open source is?


We're talking about cognitive dissonance here. If Microsoft hadn't put out "Microsoft loves open-source" statements, then all this would be treated as business as usual.

However MS did. So people are dealing with the dissonance. Some people are being remembered how the strategy Embrace, Extend and Extinguish works.

TL;DR: the attitude MS is having is not open-source friendly.

NOTE: at least today they did state their plans from the start. Props to them.


You can love open source and still have proprietary code. It's not mutually exclusive.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: