Cover Image Credits:
https://onehack.us/t/which-os-you-use-windows-linux-macos-post-here-discussion/65891
Hello Dev Community!
I am currently using macOS as my operating system. I have been told that Linux is better than macOS and Windows for programming. If you use Linux, I would like to know the pros of Linux and the limitations it has. Also, if you would recommend using Linux, should I dual boot or use something like VirtualBox?
Thanks for your help.
Top comments (59)
I never understood why to pay so much money to have macOS when you can have a better experience with Linux. Exception is when you develop IOS apps.
My suggestion would be to have a pc host a linux server. Then you can install everything docker/dev related on that server. I have code-server (vscode) as a self hosted (docker) service so i connect to it through the browser on my chromebook and develop. You can use containers like Guacamole to RDP into your server if you wanted to have an accessible desktop. When i learned about docker i wrote down all of the applications i install on all of my computers and looked for a self hosted docker alternative for those applications. Now i do everything through my chromebook, rpi, or android tv box.
I used to be a windows guy who sometimes utilized linux, but now i 100% prefer linux. I prefer to use the terminal to install applications instead of using graphical auto installers. I do have to use windows 10 for work though, it's not so bad when someone else does all the windows-like upkeep. (defrags, updates, etc)
I'm very similar! Pure Windows background, web developer.
I figured out all the work-arounds to get LAMP sites working on Windows that errors didn't bother me. But my surprise when I deployed a LAMP stack natively in Fedora, it just freakin' worked! 6 months later, I'm now using Docker, and the OS doesn't matter to me. It's really freeing!
Of course, using linux was a crazy challenge with my windows background. Once I got comfortable with the linux command line (I've been using powershell), Aliases became the rubber band to allow me to do all the things I'm used to without affecting anyone on my team.
Currently, we switched from Fedoras to Mac in the past few months. Macs are weird. But where it took me 1 year to go from Windows -> Linux, it's taking me like a week to go from Linux/Windows -> Mac. I still fight with Mac keyboard shortcuts.
Thanks for the insight, I will definitely try Linux and see how it goes!
I have been using Linux (primarily Debian and Ubuntu) as my primary operating system for about 10 years now. My current hardware is a Lenovo ThinkPad T460s. Debian 10 is the only operating system on the machine (I got rid of the Window's 10 install upon purchase).
The biggest limitation I have found is it is difficult to use software that has only been written for macOS or Windows - like the Adobe suite, Kindle desktop, or video games. Since I don't, this has not been a problem for me.
Even though Linux is my primary OS, I do all of my development in virtual machines (using the native kvm/qemu). This lessens the probability of me doings something catastrophic to my machine. I do regular backup snapshots of each VM for easy recovery.
I would recommend that before you make a decision, you set up some VMs with different Linux distributions and play with them. There are many options for desktops and configurations. I am sure you will find something that meets your needs and desires.
Thanks for your insight! I will definitely set up some VMs with different Linux distributions before going full-on Linux, and then find the one which I like best.
I think with linux you can learn a lot how to using command line to manipulate os and network also setup your own server, etc... due to nowadays many host cloud service running on linux distro.
I am using macos also linux dual boot i think it would be great for me because i am also programing with ios device so only macos can support me for that.
Buf if you want to practice i think you should use vm to run on it because it will take lot of time to dual boot system and some times it will have some issues need you a day to research so my recommendation is using vm for practice and using dual boot when you master it
Thanks for your input, VM is certainly on my mind! Any tutorials you would recommend to use VM to run Linux on YouTube?
I am not sure which tutorials suitable for you. But if you want to learn linux deeply i suppose to install arch distro. Its the best way to learn linux and read the book relevant to LPIC1
What an interesting question! I'm a long time Linux user (since 2009 more or less) and was wondering to try MacOS. Now, I love the freedom Linux provides (like, my workflow is really mine) but there are downsides and slippery slopes.
@hb I have a question for you: why change? What are you searching for in Linux? I think the switch (and which distro to target) depends a lot on the answer
I have heard so many great things about Linux: the customization, security, transparency, cost (free), it's open-source, and just overall makes you understand the cloud and different dev-ops more (host my server on Linux, my OS is Linux). I am searching for a distro which is easy to get into (not super complex), has all the best features of Linux, and has a customizable look. Hopefully, you can help me find a distro which suits my needs best! I will not switch to Linux 100%. I will try out different distros in a VM, and if I like one then I will dual boot! Thanks for your input.
You can derive most of the Linux distribution you see today from common ancestors:
More details on the Linux distro history can be found on Wikipedia.
Apart from the OS, you should have a look at the Desktop Environment you would like to use, I suggest to look at the Wikipedia page for a general overview. Consider that Ubuntu has lot of derivatives pre-made with a Desktop Environment, something that other distribution do not provide (you can always do it manually, and I suggest you to do it, but not on your live system 😆).
Good luck and have fun. That's the most rewarding thing of using Linux.
Wow, thanks for all of this information. I will make sure to have fun when trying Linux! So far I have tried Ubuntu and loved it, I just need more performance. I might dual boot soon!
I recommend using windows subsystem for Linux since it combines the best of the two worlds. Since it has all the functionalities of windows so you can run apps like sketch and Microsoft works, but it also has all the advantages of using Linux for programming
I don't recommend it. As a full time Linux used being forced to work with Windows I find that WSL2 a poor choice to run Linux, which also has performance problems, and yes, I'm talking about the WSL2. Docker containers take an eternity to be unpacked on an i5+M2. All the expensive operations are incredibly slow there.
Also it's too buggy and not to talk about the horrendous CMD/PowerShell/Windows Terminal with their shitty usability.
So, IMO, the WSL2 doesn't offer a usable environment for Linux users nor to newcomers who want to try Linux.
I strongly recommend the other side, using Linux instead of Windows and an VM with Windows if needed until you figure out how to run your programs under Wine (most of them just work out of the box).
Thank you! same experience here, people who think WSL2 is good enough are just plain ignorant who have never used linux as primary OS.
You can't have guake terminal, you can't have the workspace which makes it so much more productive, WSL2 is only for people to say "I've got a bash on my machine", honestly I see little point on people using WSL2 as alternative, give us actual workspaces, guake like terminal, then we talk.
Yes, the drop-down terminals are a missing feature I personally love. I'm using Yakuake and I use it every time for short tasks.
Also, I use a lot the links detection (I work with apps that require OAuth2 and throw links at the terminal) and the lack of this feature on the "new" Win Terminal is driving me nuts.
And workspaces is an essential thing, Windows have them but honestly, they suck a lot.
Windows and Linux (with any tooling, also the basic suckless tools) are two separate worlds, where Linux is by far the best one.
Different people have different workflows.
I don't like these dropdown terminals because, well, I always have a maximised, tabbed or tiled terminal available anyway.
For this, WSL with Windows Terminal is fine. Yes, it's a little slow when rendering, but since my workflow is to use a browser and a bunch of SSH connections, there's no issue.
Workspaces are not an essential thing. They're something that some people use and some people don't. MacOS and Windows now have native workspaces, but the majority of people don't use them or even understand how to work them.
It's fine that you like certain features, but they're not essential, and they might be wholly inappropriate for someone else depending on their preferences and the type of development they do.
These are the type of responses I absolutely hate, "it's not important because I don't use it".
first off, using Linux based OS won't force you to use these, you can still have 1 workspace, and 1 terminal maximized window, but they ALLOW you to be able to work on whatever workflow you want.
secondly, if you read my comment you'd understand, I know mac and windows have workspaces, but that's about it, they added to add it, but nothing about it makes any better. There aren't any shortcuts to move to another workspace, or customize horizontal and vertical workspaces, moving one app from one workspace to another workspace etc.
Here a counter unpopular opinion,
Recently, I switch my personal laptop to Windows, after running Linux for a month. Before I had an old MBP that last me for about 12 years. I did start using Linux in 1999, and since then I run all of time from time to time.
I got a new job recently and asked first to have a Linux laptop, but I changed my mind three month into the job and ask to switch back to Mac.
Here some things to consider:
First, Mac OS has a consistent key-binding across all the system. IMO, a more efficient one for programming. This is what I miss the most when I’m not on OS X.
On Linux, it's pretty inconsistent. On the terminal, you have the same emacs-like as you have on OS X. But has soon as you're in GUI mode, it's a windows-like mess. For example, each application will behave differently with
ctrl+w
. Sometime copy/paste isctrl+c/v
but other timeshif+ctrl+c/v
. On OS X, it's all the same, everywhere.Second, if you use a lot the built-in keyboard and trackpad, a MBP trackpad is just incomparable. The precision, palm detection, two-finger navigation is horrible and frustrating. You have different options to configure it, but even after spending many days trying to get it working, there was always something short. If you plan to use mostly a mouse, this point is not valid.
There are other small issues I experience at home as well as with my work setup. Shorter battery life, broken suspend/sleep mode, screen recording quality issue, dual monitor + screensharing, update that broke working stuff (yes still in 2020, like sound, recording, resolution), no resume session.
Nevertheless, if you never run Linux as your main OS, I’ll encourage you to do so. You will learn much, and you will be more at ease later when you deploy on Linux and work with docker, from OS X.
Thanks for your input. I don't plan to run Linux as my main OS unless I really enjoy it. I will play with different distros in a VM and see if I really like one. If I really like Linux, I would dual boot with macOS (macOS costs $$$, got to save it).
For some of the practical reasons (for backend development):
Docker helps with this on mac, but from my understanding Docker runs on a linux VM in mac so that would be a layer of overhead. The file structure and some of the way software gets installed on mac is different. This means that you may have to understand and keep track of two ways of running things like webservers. Also if you are not using docker with a compiled language you may have to keep of track of the compilation target and any quirks that might bring.
For some more opinionated reasons:
I, personally, am not a fan of the macOS UI. The defaults seem to get in my way and makes it harder for me to be productive. Additionally, I have not found many ways in the settings to bring it to a "good enough" level. There are a variety of linux desktops out there, and many of them have very different approaches to the UI. Whether these are better or worse than the macOS UI is a matter of personal preference.
Thanks for the insight. I have never thought of the Linux UI vs the macOS UI. I have heard from a lot of people, and you that Linux is much more customizable. This is why I'm convinced to try Linux!
I'd argue that the Linux UI is more customizable if you WANT TO CODE IT YOURSELF.
Since you mentioned your background is on Mac, you may find a lot of linux distros just being fugly and cumbersome. (I'm speaking from my own experience.) Mac is crazy slick and has so many quality-of-life pieces. For me to jump into Ubuntu & then Fedora, I was pretty annoyed at how 'old' it looked and felt. And I wasn't going to learn how to fix all the things that I took for granted out of the box.
If you're feeling the same way as I did, check out Elementary OS. It's a bit more than a UI flavor of Ubuntu - but a bigger rebuild. That might give you a jumpstart getting your feet wet. Then, you can move to other flavors of linux. For me, I went Elementary OS -> Ubuntu -> Fedora -> Elementary OS again! (I still use fedora at work!)
Thanks for the tips! I will definitely try out Elementary OS. For the most part, I'm fine coding the UI myself, as long as it's in Python, Javascript/Typescript, or Dart, but I don't think they use those languages...
Depends on the kind of programming you're doing.
Me, I do game development, and Unity doesn't support Linux. I'd have to do it inside a VM, or use some other workaround. I'd also need to do the same for Photoshop.
At that point, might as well just not use it, especially when its perks -- good access to various packages -- are wasted on me.
Thanks for your input. I don't plan to switch to Linux completely, I just want to do it inside a VM. I do mostly full-stack/ML development and from my knowledge, it's all available on Linux!
I don't know how right I am but the stability and the ease that a Mac offers over Linux is way too much, considering the Mac hardware. Hence coding on a Mac hardware is way like breathing on fresh air. Also, almost all the features of Linux are there on Mac.
It's true a Linux gives you a lot of power on the choice of tools and customisation of OS. But for only coding, can't be better than Mac, unless you have specific needs
Thanks for your input. Some people say that Linux is much better, others say that macOS has what Linux offers. I'm going to try Linux and see if it suits my needs (as you stated).