I've been using Linux as my daily driver since 2017, and one particular question comes up a lot in my discussions with friends: why not Windows? So to answer this question and all its other "why not $OS" variants, I've written this post to describe some of my thoughts.
First as a disclaimer, my goal here is not to disparage any OS or its users. I firmly believe in being pragmatic with your software choices - use what fits your needs and wants, and be happy there's choice in the first place!
I first started dual booting Linux alongside Windows 7 in ~2015, first getting my hands on Linux Mint's Debian Edition (LMDE) and eventually moving over to plain Debian Testing.
This happened to be around when Windows 10 first released, which brought about quite the uproar at the time. Before I had even had the chance to upgrade my devices, the new Windows was already all over tech news media. Already, there were a few sticking points that really soured my initial impressions. (Heck, Wikipedia even has an entire article summarizing everything that went wrong...)
Here, I'll only focus on what bothered me most:
Aggressive marketing campaigns with the GWX app, with some users alleging that their Windows 10 upgrade was pushed without consent.
Ads seeping through the Windows shell, with all sorts of upselling for Freemium apps.
A new update system that significantly reduced user control, coupled with a history of botched updates. While I do understand the motivation for delivering security updates in a timely fashion, the general quality of Windows updates has declined dramatically since Windows 7.
Anti-choice settings, stomping over your file associations and yelling at you to use Edge instead of everything else.
All in all, none of this seemed like a particularly appetizing upgrade back in 2015.
Unexpectedly, switching to Linux full time was not entirely intentional. Sometime in 2017, my Windows 7 install broke after a botched Windows update and started to boot-loop (go figure). I didn't particularly feel like reinstalling Windows and reconfiguring all my apps; in fact, this is one place where I feel Linux really shines with unified software repositories that cover most of the system. The options for Windows versions didn't seem that great either - Windows 7 was EOL in 2 years, and Windows 10 just didn't feel like the right choice for me.
Also at the time, I was also getting fairly deep into Linux as a development environment: I did a lot of open source work with IRC et al. and was even maintaining packages for Debian. All of these projects are native to Linux, so obviously having that available was a big help.
Today, I'm much further into my computer science studies, and my experience as a software developer has really made Linux and FOSS a great fit for me. An OS that's open at its core means that when something goes wrong, I can start debugging it myself! There is much less scouring through the plethora of support forums on the Internet, hoping that someone has hit the same obscure issue as me. Of course, this point isn't meant to convince any non-technical folks to adopt Linux - but it's a strong personal reason for me to prefer it.
I'll address the most common follow-up question here: because it's kind of a pain.
While many folks tend to reboot for specific tasks like gaming or work, I've always found this to be a distraction in my workflow. Even if some games or programs required a specific OS, there were plenty of smaller things I wanted to keep working on both: e.g. email+browser profiles, chat clients, and cloud storage sync.
For browsers, this isn't too bad as cloud sync is widely supported, but most other apps (even cross platform ones) only know about local storage. Essentially there were two answers to this problem: either make 2 copies of each program profile and sync them up manually, or force the same app on both OSes to work against the same folder. For reference, a lot of these programs were and are still cross platform: e.g. Thunderbird, Dropbox.
I ended up picking the second option. However, the options for cross platform file systems sucked back in 2015, and I'm still not convinced they don't suck today:
ext4 is native to Linux and used as a default in many distributions. While a 3rd party read/write Windows driver (Ext2Fsd) did exist, it was prone to data corruption bugs (just look at the website) and doesn't seem to be updated anymore.
NTFS is native to Windows. While a read/write driver for it does exist on Linux (ntfs-3g), it's not exactly fast and likes to chew tons of CPU. It's also important to keep Git repositories and anything sensitive to Unix file permissions away from NTFS partitions, as those are not supported.
FAT32 works everywhere, but it doesn't support journaling and thus has way larger risks of data corruption. The hard 4 GB file size limit is also a pain (think VM disk images, for example)
WSL wasn't mainstream yet when I switched to Linux in 2017. Running Linux natively works fine for me, so I don't see the point of installing Windows just to get a Linux environment.
In all seriousness, Linux gaming has gotten a lot better in the last 5 or so years. According to ProtonDB, 78% of the top 100 titles on Steam (as of May 2021) run natively on Linux or with minor tweaks under Steam's Proton. This number rises further to 88% for single-player titles.
Emulation layers are catching up quick, and the biggest barrier for remaining titles is actually anti-cheat systems. These tend to be fairly invasive and require kernel drivers to work, so any sort of compromise there seems unlikely.
Personally, the games blocked by anti-cheat happen not to be the genres I'm interested in, so gaming fortunately has not been a blocker for me adopting Linux.
For apps that still don't work natively, I do have a VM with VFIO / GPU passthrough, so I can run Windows apps and games as needed without the graphics bottleneck of a regular VM. Of course, this increases hardware requirements a fair bit (need 2 GPUs & monitor outputs), so this sort of setup won't work for everyone.
To quickly summarize, the main reasons I switched from Windows to Linux are: