A whole lot of thinking goes into what distro you should use as a dev. Its not just about your preference or what you like in terms of the Desktop GUI, packaging system or any other aspects of the workflow but there are a lot of other things too. For example, the larger ecosystem of that distro and the kind of support you get matter a lot.
Personally, I use Ubuntu as a daily driver, so I'm a bit biased here! The best thing that I like about Ubuntu is that it simply works. Perhaps the Red Hat and openSUSE have also improved a lot these days but there was a time at least as late as the 2010-2014s when Ubuntu had an upper hand in hardware support and desktop finesse. If you had a laptop with a special kind of touchpad or a WiFi/graphic card manufactured by a "linux unfriendly" actor like NVidia or Broadcom, chances are that it'd simply give up on you with any other distro than Ubuntu.
And even in cases where they did work, they left a lot to be desired. With Debian, for instance, many default settings are simply unusable on a desktop. For example, font anti-aliasing is usually set to off (at least on Debian-XFCE when I last tried) giving your desktop fonts a weird look. Secondly, they don't even provide a GUI to control your touchpad settings, they expect you to Google about the issue and fiddle with the byzantine /etc/* config files yourself!
Not that I can't do that, but why should I when Ubuntu gives me a configured and polished desktop by default?
Coming to Fedora, the desktop never had any issues (especially in the GNOME version), but I somehow didn't much like their packaging system (yum/dnf). Ubuntu's apt install works seamlessly and comes with special tools like synaptic and aptitude to take care of advanced scenarios. To be fair, I didn't put much effort to learn dnf but I don't see the point of it unless I'm getting any long-term benefit out of it.
Another advantage of Fedora which is often touted is that they provide a "bleeding edge" distro which means the apps are all supposed to be the latest versions. But frankly, I've never felt the need for a super-latest package at all and in a few weeks time, the new release will trickle down to all the distros eventually anyway. Running a stable and secure version of an app is far more important to me than having the latest one.
Finally, what I don't like about Ubuntu is their support! The official bug tracker at bugs.launchpad.net/ubuntu is atrocious when it comes to getting a problem solved. The maintainers' attitude there is like that of govt. employees! But thankfully, there are some other places like askubuntu and ubuntuforums where you can find sane voices.
What distro do you use as a daily driver for programming? What are its pros and cons, and are you happy with it?
Top comments (103)
In my case, If I get
then the OS doesn't matter. I'm using ubuntu and windows 10 and they don't really make any difference.
The language tools sometimes have a deep integration with the distro. Your language package manager (pip/composer/npm/etc.) can have libraries or packages that could be incompatible with your distro's version. Besides, there could be multiple choices too as your distro might be offering the same thing through apt/dnf which the pip/npm offers. At that time, a distro that handles it gracefully matters a lot!
I agree that some language have better integration and support on *nix OSes, ruby comes in my mind and notable mention goes to node-gyp.
I'm usually doing nodejs, golang or java so this doesn't make an difference for me.
I think there is a trend away from deep integration with the distro nowadays. The preferred setup for Python is to use a virtualenv of some sort, and I think pip will install into the home directory by default now. Likewise with Node.js we use
nvm
to manage node versions, and the preferred way is to makenpm -g
install into the home directory also.In addition to that there is a move towards deploying software with Docker, precisely because it handles all of the dependencies regardless of the underlying OS (as long as the OS supports docker).
With the arrival of containers (including snap, flatpak and so on) I think we will see the underlying OS become less important in how we develop on the desktop. I think this is a good trend.
I think Docker at its core is a Linux OS without a desktop environment. You can even choose a distro, like Alpine or Ubuntu.
Little bit more command line tools and windows is a just disaster.
Arch because it's bleeding edge.
I did a whole week of top 10 distro testing and
Arch LinuxManjaro was the only one that worked out of the box on my system without having to fix things from the console. I have an RTX Nvidia graphics card which doesn't play nicely with X-Server, let alone Wayland.ArchManjaro automatically installed the proprietary driver for me and even the live CD / installer worked like a charm and used the correct screen resolution with NVidia drivers right away. So yeah, thumbs up forArchManjaroArch did that for you? That's insane.
Don't get me wrong, I love Arch.... But really!? Definitely not what Arch is known for.
Lots of these distros get a bad rap because of reputations built years ago when they were less complete.
Hmm, I wouldn't call it "bad rap"... it always just seemed to me like Arch was more being more hands on to configure your system exactly how you wanted it. Maybe that's changed since I switched to Fedora years ago. I used Arch for years before I switched to Fedora when I joined RH and I absolutely loved it. I learned A LOT, but I don't have as much time as I used to to make sure rolling release updates are compatible and won't break my system.
I dont think working automated hardware detection and driver selection takes away from the DIYness of it. It's still a minimal distro, you get a shell on install and build it up yourself, you just don't need to debug as many driver problems these days.
Arch is great as a way of gaing a deeper understanding of the OS, but as a realiable dolistro distro for your workflow, that's another matter. I do a lot of Java for Mobile and desktop because of javafx and Scenebuilder. Scenebuilder combined with a growing ecosystem of controls is a great tool. I recently did the install from scratch with Arch which was nice challenge. But I cannot get Scenebuilder to install! None of the AUR releases will compile, and I simply don't have the time to or patience to slog through build files trying to find the problems. Gluon only offers .deb and .rpm for Linux, so I tried debtap which also failed. Arch is for OS enthusiasts, but too unpredictable to rely on. Manjaro has a lot of good features but the rolling updates are always potentially a another slog through build files.
I'm going back to Ubuntu, which as the author stated just works' and apt package management is the best in the Linux world.
Do you happen to game at all? I've been having a lot of trouble with ubuntu. It didnt install nvidia drivers and I'm having issues getting them installed. Thinking about giving manjaro shot
Yes, I do play games, including VR games, but I use Windows 10 for that. I think Linux is not really the best platform for that, mostly because the whole range of games is not fully available. Not so much because of technical issues.
I've also had a hard time with Ubuntu on my machine. It kept freezing and crashing hard no matter whether I used the Open Source nouveau driver (with abysmal performance) or the proprietary one. I think at that time RTX was still a bit too new.
When I tested various other distros I noticed that good old X-Server was most reliable with my RTX card. Anything that ran on top of the newer Wayland gave me a hard time, and caused frequent random freezes only the reset button could sort out. That problem wasn't just specific to Ubuntu though.
I've been using KDE Neon instead of Manjaro for a little over a year now. Neon is based on Ubuntu, but it still allows you to use X-Server instead of Wayland. It doesn't install the proprietary driver automatically, but it was easy to install and replace the default "nouveau" driver.
I haven't had any graphics glitches, freezes or stability issues throughout that year
I see what you did there, you rapscallion.
That sounds cool! I might try Arch soon.
You may try Manjaro, this is distro based on Arch, but more user-friendly.
As it turns out, Manjaro is actually the distro that installed flawlessly on my PC and not Arch ¯_(ツ)_/¯
yea, that was weird, Arch install is just a console, installing it without a console would make you a god!. But as an Arch use you would have to praise yourself :)
In systems theory, the more bleeding edge your work, the more standardized and less bleeding edge you want your environment for that work. That way you can better assume an anomaly comes from the work, as opposed to the environment.
It's part of the reasoning behind the likes of Vagrant and Docker.
I think Ubuntu is one of the most consistent systems for developers, especially for things like this: github.com/ubuntu/ubuntu-make.
In Arch I always have problems with Docker and in Fedora/openSUSE unfortunately there's always something that doesn't work right for me.
But it's just my opinion and my experience.
That's true, I also use Ubuntu because of consistency. If you consider the LTS journey from Trusty (14.04) to Bionic (18.04), the only major change has been a shift from upstart to systemd (which was a global change in all linux distros).
But in Fedora, every little thing changes drastically every six months! Their very package manager has changed from yum to dnf!
The only problem I've had in Arch with docker is the way it overwrites (or inherits? I forget) resolv.conf unless you remind it not to, meaning your containers can't get out to any other web services.
I use PopOS which itself is based on Ubuntu. The reason that I use it is that everything works out of the box including graphics switching and seamless HiDPI based on monitor being used.
You can achieve this with other distros but I do not have time anymore to mess around with packages and config files, I just want something that works.
Also I dual boot Windows 10. Thanks to Docker and WSL it is the same development experience. The only problem right now is that IO is quite slow in WSL. Depending on how better WSL 2 will be I might switch to Windows full time. As a desktop experience it is way better than Linux and by having Linux inside Windows I will not be missing my daily tools.
In the end the best distro is the one you are most comfortable with.
You get a like for PopOS and a dislike for Windows.
I really do not understand people who hate Windows. I myself love Linux and enjoy Windows at the same time.
After windows 8 was released it's not about personal preferenses anymore. People hate Windows for particular reasons.
And these reasons existed since Windows 3.11 and every new version added more and more such reasons.
This is rather subjective. Pardon my tl;dr response here...
In terms of personal use...
...pretty much whatever distro you feel makes you more productive, requires the least hassle to install/configure/maintain, or whatever you want to learn and get familiar with.
I'm not bias to any specific distro for personal use. I started-off using Slackware in the late 90's, eventually moving towards Debian and RedHat-based distros with shiny package managers. This was a huge time saver!
Back in the late 90's/early 2000's, Slackware taught me the hard-way, having to hunt-down specific glibc dependencies and pretty much compile/re-compile almost everything from source, but it was a great learning experience when I had the time and less responsibilities.
The one stubborn thing that I do subject myself to on my own personal linux desktop, is using WindowMaker. I've been using this for years, and have customized a set of menus/themes/settings that help make me more productive than using something bloaty like Gnome, XFCE or some of the other more common desktop environments.
That's just me being stubborn, perhaps, but that's what I feel most comfortable using.
In terms of on the job...
I've worked at various companies that had all sorts of various policies on what we can use vs. what we should use, vs. what we MUST use.
Companies that mandate a specific distro, are usually of the rationale that you should develop in the environment that closest (if not directly) resembles that of production, which is honestly not a bad idea under some circumstances, despite being forced to use a distro that you would otherwise avoid for desktop/development usage.
These days, that's a bit archaic, though, especially with everything going to green/blue deployment and containers on VMs in the cloud.
Companies that DO NOT mandate any specific distro for development, are usually more appealing to the common developer, as we don't like being chained to our desks, much less being subjected to some authoritarian marginally-dictated mindset that hinders our freedom/abilities to explore, create and produce efficient code that we can enjoy developing and maintaining.
The problem that I have with Fedora, is the release cycle. It's a continuously-evolving development distro and a rapid-release cycle, so what may work today in this cycle's release, may not work the same 6mo from now in the following release cycle. Fedora 15 was a great example of that, when everything went from sysv to systemd. This wasn't necessarily a bad thing, but in terms of upgrading, did create some headaches.
At least with Ubuntu, the LTS releases are generally stable and painless to migrate to the following LTS. Not always, but more often than Fedora, imo.
If you're developing for EL7, then developing on a distro that's more up-to-date is just going to lead to gnashing-of-teeth. If you're developing to deploy into another context, use something that better aligns to that context.
Instead of making the tail wag the dog, the better solution is to push their company into modernizing their stack. God knows how many vulnerabilities have been around since EL7 and instead of invoking large costs in patching those specifically for EL7, simply upgrading to something like Ubuntu LTS will be a better solution. Whatever the cost of that transition may be, it'll be far less compared to maintaining a woebegone OS like EL7.
That's great if you work in an industry that doesn't have legal mandates to comply with. But, if you are working in such an industry, your options are kind of limited. Even Ubuntu LTS's security-certifications tend to lag the LTS's initial release by a couple years.
Uhm... what?
No. RHEL8 has been released just 6 weeks ago.
Seems like you used Fedora for 5 minutes in a VM and decided to write a blog about it. If you want to compare distributions, then put some effort in it. This is really a ridiculas read for any experienced Debian/Ubuntu and especially Fedora user.
I weep for you, silently.
It seems pretty obvious that you've never used distros that are not Debian based if you find
apt
to be good and don't likeyum
/dnf
, or find them difficult to learn.dnf search thing
dnf install thing
What else could you possibly need? In addition to doing what you'd expect them to do on apt, they also do not randomly break your system, put your
/boot
so full of old kernel images that you can't install new ones without manual cleanup, or randomly decide to uninstall your kernel for some "updates". Also pretty sure there's GUIs to all of this so you don't have to learn any commands if you don't want to.For me personally there is no Linux distribution that provides a mature enough desktop environment for serious work.
When I need to get work done, I can't waste time constantly figuring out:
snap
and them making things incredibly difficult to debug and fix when you finally find out what's preventing the applications you need from starting upOSX on the other hand isn't available on decent hardware, and as an OS is just too limiting - can't even disable mouse acceleration, or control volume per application. I don't understand how anyone tolerates that dumbed down joke of an OS.
Seems like I'm stuck with Windows, though at least the development experience is constantly getting better on Windows with better terminal emulator software (e.g. Alacritty, ConEmu2), WSL helps with some things though due to CygWin I rarely need it, and widely known tweaks remove the annoyances like unprompted reboots for updates.
It depends on your goals as a developer:
Mostly, if you have a choice then start with anything and decide what you hate about it. Also install something like virtualbox and try as many distros as you have the time/tolerance for.
For the most part, I'm a "least common denominator" kind of developer. So I will generally code for whatever is being supported by RH LTS and Debian Stable. I use MX Linux for my development, debian for server only things, red hat derivatives when forced to do so. The reason I don't use Red Hat is a personal choice based on community and personal experiences.
Hello Karl, im using kubuntu right now, think to try mx, im work in php development, can i know what apps or package you use in development?, i just wanna know is it compatible with ubuntu...if is it true, i'll go with mx
@ahmadhasyim,
I haven't worked on php directly in some time. However I see no reason why MX would hinder your development. I will try to list some differences and other attributes -based on latest distros:
Ubuntu is based on Debian 10 'testing' repo
MX uses XFCE 4.14 Desktop by default
Ubuntu uses a variety of Desktops by default
MX uses ramdisk and is EXTREMELY fast on modern computers (with desktop)
Ubuntu is geared toward medium to high end desktops -It's simply slower (with desktop)
MX DISABLES systemd by default
Ubuntu is FULLY ENABLED systemd
MX has excellent "respin" custom system replication (out of the box)
Ubuntu has zero "respin" system replication (out of the box)
MX is not supported by a large corporation and fairly new to being popular
Ubuntu is well supported by a large corporation and is a standard in the industry
MX uses about 70% less memory on new systems than Ubuntu
Ubuntu loads a lot of convenience services on new systems that some people find useful.
Here's the slant comparison URL for the two. I will say, I HIGHLY disagree with the "Cons" of both distros because the information is just simply FALSE (for both) en large.
Both distros are based on debian. ANYTHING you want to do in Ubuntu can be done in MX and visa versa.
I prefer MX because it is a simpler, smaller system initially that I can easily add files via 'apt' as needed. Functionally, I see no difference between MX and Ubuntu. The difference to me is in perfomance -MX is the winner there hands down.
With that said, I use the following things most often (i'm somewhat of a minimalist):
In addition, on a 2 core 3.4GHz desktop w/16GB ram, I also run a full hosted web server (no slowdown) via docker with:
I have tried with and I can not easily run all of these services with ubuntu or mint. but MX runs every thing for me.
I hope that info is helpful.
The bottom line is that you will want to use what suites you best :D
Whoaa... Thank you for your answer,
I've been considering mx cause there is some service causing memory leak in ubuntu, im use mintt for 2 years, ubuntu around 6 months but still have those problem... Sometimes it takes 8gig ram when running firefox, vscode, terminal, and music player... Is there any difference between sysvinit and systemd im context of usage, like service start, systemctl, etc? Im just bit afraid
Some comments may only be visible to logged-in visitors. Sign in to view all comments.