this post was submitted on 02 Sep 2024
63 points (78.9% liked)
Programming
17534 readers
246 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
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 use Linux in part because it makes building software easier.
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.
It's definitely faster. I have seen measurements from many people showing that Windows is slower compiling Bevy on the same hardware.
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?
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.
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.
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.