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?
Oldest comments (102)
I use ubuntu for the same reasons: works out of the box.
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 forArchManjaroThat 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 :)
Arch 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.
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 am using Ubuntu (Budgie) because it simply works indeed.
Nevertheless, I found that elementary OS is pretty good as well. It works everywhere I tried it (HP Spectre, Macbook) and it has some pretty good apps and tools that are developed only for that distro.
And it is really pleasant to use.
I tried Fedora as it is really popular among developers but I found that finally Ubuntu is better for my use. It has a lot of developer tools (if there is a tool on Linux, there is always a Ubuntu version). Snap apps are pretty useful as well.
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 am using LinuxMint 19.1 Mate Edition.
Try Windows 10
No thanks.
I personally use Ubuntu because many webservers run it & I'm a web dev. I don't need containers or VMs... I just run my stack directly on my local machine.
Second that. The webdev world has gradually started to settle on Ubuntu server, development becomes quite seamless when you know that your app will run on a particular Ubuntu LTS version, so you can setup your local environment accordingly.
I agree to a certain extent but you can't dictate what server os a client might use so I rarely rely on my dev machine setup. When I develop in LAMP stack I use XAMPP. Docker for anything unexpected. Currently I'm running Ubuntu 16.04 LTS in my dev machine ( which came preinstaled from Dell and I'm super-lazy to install something else 😄 ) and I'm developing 2 web apps. One will be hosted in a Debian server and one on a Ubuntu 18.04 LTS.
Surely, you can't dictate but if everyone follows a standard distro for server hosting (or at least a few stable variants like ubuntu/debian/centos), it makes the dev's and the tester's lives easier! As your personal desktop driver, you are free to use anything ranging from slack to void to elementary, of course.
I couldn't agree more on the standardization part but it's an idealistic world view. That's why I made the points I made. Who wouldn't like a seamless experience everywhere :). But fortunately we have VMs and Dockers ;)
I weep for you, silently.
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.
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.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.