For Developers: Better Privacy & No MS Products!
With the recent announcement of GitHub Copilot, the fact the Microsoft bought GitHub in 2018, and learning the GitHub Copilot was trained using any public repo Microsoft thought to be useful without permission from the developer to use their code in this way, more and more developers are considering other options for hosting their code. That’s fantastic, but why stop there? There are a handful of things developers can do to get further away from Microsoft and regain some privacy.
Microsoft Has Been Courting Developers for Years & We Should Question Why
To me, the development community has always sort of been divided into 2 camps. There are your MS ecosystem developers (.NET, C#, F#, etc on MS servers/Azure using Visual Studio) and whatever label you want to give the other group (JS, Java, Python, Ruby, Rust, etc on Linux servers using whatever IDE/editor they want). I remember being told by a mentor in my early days of programming that these 2 camps existed and you sort of had to choose as to which way you want to go. Now, I think that some devs that use languages and tools from both camps, but in my experience, I’ve noticed that most of the time this doesn’t happen. I have seen people make the switch from Java to C# and vice versa since they are so similar, but other than that, there isn’t a lot of crossing over between ecosystems.
A few years back, Microsoft released VS Code. I was SUPER skeptical about using this editor for a long while. Sublime Text, Atom, and Eclipse were suiting most of my needs and I saw no reason to even give a MS product a try. Once the dev shop I was working at switched to Angular 2+, I had to get into Typescript and was convinced by a colleague that VSCode was a better tool for the job. It was easy to learn, and I used it for a long while afterward.
Microsoft’s efforts didn’t stop there. Typescript itself was built by Microsoft and, frankly, it is damn good and I use it for web projects almost exclusively at this point. Windows 10 added WSL allowing developers to use a Linux terminal in Windows which made modern web development in Windows bearable. They later addressed some of the performance complaints with the release of WSL2, although it is still much slower than running a terminal in native Linux. They also added Linux support to Azure to win over more web developers there as well.
It’s easy to see why MS would make Azure and Windows 10 more developer-friendly as they are commercial products with profits to gain. The more developers using these products, the more money there is to be made. The acquisition of GitHub makes a bit less sense on the surface, though. There is not a ton of money to be made hosting code with the current model as lots of individual developers use free plans. Sure, there are corporate and team accounts that earn profits, but the free accounts greatly outnumber those and take up a lot of bandwidth and storage. Since being purchased by MS, GitHub released GitHub Actions which has a billing system tied to usage, but I still don’t know many people that use that feature yet.
Once GitHub Copilot was released, it all started to make sense. Microsoft has been training code completion AI from our public repos without our knowledge. Sure, I suppose they could have done this without owning GitHub since they still could have scraped the content of public repos, but it is much faster and more cost-effective to query a database of code that you own compared to writing a tool to scrape millions of pages from a website. I don’t believe that Copilot is their end game with this AI either, as they likely plan to use it for something with great harm to the developer community with a bigger profit to be made. Time will tell as this is pruely speculative at the moment.
Regardless of whether you agree with my take on some of the above, I think we can all agree that Microsoft isn’t trustworthy. Whether you consider the ridiculous amount of telemetry traffic that Windows 10 produces or just the fact that they used our code to train one of their products without our permission, you have to have at least a small level of distrust toward Microsoft these days. For me, it is enough to minimize my use of Microsoft products. If you are in the same boat, or if you are just interested in lists of open source developer tools, then keep reading.
Alternatives to Microsoft Products for Developers
There are things like Typescript or C# that you really can’t get away from, but they are harmless anyway. In my mind, Typescript is a great type-safe alternative to raw Javascript that is especially useful in larger, more complex code bases. I don’t see how there could be bad intentions behind the creation of Typescript other than to gain developer trust. These aren’t the products I’m saying we should stop using.
You can replace most Microsoft dev products with more private options. Let’s look at a few:
VS Code
VS Code is a great, free text editor with a large plugin repository that many developers, especially web developers, love. The thing is, there is an open-source alternative that takes the open-source binaries from VS Code, disables the telemetry, and gives you the same basic experience. VSCodium is what I’m referring to, and I had no trouble making the switch on every one of my computers. I’ll outline a few things to make the switch quick and painless:
- open the “Settings” in VS Code and switch to the JSON view. Copy and paste the contents into the JSON view of the “Settings” in VSCodium.
- open the “Keyboard shortcuts” JSON view and do the same thing
- install all the same extensions you were using in VS Code. Here’s where things can get a little tricky as VSCodium doesn’t have all the same extensions available. If you run into this and don’t want to use a different extension that does the same thing, you can download extensions from the Visual Studio Code Marketplace and install them using the
.vsix
file. You can do this through the terminal as outlined HERE, or you can merely download the file for an extension and install it within VSCodium by:- opening your installed extensions list from the icon in the left panel
- clicking the three vertical dots icon to open the options
- clicking “Install from vsix”
- selecting the extension you downloaded
Some advice I have for Linux users is to install using the PPA if you are on a Debian-based distro or any method other than the snap or flatpak package otherwise. The snap package isn’t maintained anymore and the flatpak package is problematic because it runs in a sandbox so it has permissions and access issues. You can overcome these issues with a bit of searching the web, but there are easier ways to install VSCodium.
Windows 10/11
Linux, Linux, Linux! There is no better development experience than what you can have on a nice Linux distro with a proper setup. It is easier, faster, and much more simple to use once you get over the initial shock of getting used to a new OS. Also, Linux is substantially more secure than MacOS and Windows too so you greatly reduce the risk of losing work because of having to remove malware or even reinstall the OS. If you are new to Linux, I suggest a more beginner-friendly distro such as Pop_OS!, Ubuntu, Fedora, or Manjaro. These distributions are simple to install, have many of the best and most needed apps installed by default, and have the easiest learning curve along with fantastic online communities for support.
Obviously, Windows can make more sense if you are a C# or .NET developer because they are native to Windows, but you can still use Linux if you’d like for development in those languages as well. MonoDevelop is just one tool that can be used in Linux to develop and compile applications written in these two Windows native languages. I’m not going to tell you that developing C# or .NET apps on Linux will be a better experience, but it is possible and worth testing out.
The idea of having a native terminal that can run git, zsh/bash/fish, npm/node, ruby, python, and more with little to no setup is quite appealing. Also, terminal commands are substantially quicker in the Linux terminal than on CygWin or WSL and have better access to system files and resources. I would even say that, in my experience, the terminal in Linux is a bit faster than it is in MacOS as well. Dev dependencies are easier to install and configure, compile times are shorter due to better resource management and the native terminal commands, and the result is a more productive development experience due to the increased speed and simplicity.
The best part is that dual booting has never been easier to do. This isn’t a solution that makes sense for everyone, but it makes the idea of running Linux workable for some. For example, I have a gaming PC that runs Windows so I can have the biggest selection of games available and the best gaming performance. It bothered me that I never use that machine for anything else because it is a beast that has a Ryzen 5800X, an RTX 3090 FE, Gen 4 NVME SSDs, and 64GB of RAM. It finally occurred to me that I had an NVME SSD in there without much of anything on it. I moved everything to other drives, created a Pop_OS! USB installer, installed Pop_OS!, then install REfind to server as my bootloader and menu. Now I can sit down at the most powerful machine in my house with 4 monitors, a nice desk, my gaming chair, etc, and boot into Linux to work on some of my projects or boot into Windows to play some games. I plan on having a post about dual booting soon so check back if you are interested!
GitHub, Teams, Office, & More
Microsoft also owns a lot of other tools commonly used by developers. For starters, there is GitHub. I’ve had a GitHub account since around 2011, and I even paid for a “Pro” account for several years to have private repos before they offered them for free. The thing is, GitHub wasn’t purchased by MS until 2018 so my decision to create that GitHub account made more sense at the time. I got so used to using it that I thought little about the fact that MS bought it until Copilot came out. Needless to say, I’m working on migrating most of my projects off of GitHub and onto GitLab now. The thing is, there are plenty of good options for hosting your repos these days on sites that aren’t training AI with your code and that have better privacy practices. Some of those include:
- GitLab (web or self hosted)
- GitTea (self hosted)
- SourceForge (web hosted)
- Gogs (self hosted)
- Launchpad (web hosted)
- Codeberg (web hosted)
You can find more HERE.
Additionally, there’s no reason to use Teams or MS Office either. In fact, I’ve made lists of better alternatives on my “Lists” page:
Replace Other Developer Tools Not Made By MS
Microsoft might not be universally liked or trusted, but there are other predatory companies out there up to no good as well. Here are some additional open-source and/or privacy-focused options for developer tools:
IDE’s & Text Editors
- IntelliJ IDEA CE
- Netbeans IDE
- Eclipse
- Eric Python IDE
- Pyzo
- Spyder
- PyCharm CE
- Atom
- Geany
- MonoDevelop
- GNU Emacs
- Brackets
- Bluefish
Browsers
- Brave Browser or Ungoogled Chromium to replace Google Chrome
- LibreWolf to replace Firefox
Others
These lists barely scratch the surface, too. There are countless numbers IDEs, text editors, automation tools, databases, frameworks, libraries, and more that are free, open-source software. In my experience, paid or proprietary developer tools are never needed and are rarely any better than their free, open-source alternatives.
For funsies, here is a list of my personal development tools:
- OS: Pop_OS!
- Editor: VSCodium and Vim
- Terminal: Terminator
- REST client: Insomnia
- IDEs: IntelliJ IDEA CE, PyCharm CE
- Browsers: Brave and LibreWolf
- Source control: git
- Repo hosting: GitLab
- CLI tools: oh-my-zsh, nvm, thefuck, pip3, SDKMAN!, and more
- Notes: Turtl
- Password manager: Bitwarden
- Image editors: GIMP and Inkscape
- Markdown editor: Mark Text
In Summary
I feel like I’m probably preaching to the choir here seeing that developers, generally speaking, are a bit more aware of the poor practices of some software companies and are often fans of FOSS. Still, I just wanted to give a quick overview of some things I'm aware of that are available for staying in a FOSS environment, avoiding Microsoft altogether, and having a better development experience. I know developers are also HIGHLY opinionated people so please don’t judge! We all have different preferences, skill sets, and coding styles so it only makes sense that we all use different developer tools, too. Anyway, if you came away with any new ideas whatsoever, then I accomplished my goal!