A couple of weeks ago, I saw a tweet asking: "If Linux is so good, why aren't more people using it?" And it's a fair question! It intuitively rings true until you give it a moment's consideration. Linux is even free, so what's stopping mass adoption, if it's actually better? My response: “If exercis...
And Linux isn't minimal effort. It's an operating system that demands more of you than does the commercial offerings from Microsoft and Apple. Thus, it serves as a dojo for understanding computers better. With a sensei who keeps demanding you figure problems out on your own in order to learn and level up.
...
That's why I'd love to see more developers take another look at Linux. Such that they may develop better proficiency in the basic katas of the internet. Such that they aren't scared to connect a computer to the internet without the cover of a cloud.
I mean coding is difficult enough as it is, I wouldn't choose to use an OS that makes it even harder.
I use Linux because it makes my life easier. It has better support for development. Some of the other stuff is maybe not as easy or polished, but the support for dev tools and the ease of deploying to from local machines to servers that are also running Linux makes up for it.
If I wanted more effort I'd still be using Windows. It would force me to work on cross platform development and deployment. The idea that there's value in making things unnecessarily hard is just weird. I want Linux to be as simple as possible to use, so I can spend that effort on things that actually matter.
I agree, it's usually much easier to install required dependencies with Linux. I also recently noticed that some stuff, like compiling Rust, is much faster, but I haven't timed it.
I wonder what kind of support for development do you get? Honestly I've only had obstacles when I switched, for example the docker installation was much more complicated on linux than on windows+wsl. Even installing python was problematic because apparently 'upgrading it yourself can brick the system', at least if an older version comes with the OS?
And lastly it's the simple thing that pretty much all tools work on windows natively but on linux you have to find workarounds, which is definitely a problem when it comes to productivity.
So what are the benefits, what does linux have that windows doesn't in this context?
I don't think it was the point of your post necessarily, but I did want to mention a couple of things that might make the Linux switch a little easier - if not for you, anybody else reading and agreeing.
First, distrobox (https://github.com/89luca89/distrobox) is a nifty frontend for podman/docker that I think makes it a little more usable/accessible without having a PhD in devops. Basically helper scripts that create a series of simple CLI commands that let you launch a new environment, enter the new (or old) environment, do stuff in the environment, exit the environment. Keeps your core system's python separated from your development environment(s). Sacrifices the isolation qualities of containers in favor of usability, so probably ok for dev work on a desktop and not so much for production on a server.
Also, there are GUI applications for point and click management of distrobox - I use BoxBuddy, which is available as a Flatpak on Flathub, so again no interference with the core system provided it can run podman and flatpak.
Second, I know the php dev world figured out ways to abstract some docker complexity away with stuff like ddev (https://github.com/ddev/ddev) and lando (https://github.com/lando/lando). I wonder whether other languages have or will build that dev environment in a box abstraction on Docker/Podman/whatever.
It really comes down to what you're used to. If you use Windows tools then you already know many of the workarounds for Windows and you don't know the tools that haven't been ported there.
For example, you know not to use Python directly, but that you have to install anaconda instead, or whatever the current problems with Python development on Windows are.
The big obvious thing that you can't get away from is that you have to do things differently if you have develop for two different OSs with a view to deploying on Linux.
In particular support for shell scripts is crap on Windows. I could learn powershell or there's workarounds using WSL and a bunch of other stuff that I don't need to care about, but I'd rather not bother.
Depends on the programming language. Some are just as easy on Windows as Linux - sometimes easier. C#, Java, Rust, Go, etc. are all perfectly fine on Windows.
Some treat Windows as a weird second class citizen though, so for those I would agree: OCaml, Perl, Python, etc. However you can still use WSL for those and have the benefits of Linux without the downsides of broken hardware, terrible battery life, etc.