News

Miguel de Icaza Leads Uproar Over Closed-Source VS Code C# Tool

Xamarin co-founder and former Microsoft exec Miguel de Icaza blasted the company -- along with many others -- for introducing closed-source functionality in a new scheme for the official C# extension for Visual Studio Code, calling the move "an unacceptable abuse of power."

That C# tool is powered by OmniSharp, but Microsoft is introducing a new extension based on the Language Server Protocol (LSP), used between an editor/IDE and a language server to provide language-specific functionality such as auto complete, go to definition, find all references and so on.

Language Server Protocol for HTML and PHP
[Click on image for larger view.]Language Server Protocol for HTML and PHP (source: Microsoft).

"As we move towards a more dynamic future for the C# experience in VS Code, we intend to switch the extension to communicate entirely using LSP and plan to update the existing OmniSharp component to communicate in this manner as well," said Microsoft's Tim Heuer in a June 15 announcement in the VS Code/OmniSharp GitHub repo. "Utilizing LSP will allow us to bring innovative new features to the C# for VS Code extension. This includes making advanced capabilities available and, in some cases, closed-source experiences, such as IntelliCode. We plan to create a new 'LSP Tools Host' component (not an official name 😊), which integrates both open-source components, like Roslyn and Razor, with closed-source components, offering a wider array of tooling capabilities."

The OmniSharp C# Extension Has Been Downloaded More than 16 Million Times
[Click on image for larger view.]The OmniSharp C# Extension Has Been Downloaded More than 16 Million Times (source: Microsoft).

That caused quite an uproar among developers who support open source, led by some biting Twitter comments from de Icaza, who in March left Microsoft after joining the company in 2016 when it acquired Xamarin. Along with co-founding that company, he is well-known for his pioneering efforts in big, popular projects including GNOME, Ximian and Mono.

Lipstick on a Pig
[Click on image for larger view.]Lipstick on a Pig (source: Microsoft).

His initial Twitter reaction read: "Truly disappointing that Microsoft would subvert an active open source project by ramming in a proprietary extension to continue to lockdown .NET. An unacceptable abuse of power from the stewards of the platform, and a betrayal of the community." Follow-on comments in a give-and-take with other developers included:

  • After last year's debacle, I authored a paper to address the question "What should we do instead of shooting ourselves in the foot?" - now we know, it soared like a lead balloon.
  • They did the same to MonoDevelop, hard fork into fully closed VSMac
  • You don't communicate negative decisions clearly, you need to hide them behind a bunch of other stuff, this is what the post does

Other developers weighed in with similar commentary on the Twitter post and on Heuer's original post (95 comments and growing as this is being typed), which saw comments like:

  • Embrace, extend and extinguish.
  • While "C# in VS Code" getting some love is very much welcome, the new LSP implementation not being open source is a weird decision. I hope Microsoft reconsiders it. If it's about IntelliCode, then they can make the LSP server extensible and open source, with some optional closed source components like IntelliCode. GitHub Copilot lives as a separate extension and works everywhere, maybe a similar method can be used for IntelliCode in VS Code too? Anyway, because of Copilot I don't think IntelliCode is that important in VS Code
  • I echo the sentiment that this being officially close sourced is a turn off. It is great that C# for VS Code gets more love, but this was also a weird omission in the past. Glad to see it starting to get corrected, but can't help to feel another mistake is being made. IntelliCode can be a separate extension like copilot, open source what you can.
  • It's sad and short-sighted when Microsoft tries to jockey for power in the short-run (or reap rewards on existing market share) by making user-hostile decisions. This seems like another instance of embrace/extend/extinguish. It's predictable by now, but I'm not happy about it!
  • Can you provide reasoning on why this new tools host will be closed source? This seems contradictory to the spirit of VS Code. MS has gained a ton of goodwill from developers by building open source, it would be a shame for this to change and old habits come back in to play.
  • Can Microsoft share the rationale behind making the aforementioned “LSP Tools Host” closed source? I think that the lack of justification makes the whole issue more open to misinterpretation. This kind of rug pull with open source projects isn't welcome at all. I hope you fix this before it turns into another PR crisis.

Heuer may have been attempting to forestall such a PR crisis with a follow-on comment to his announcement:

UPDATE:
Thanks for the passionate feedback. I'd like to clarify a few things stated in the feedback that we failed to make clear.

The LSP implementations for Razor and C# will remain open-source (Roslyn and Razor) as they are today. The VS Code C# extension (ms-dotnettools.csharp) itself will also remain open-source. That which is open source today remains so and in active OSS development. This ensures that others outside of VS Code that use LSP continue to have access to C#.

This new host component is the bridge between open and closed source functionality letting us deliver both at the same time.

After becoming a Microsoft Distinguished Engineer (following what he described as the "longest job interview of my career"), de Icaza became a strong advocate of the company's open source initiatives, which mark a stark turnabout from decades ago when it was widely viewed as a monolithic, proprietary, industry bully in developer tooling and other areas, earning a reputation for closed-source secrecy amid those "embrace, extend and extinguish" characterizations.

When he left Microsoft in March he said he wasn't going to another job right away, instead planning to spend some time with his family before choosing his next direction, which is likely to involve a start-up experience.

Judging from his comment about "last year's debacle" and authoring a paper about the company avoiding shooting itself in the foot, he clearly had some disagreements with management, but he didn't clarify what exact situation he was referring to. His Xamarin co-founder, Nat Friedman, left his position as CEO of Microsoft-owned GitHub last November.

Coincidentally, a Dusted Codes article last year titled "Can we trust Microsoft with Open Source?" said: "Do you trust Microsoft with Open Source or do you actually trust people like Jon Galloway, Scott Hanselman, Scott Hunter, Guido van Rossum, David Fowler, Damian Edwards, Miguel de Icaza and a handful of other OSS champions who have been pushing the OSS message internally from the bottom up? What if these people leave .NET? Will Microsoft continue to play nicely with the community?"

Time will tell.

About the Author

David Ramel is an editor and writer at Converge 360.

comments powered by Disqus

Featured

  • VS Code Copilot Previews New GPT-4o AI Code Completion Model

    The 4o upgrade includes additional training on more than 275,000 high-quality public repositories in over 30 popular programming languages, said Microsoft-owned GitHub, which created the original "AI pair programmer" years ago.

  • Microsoft's Rust Embrace Continues with Azure SDK Beta

    "Rust's strong type system and ownership model help prevent common programming errors such as null pointer dereferencing and buffer overflows, leading to more secure and stable code."

  • Xcode IDE from Microsoft Archrival Apple Gets Copilot AI

    Just after expanding the reach of its Copilot AI coding assistant to the open-source Eclipse IDE, Microsoft showcased how it's going even further, providing details about a preview version for the Xcode IDE from archrival Apple.

  • Introduction to .NET Aspire

    Two Microsoft experts will present on the cloud-native application stack designed to simplify the development of distributed systems in .NET at the Visual Studio Live! developer conference coming to Las Vegas next month.

  • Microsoft Previews Copilot AI for Open-Source Eclipse IDE

    Catering to Java jockeys, Microsoft is yet again expanding the sprawling reach of its Copilot-branded AI assistants, previewing a coding tool for the open-source Eclipse IDE.

Subscribe on YouTube

Upcoming Training Events