this post was submitted on 02 Sep 2024
62 points (78.7% liked)
Programming
17378 readers
585 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 !webdev@programming.dev
founded 1 year 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 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.