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 for Converge360.

comments powered by Disqus

Featured

  • Creating Reactive Applications in .NET

    In modern applications, data is being retrieved in asynchronous, real-time streams, as traditional pull requests where the clients asks for data from the server are becoming a thing of the past.

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

  • .NET 9 Preview 3: 'I've Been Waiting 9 Years for This API!'

    Microsoft's third preview of .NET 9 sees a lot of minor tweaks and fixes with no earth-shaking new functionality, but little things can be important to individual developers.

  • Data Anomaly Detection Using a Neural Autoencoder with C#

    Dr. James McCaffrey of Microsoft Research tackles the process of examining a set of source data to find data items that are different in some way from the majority of the source items.

Subscribe on YouTube