Thursday, April 25, 2024

Leaving Microsoft


 This is arguably out of order. I have one or two posts which should probably go before this (namely, why I am starting with Microsoft, why it isn't JUST Microsoft, and what brought me to this point), but I am feeling a bit cowardly about posting them. Perhaps later. We'll see.

But I have reached a threshold of tolerance for poor social, political, and economic behavior, from certain organizations, and the social and political structures they are building, and I have decided to do something, even if it is only removing myself, my labor, and my personal information from the equation (a drop in the ocean, admittedly).

I recognize a certain amount of inconvenience will come from this effort. But as a wise farm-boy-turned-pirate once said, "Life is pain...".

Weak humor aside, life is often difficult, and sometimes you have to "Choose your hard." Switching away from all Microsoft products will be hard, but I feel it a better choice than remaining under their thumb.

But as I noted at the start, this post isn't intended to enumerate my grievances, rather it is to work through the technicals.

There are three (four, technically) facets to this endeavor, which must each be considered.

1. Operating System - Currently running a mix of Windows 10 and Windows 11 in my home. Microsoft allegedly plans to bully people into moving off 10 (not practical from a couple of my systems which are too old to run 11). And I have mostly regretted upgrading to 11 on the systems where I did. More clicks to get the same work done, and I am no longer to organize resources in a way which is practical for me.

This will be the focus of this post.


2. Applications - This is a big topic and may be a couple of posts. From a Microsoft perspective. I have already moved off MS Office (to LibreOffice) and OneNote (to Obsidian - I did this after OneNote unrecoverably corrupted a large number of documents roughly a year ago. Obsidian works in plain text files, with Markdown, so eliminates that likelihood as well as dependence on a single, proprietary application).


3. Data - This is heavily tied to applications - for my purposes, it is a factor to consider from the perspective of file formats (mostly Office files - Word, Excel, etc... Which Ironically, LibreOffice was able to recover legacy versions of MSOffice files, that Office could not), to make sure my data is accessible and protected.


4. Configurations - This is very heavily tied to applications. Often Configurations are splattered across various files and/or scattered throughout the Microsoft Registry. This is a significant frustration for me. Application configurations should be kept in a file, or a specific folder structure of files, and preferably in a plain text format (YAML, or similar). This way you can move to a new computer, reinstall the application, copy the configs, and voila! All are personal tweaks and preferences are 'magically' there. It is absurd to me that this isn't the default way of doing things.


I will only be focusing on the first item in this post. I may address the others in later posts, depending on interest, personal momentum etc...


So, Operating System.


There are a few key requirements for this:

Price - It needs to be affordable. As I have limited budget. but I also don't want "free". "Free" tends to come with strings. Price also includes cost of hardware, I want something that runs on my existing hardware, so I don't have to spend a fortune on new gear.

Stability and Ease-of-use - I own a car to get me from point A to point B, not to work on the engine. I respect people who do that, and am not disparaging them, but for me, the operating system is just the platform for running applications, which are used to get stuff done. I am reasonably competent, technically, and can dig into the code a bit if needed, but I don't want to spend all my time fiddling with the operating system.

Applications - I need to be able to run my applications, or an alternative application which meets my needs. For the most part, I have been preparing for this for the past couple years. Most of the applications I use are cross-platform (i.e. have versions for other operations systems), the rest, I believe I can live without.


There are really only a handful of options for operating system.




Windows - Which is what I am seeking to leave. So, obviously it's out.








Apple (MacOS) - I have ruled it out based on cost, proprietary hardware requirements, and the closed ecosystem - which I do recognize is a plus for the fiddling, however they have taken it a step too far - I don't want to spend all my time tinkering with the engine, but I also don't want a car with the hood welded shut, so to speak. Also, I have a long-standing beef with Apple, due to their founder's poor behavior, and concerns they are still supporting slavery (specifically Uighurs, and political dissidents in China).





Linux - This seems to be the winner. There are of course, thousands of Linux distributions, and this is really the meat of this post, evaluating the myriad options. Though most can be discarded as too niche.

Linux is not without flaws of course. The thousands of different distributions for example. Linux tends to be very fragmented. It is open source, which means anyone can look at - and work on - the code. This has some benefits.

1. It likely won't disappear onto a shelf somewhere. Since anyone can pick it up and start working on it.

2. There is the potential for better security, based on the principle of "many eyes". With more people looking at the code, it is less likely a security flaw (intentional or unintentional) will stay in the code for long. I emphasize potentially however, as this only is the case if skilled people are actually looking at the code. This may or may not actually be happening, which can lead to a false sense of security.

But there are flaws as well - 

1. The people working on it are often... strong personalities. This leads to fragmentation as individuals split over differences of opinion on design and structure.

2. It is difficult to effectively monetize, when anyone can pick up your work and use it for their own distribution. So projects are often the result of someone following a passion. Passion doesn't put food on the table. This means some projects just... die. Projects often lack good documentation as well, as the people working on them are interested in solving a specific problem for themselves. (In an ideal world, people would acknowledge the work of individuals and make micropayments to them, which would add up to a reasonable living. I use the example of music artists. If there was an easy way for everyone to identify the artist who produced a specific song, and then pay the artist... say... 25 cents for the song - A million people doing that, and the artist just made a quarter of a million dollars!)


Still, given the tradeoffs I believe Linux is the best option. Now, which one... 




Redhat (/Fedora) - One of the oldest and most established distributions, with a solid company behind it. However, their pricing tends to be business-centric (i.e. too expensive for home users). They have free offerings, but they have been doing some weird stuff with those of late. Redhat is now a subsidiary of IBM, and while far from the worst, they are on my list of organizations to avoid, due to bad behavior.





Debian (/Ubuntu/Mint/)... - Debian is another old-guard. They are unique in that they are a non-profit, all-volunteer organization. Debian itself is very stable, albeit lags behind other distributions. It has become the foundation for numerous other distributions, Ubuntu being perhaps the most well-known.

Ubuntu has a for-profit model, though a home user can obtain it for free. They essentially take Debian's work and put their own polish on it (which in theory makes it more user friendly. This was most notable with respect to hardware support, as Debian had a strict policy of not allowing proprietary code, which meant some fiddly technical work during installation. As of version 12, they have relaxed this somewhat, allowing proprietary firmware.). 

Ubuntu and Mint (and other derivatives) will often fast-track key applications, making their distribution slightly more 'up-to-date' as well.

My general leaning is to go to the source, rather than a derivative work. So, Debian is my preference here, even if it lags behind a bit. They are well established, they have a solid governance model, and they are committed to openness and accountability.

It is not a purchased product, but as a non-profit, they are using me as a product, and perhaps there will be an opportunity for me to contribute to the community in time.







Arch - A (relatively) new distribution, Arch has one unique feature in that they don't release 'versions' of the operating system. It is always "Arch".

The benefit of this is you don't have that occasional, massive and painful upgrade. (Like going from Windows XP to Windows 8, or Windows 10 to 11, etc...).

The downside, it is constantly being updated. there is a greater risk of instability, and more fiddling is likely necessary to keep things working as you like. I have been testing it for a few months now, and thus far I have had no difficulties.

Arch has a reputation of being snobbish and "elitist". I can't say if this is true, as I have had almost no interaction with other arch users (again, no problems so far). They do seem to have very good documentation, should it be necessary.





NixOS - an even newer distribution. I know very little about this one, and what i have read suggest it is (at present at least) too fiddly to meet my ease-of-use requirement. I mention it because it is definitely on my "to keep an eye on" list - possibly for future consideration. The reason being their immutability design principle.

As I understand it, NixOS has a single YAML config file (though I believe it can be broken out into sub-files - a single file would be cumbersome), which has all of the system configuration information.  This means you can grab the installer, feed it this file, and rebuild your system from scratch at will, with all your tweaks and preferences intact. I would consider that ideal.

But, it sounds like, at the moment, it takes quite a bit of fiddling to get this working how you want. So, I will keep it in mind, but wait for now.


It is possible I can achieve the same result with Debian or Arch, using a tool such as Ansible, which allows you to build YAML documents to define your system, and then it idempotently applies the necessary changes to the system to achieve that state.

Again, this is fiddly, and Ansible is a RedHat product, so... We'll see.



Based on this analysis, my inclination is to Use Debian for my home server needs - and probably the family computers as well, and use Arch for my main workstation, where I will need to be a bit more cutting edge.

I also have a Microsoft Surface pro, which is my portable computer, and that one may be a particular challenge. Looking at online resources, it doesn't appear there is presently a "plug-and-play" solution to move off of Windows there. (Microsoft hardware, so I suppose that is to be expected). Still not sure how I will tackle that.


That is where I am at this point. The idea is not fully baked, but I intend to make significant progress in May and June to eliminate Microsoft products and services from my life.


Why am I even posting this? Partly for accountability. Now that I have said it out loud, I am less likely to chicken out. Also partly, in case others have gone down this path, or are considering it, this provides a chance to connect and share knowledge.


Wish me luck...

No comments:

Post a Comment