For those of you who use GNU/Linux or BSD (or basically any other UNIX-like system) this post will come as no surprise to you, but I still felt the urge to make it anyways. I currently do not run Microsoft Windows anymore, but I still have to use under certain circumstances for classes and such as well as constantly hearing from friends (who run Windows as their main OS for some stupid reason) and news articles about the newest stupid thing they've added to fuck over their users. So, let's get started on the bashing of the dead horse. (Why? Because it's fun.)
Forced Updates: One of the main things that frightens me about Windows is how easily they can shove shit onto your computer without you needing to give them any permission, and what's more, do so by force even taking up your own time when shutting down (or forcing you to shutdown). After having used GNU/Linux for 6 years and OSX before that, this entire thing seems stupid to me. If they're going to tell you what to do with your computer why not ditch them?
Obligatory Restarts for New Applications: For some reason Windows is such an incompetent OS that for many applications you have to restart the entire OS just to launch a newly installed application. This normally means that said application depends on modules or hooks with the system kernel (or at least that would be the case on a GNU/Linux system), in which case, why the fuck are so many applications dependent on the Windows kernel to run? The only times I've had to actually restart my system on GNU/Linux is if I installed a new kernel module/hook or I got an update to the kernel or one of its modules. Other than that I never have to restart my system.
Lack of Configurability: Something I've loved and gotten very used to ever since using GNU/Linux is the very high ability for configurability that I have. Generally in the UNIX world configurations are all put into configuration files with as many configuration options as possible. This is because this lessens the need to go into the actual source-code for a program and change something as simple as the colour for the UI. This and the OS itself tends to be very flexible in terms of what it allows you to do with it (the OS is basically just the bare bones and you put other shit on top of it, like a display manager, window manager, network manager, and everything else). This means that in GNU/Linux (and other systems like BSD) I have the ability to easily use whatever window manager I damn well please and configure my programs via configuration files to look and function the way I want them to without even having to mess with source-code. In Windows, on the other hand, none of this is possible, I'm stuck with what Microsoft wants to give me and that's it. Take into account that this isn't even an issue of GNU/Linux or BSD being free software/open-source, if all these applications were non-free I would still have a load of configurability over them.
No Package Manager: If you don't know what a package manager is, think of it like an app store. Now, in GNU/Linux basically all distributions have a package manager (there are even a few of them, like `pacman', `aptitude', and `dnf') which are very useful for multiple reasons. Firstly, they make it extremely easy to install new applications in an organized and easily removable and easy to update way, either from an online repository or from a package file you downloaded to your computer. But more importantly, they are a standard way of installing dynamically linked libraries, or shared object files (if you're on Windows, it's those `.DLL' files). Why is this important? Let's say that two programs use the same library (same version even), on GNU/Linux you would install the shared object file for that library and the two programs, and both programs would use the same file when executing. On Windows, on the other hand, you will install both applications and both of them will come with their own copies of the same exact file, and depending on how large this library is it can be a very large file. A typical example of this is with games. If you're a gamer and like playing Unity games, on Windows, for every Unity game you have on your computer there is a copy of the Unity shared object file for it. This means if you have 20 of these games, you've got 20 copies of the same exact file on your computer. What also differentiates a package manager from an app store (or at least the Microsoft and Apple ones) is that it makes it easy to install packages from 3rd party sources, as well as add unofficial repositories. Microsoft and Apple do not let you do this.
Special Snowflake Sockets: This is a bit more on the technical side, but why the fuck does Windows have to have its own socket code? Why can't it use UNIX sockets like everyone else? For every other major OS (MacOS, GNU/Linux and BSD) I can write practically the same code without the need of compiler macros, but once Windows is in the picture I am forced to fill my code to the brim with compiler macros for the special snowflake sockets. I can write one set of instructions for practically every other OS, but for this one OS, Windows, I have to write a special set of instructions for it all because otherwise I won't be able to port my software to the OS with the most users.
Shitty Command Prompt: I am unsure as to how long it's been since Microsoft decided to update their command prompt, but it feels like ages, because that thing is shitty as hell, especially their shell. Last I remember there's no tab completion for commands, at one point in time it had issues resizing, and it can't even use (n)curses. I can do a shit ton of stuff from the command line on a UNIX machine (even a MacOS machine), but on Windows I am limited as fuck. My choices are to either use the shitty command prompt or to use the shitty GUI that the developer of the program provided me with, neither of which are very appealing.
Ads Everywhere: There are ads fucking everywhere in Windows, especially starting at Windows 8, where you could find them in the 'start menu'. It gets worse when Microsoft decided to put ads in their file browser as well, especially considering loads of people don't know that you can install a different file browser. Now they're saying that it's because they've made Windows gratis and therefore they need a new way of generating revenue from the OS... except the ads started to hit hard with Windows 8 and it was Windows 10 that has become gratis. That and most GNU/Linux and BSD distributions are also gratis and they have no ads either. Heck, even the most of the applications (window managers, file browsers, menu apps, etc.) don't have ads.
Long Boot Times: Windows has the longest boot time I have ever seen in my entire life, which is probably why they've resorted to hibernation rather than actual shutdown. Don't misinterpret me, on GNU/Linux you can also get long boot times... if you use the heaviest display manager and desktop environments there are as well as having a shit ton of services startup on boot and a bunch of applications on autostart when you login. Other than that, it'll got faster than Windows given the same machine.
No Minimal Install: Something I love about Arch is that it is very very small and when I install it I tell it exactly what to install from the very beginning. Everything I have installed on my computer is there because I installed it myself. Many people really enjoy having minimal installations, it makes their system more lightweight, takes up less space, especially very handy if you're ever going to be doing anything that's extremely resource intensive (less resources being wasted on desktop environments and random applications you never use and more being used on your media editing or whatever you're doing). The closest thing Windows has to this (from what I've heard) is their server version of the OS, and even that comes with a shit ton of applications by default.
This'll probably be it for the Windows bashing, but if you use MacOS/OSX, don't think you're off the hook, "Why MacOS Sucks" is coming very soon.