My first OSS project was SharpPcap/Packet.NET.

SharpPcap is a C# wraper for winpcap/libpcap. Packet.NET is the parser library used read/write the various protocols from/to raw binary.

I decided to become a contributor when the library saved my ass on a project. Anybody who has tried to do networking below the transport layer in Windows has probably discovered the hard way that it's not possible. Windows intentionally uses a crippled networking stack for 'security reasons' because script kiddies could use it to spoof their source address. WinPcap's driver is the magic key to unlock the rest of the stack.

Anyway, before I digress further. Developing an OSS project that targets C# sucks for the following reasons.

Git at the time was ridiculously difficult so most projects targeted SVN, which isn't great for decentralized usage.

Git support in Windows has improved dramaticaly but there will always be 'gotchas' like inconsistent line separators and issues with path separator chars. All of which requiring coaching/training contributors on how to resolve these issues before their code can be merged.

In most cases, the well known OSS 'rockstars' in the .NET ecosystem like ScottGU are employees of Microsoft or somehow deeply connected to the MSMVP ecosystem. They're were basically just Microsoft's version of the 20% time programmers who were given a longer leash to encourage other OSS devs to 'follow their lead' and produce free shit for the MS ecosystem.

If you aren't part of the MVP ecosystem, your project was basically invisible. Your best bet is to post in-depth tutorials ln CodeProject and hope somebosy takes notice enough to write about it elsewhere.

Most .NET users are just that, users. They leech, ask for help, request features, and contribute nothing. It's not clear whether it's because they won't or if it's because they can't. It's just the culture of the community.

There was always a looming spectre that what you're doing is illegal. Sure .NET is an 'open' standard because it's an ECMA standard. Except, MS has an ace in the hole otherwise known as patent protection. We're talking about one of the most aggressively adversarial monopolistic
powers in the world whose CEO openly called GPL 'a cancer of the developer ecosystem'. Their answer to the OSS community came in the form of releasing a 'covenant not to sue', for now...

-------

Most of these issues have gotten better over time.

There's still way too much hero worship of MS MVPs but that won't change as long as MS is making a killing from their certification mill and free grassroots marketing.

Microsoft still practices 'embrace and extinguish' they just do it in the OSS ecosystem now. Just look at how they've treated the MonoDevelop project. Miguel de Icaza should be given a frickin medal for bringing .NET to the nix ecosystem back when MS was still making threats of litigation over the project's 'illegal' nature.

Instead, more than a decade after Mono first began .NET support in nix is acknowledged. Microsoft finally releases a nix compatible version of Visual Studio; announcing the event with great fanfare to the MS certified developer ecosystem as if they were the first to come up with the idea. Meanwhile Mono gets brushed under the carpet as some unfortunate past mishap.

The biggest problem with developing OSS in windows is...

The CLI suuucks. I wholeheartedly mean it when I say that it should have been taken out back and shot a long time ago.

MS had a great opportunity to fix it but instead they released Powershell. Yet another MS-specific 'snowflake' language dressed up as a developer tool.

Attempts have been made to provide a first-class package management tool but -- from what I've read -- they're poor wuality and cause more problems than they solve. NuGet boasts 50k packages but I'm willing to bet the vast majority of those are front-end JS libs, not actual .NET libs.

I don't do much OSS development in Windows these days but when I do, I usually start in nix first and adapt the code to Windows last.

Writing OSS in Windows feels too much like being an unpaid, underappreciated, intern for MS.