Microsoft is Just Bad

I saw this article on Fosstodon courtesy of Shom which detailed how people who were tinkering with a npm experiment almost brought the whole system down. This was unintentional and they had unnecessarily harsh action taken against them on Github. This got me thinking about the programming languages I have used, who controls them, and what I might want to be coding in for the future. I revised this article a few times, originally thinking this would be about big tech as a whole. As I kept modifying this article, it’s clear that this was about Microsoft (I sometimes abbreviate to MS) and open source.

Microsoft and Open Source

Microsoft originally hated open source. They initially only adopted open source software in order to embrace-extend-extinguish and become the defacto solution. Of the examples provided in the wikipedia link, the one I remember is the need to install ActiveX for certain websites (particularly school and some business sites) in order to see the web content.

While MS has become less hostile to open source, I wouldn’t call it friendly to it. I would more accurately describe it as they lost the war on being solely proprietary, and have begrudgingly accepted that open source solutions are viable. To that end, they try to monetize open source software to the greatest extend possible. That means controlling decisions on open source where they can and owning critical the critical pieces.

Microsoft Owns Your Code

I personally use Codeberg as my git provider of choice thanks to a Software Freedom Conservancy article about giving up github. Indeed, the article linked above is about the danger of a sole owner making decisions without understanding the community. It isn’t the first time Github has banned repos without understanding the nuances. Today we can’t trust that Microsoft will respect open source. They respect it only in-so-far as it benefits them from a business perspective.

In a similar move, the acquisition of the Node Package Manage means that MS owns the backbone of the Javascript ecosystem. Even though JS is controlled by ECMA International, MS controls the main infrastructure for JS repositories and can remove your code from the JS ecosystem in an instant.

Microsoft Owns the Tools

MS has acquired an alarming number of the tools used for open source development. One of the top used of these tools is Typescript. Typescript seems to be the one tool MS has released which isn’t inherently tied specifically to a MS product. However, you will need to download the compiler from NPM, so they’ll have you contact their server one way or another.

C# is a tool in which MS has exerted a great deal of control over users. Microsoft first tried to embrace-extend-extinguish Java but failed and then fell back to creating a Java-like language. In the early years of the language, this was to force users to run C# code on MS Windows servers. Today MS has release a version of .NET called .NET Core which can be run on a server of your choice, but they control what is added to C#.

Finally, MS releases the code editing tools which most people use today. Back in the day, the tool of choice was Visual Studio. This is a full integrated development environment designed for creating .NET or C++ Windows applications. If you don’t work for a company using the .NET ecosystem or have a .NET side project, most people opt for Visual Studio Code. This is a (out of the box) lightweight text editor which has a extension system to extend its functionality. Depending on the extension, this blurs the line between a capable text editor and an IDE. Either way, there is telemetry in there which cannot be fully turned off.

Microsoft Owns Your CV

LinkedIn has become a de facto needed network most people must participate in to advance their career. Depending on your industry, it could be useful or useless. In my case, it has actually been useful for finding recruiters for new jobs when I needed to find a different job. It has been comparably useless for a friend of mine who is a electrical engineer doing more classical electrical engineering work. Either way, some employers aren’t even hiring people without a LinkedIn account today.

Microsoft Tries to Owns the Cloud

Azure is the second most used cloud infrastructure. This largely comes down to having the perception of being a lower cost cloud provider. However, the big draw is the ability to move your .NET tooling to cloud infrastructure easily. While other cloud platform support .NET runtimes, it is certainly the case that you’ll get a better experience using Azure for .NET due to all being built by MS.

Microsoft Owns the Operating System

It’s no secret that MS Windows used monopolistic practices to get where it is today. Microsoft was nearly broken up over their browser practices in Windows. The telemetry that Windows collects can only be partially mitigated with the telemetry settings, but not completely turned off. Also keep backups, as Windows updates can cause data loss.

What Can We Do

Despite this level of data control, there are a lot of options we have to mitigate or even eliminate the control MS has over our software. The most effective tools are to

Switch Tools

The best action we can take is to not use the tools wherever applicable. Consider some of the following alternatives to the tools I listed above. For a more comprehensive list of alternatives, check out AlternativeTo.

GithubCodeberg, Gitea, GitLab
AzureAWS, Linode, Hertzner, Digital Ocean
.Net RuntimeMono

Minimize the Harm

If an alternative isn’t an option, we have steps we can take to make sure we give as little control as possible. If you need to use Github, you can use an aliased email service to not tie your Github actions to you personally if desired. You can use a VPN service when trying to access LinkedIn if you need to use the service. If you need to program for Windows, you can use an isolated VM or even Windows 365 if that is an option for you.

What I Do

I have always been targeting FOSS applications and minimizing tracking and telemetry. As mentioned earlier, I use Codeberg for my git project, currently use VSCodium for my editor, and program primarily in Dart or Astro (Node.js) for my websites. Linux has been my daily operating system for quite some time. I still use LinkedIn, but now use Mullvad VPN to hide my IP from LinkedIn and NPM which minimizes the information I provide to them.

While there are other big tech companies which release open source languages and tools (IntelliJ and Kotlin, Google and Dart, Facebook and React), MS is more concerning for the consolation they have over key pieces of the development infrastructure. I actually considered using C# and the Xamerin framework to build Reckoner. However, it didn’t support native Linux applications which lead me to choose the Flutter framework. It looks like it is possible to use Xamerin in Linux, but I am far happier with Flutter and it has received more Linux support with Ubuntu building several of their latest UI applications with Flutter.

Ultimately as an open source developer, I would think twice before using a MS tool for your project. While giving the outward appearance of embracing open source, their corporate history seems to show that they only view it as a means to their ends. If you benefit, fine. If they have the slightest perception of losing anything, they will modify or delete your work where possible.