
Ask HN: What are your biggest frustrations with Linux development? - buildops
For those of you who develop using Linux, what are your biggest frustrations?<p>Builds? CI? Testing? Lack of good IDEs? Lack of visualization? Dev tools? Refactoring? What are your challenges? (and of course what environment are you using and how does that affect it?)
======
r3bl
I have to say I'm pretty satisfied, even more than I was before when I was
using Windows.

Everything seems easier to install and I don't need gigabytes of space to
build my environment. (Visual Studio, I'm talking about you!) Working with Git
and gcc was as easy as it can get right at the beginning of my switch. Back in
Windows days, I was primarily using Dev-C++ and a GitHub desktop client (which
I really don't like btw). Now, I'm just using Atom with a couple of third
party extensions.

Although I have to say that I kind of miss the easiness of building desktop
applications using Visual Studio. I haven't found a single IDE that allows me
to create forms with just a few clicks like Visual Studio does. I stopped
paying attention to GUIs for my programs primarily because of that.

~~~
oneweekwonder
If you are willing to do Qt/C++, QtCreator can easily create forms, the same
way as VS.

~~~
giancarlostoro
I have to mention it's not as straight forward last I tried it, but it's still
usable. My lack of C++ understanding has kept me from really getting into Qt /
C++ though.

------
vhf
Lack of good hardware/laptops.

I had a Lenovo X200s for over 4 years and finding a viable replacement is
almost impossible.

I am saddened by the fact that there are no i7 / 16GB / highDPI with decent
keyboard at the price of a 2015 Retina MBP.

~~~
djent
Try a 2015 Dell XPS 13. Fits all your specs, also has a developer edition with
Ubuntu already installed.

~~~
jeletonskelly
Developer edition is not out yet... I thought. I got one a couple months ago
and run Arch on it. Support for the microphone hasn't made it into a kernel
release yet, so I thought they were waiting for that to release the developer
edition.

Also, it only supports 8 gigs max right now. I'm sure a 16g single dimm will
come out eventually, so you could upgrade it yourself.

~~~
beefsack
I believe the RAM is soldered on, upgrades may not be very feasible.

~~~
jeletonskelly
Oh no... you're right. I guess I'll just convince myself that 8GB is TOTALLY
enough :-(

------
scalesolved
I love working on Linux, running Ubuntu 14.04 LTS on a Lenovo S540
(lightweight, 16gb ram,i7,ssd). The biggest pain point for me are mainly using
tools that other parts of the business want to use like:

Slack -> No Linux support, Zoom (video conferencing) -> Early beta support,
1Password -> I use last pass instead.

Macs have really dominated some areas of the tech scene especially in the non
engineering sections of the business, thus collaboration tools and such seem
to be Mac orientated or Mac only.

In every other respect I'm far more comfortable and productive on Linux.

~~~
Foxboron
But slack do have Linux "support". You can just use the IRC gateway through
any Linux clients, or look up a project like slk,
[https://github.com/drikin/slk](https://github.com/drikin/slk)

There are also projects that wrap around 1Password.
[http://www.lucianofiandesio.com/1password-in-
linux](http://www.lucianofiandesio.com/1password-in-linux)

It's far from perfect. But the great thing with Linux in my opinion is that
there are always alternatives.

~~~
scalesolved
Oh yeah, my only minor grumblings against it are lack of one or two clients, I
think with Slack's case I'd like to see them make an official client, with
$160m in funding I'm sure there is leeway to get an official linux client in
the works. Thanks for the slk link, gonna check it out! :)

------
staticelf
What I think really lack in Linux is:

\- Good hardware that is nice to use (look beautiful) and works well with
Linux.

\- A great IDE that doesn't look like shit right out of the box. I know many
can be configured and tampered with, but I simply do not enjoy that enough to
go through the pain.

Otherwise, my biggest pain and why I definately go back to Windows is that I
can't play my games on my machine. Many games still only work on Windows or
works much better on Windows due to bad graphics drivers.

I really like Linux, I always use it as a server or to host stuff. But in the
later years of my life I simply get too frustrated (often with small stuff) to
keep using Linux as my main desktop operating system.

At work I use a macbook because it has nice to use hardware with desktop
software that is more polished than any linux distro but still keep the unix
feel.

~~~
nextos
I think the trick is to cherry-pick laptops. There's only a handful of decent
laptops in the market that run Linux very well (drivers in kernel, perfect
powersaving, ACPI events from battery, etc).

My MacBook Air 11 inch 2012 (formerly used by Linus) is pretty good. So were
some Lenovos like x220. These days Chromebook Pixel or Dell XPS hold some
promise. Also cheap Chromebooks like some Acer and some Asus. I have my eyes
on cheap ARM machines for their capability to run blobless (e.g. Asus C201).

~~~
collyw
The keyboard is missing keys (like delete) and there is no button on the
mouse. Small things but pretty annoying if you are used to clicking the middle
button for pasting. And the battery seems to last about half of the time
compared to OSX

~~~
nextos
I get an _extra_ 10-20 min in Linux vs OS X thanks to powertop tweaks
implemented via udev rules and a minimal desktop with a tiling WM and no
desktop environment.

But I agree on the annoying omissions. I hate no dedicated insert, although
shift + backspace works well.

------
forgottenpass
The debugging workflow is a mess.

The visual studio debugger is great. gdb and various front ends for it are all
various levels of not so great. There is a better featureset in gdb for the
very skilled users to do tricky things, but it's still a bear to learn and get
conformable with.

Putting the .build-id directory on the network and getting subsitute-path
pointing at the right location to debug a continuous integration build from 16
months ago? The hardest part is happening to learn those features exist, and
the legwork to make it quick and easy to use is PITA too.

Some developers... they just want to open the visual studio debugger and smash
"step over/into" until their code works. This isn't the best approach to
development and they should probably do a bit more "sit and think about the
code" in their development. But professionally I have to support this
workflow, it's much smoother in VS than when targeting linux. And it's not an
excuse for bad debugging tools either, sometimes you do need to spend a day in
the debugger to solve things.

------
elektronjunge
Development tools on linux continue to be great. A visual studio quality ide
would be nice, but realistically I'd continue to use vim and the terminal.

What really irks me is the desktop environment situation. I haven't had a
linux install in a couple of years and it seems that all of the desktops have
gotten worse in the last few years. Unity continues to add on terrible
features and follows the similar ui antipatterns and gnome 3 has. KDE4/5 are
decent but very heavy. Xfce and lxde are great but you occasionally run into
some weirdly missing features (no font manager -- why?) that make you pull in
gnome/kde and question why you picked a lightweight desktop in the first
place. I'm not sold on the tiling window managers, ya the tiling is nice, but
they look terrible, require way too much config, and sometimes I just want to
use the mouse damn it.

~~~
uxcn
Linux Mint might be an option. It's essentially Ubuntu, but it swaps GNOME for
Cinnamon which does away with a lot of the more recent GNOME changes.

------
uxcn
I prefer developing with Linux. There are generally more tools available than
Mac and Windows. Some of the ones I use are xmonad, tmux, vim (nvim), ag, ycm,
clang, gcc, gdb, cmake, make, ninja, perf, valgrind, strace, etc... Compared
to Windows, even just having a decent shell with coreutils is huge. If there
is something that a tool doesn't already do, I can generally combine other
ones to do it. For example, _sed_ can handle basic refactoring. It's also
generally easier to install new tools through the package manager (I use
Funtoo).

I know a lot of people tend to prefer cleanly polished IDEs, and I do use
eclipse and eclim for java development, but normally IDEs tend to get in the
way for me. As for the specific questions, building definitely isn't an issue
and there are plenty of cross-platform build systems when it's needed.
Continuous integration is usually handled separately on a build server
(hudson, jenkins, team city, etc...). In fact, a lot of the collaborative
tools for things like continuous integration and issue tracking are mostly
usable via web applications (bugzilla, jira, etc...).

My biggest frustration is when tools that aren't usable on Linux get
standardized on. Outlook is the easiest example, but for anything where it's
absolutely necessary it's extremely easy to run a virtual machine with kvm and
libvirt.

~~~
buildops
Are you having issues with speed? You can't accelerate Scons or most other
Make tools, and CI is still slow when running thousands of tests.

~~~
uxcn
No. In most scenarios, make can parallelize builds and where compiling and re-
compiling are still bottlenecks distcc and ccache generally scale. LLVM also
tends to compile faster. For larger projects, cmake can also theoretically
generate a configuration for ninja (faster than make) only changing the
command line.

As for testing, I haven't really seen bottlenecks with integration and unit
tests. If anything, running continuous integration on Linux should be as fast
or faster though. I tend to use googletest where I can.

------
zoner
I'm mainly developing PHP applications (Magento, Symfony) And I found Linux
much easier. Back in 2000 (ish), when I switched to Linux the biggest
confusion was the different format of configuration files and scripts. In
Windows, I get used to .ini files and .bat batch scripts. When I switched to
Linux (well, it was more like a slow process) I was confused about this.
Fetchmail config format, the apt sources tree format (which seemed to be an
.ini) and all the config files in /etc was all different. I finally managed to
get my emails fetched and sorted to different folders based on topic and
sender, using Fetchmail, then I was happy to read them in Mutt. The UI looked
terrible (well, it was text after all) so I tried Balsa and used it for years,
then Sylpheed, Claws Mail, still backed with Fetchmail. I can imagine that the
different GUI libraries would confusing others, but I always managed to sort
my installation to use only one. If I had KDE, I installed only KDE or at
least Qt programs. If I had GNOME, then so that it. Nowadays, I use AwesomeWM
mainly with 3 or 4 software only, on 3 screens: the first screen is the
terminal with tmux, the second (middle) is the browser, Thunderbird, the third
is Sublime, so I don't get nervous about installing different libraries.

With all of these, Linux felt better than Windows and it's openness and
community support encouraged me to discover more and more. Back in those days
I really tried every programming language I could: Java, Ruby, C, C++ and I
had no confusion learning and using these on Linux. I was only confused when
sometimes I had to switch back to Windows. The lack of documentation, missing
libraries, unpredictable crashes on software upgrades (which came from
different sources, absolutely without automation, manually running
setup.exe's) and different UX, unsought taskbar icons really annoyed me. Now
if I sit in front of a Windows PC, I feel it's just an useless gadget.

Linux was the cause I became a software developer.

I have only experience with one IDE, which was Netbeans. I used it mostly for
developing Rails applications and I found this was the only IDE which does not
get in my way. I just can't get used to PHPStorm today and I found Eclipse too
slow, so I'm using Sublime as my primary editor now. Before it was Geany,
gEdit or just Vim. I was never able to learn Emacs, but probably it's my fault
:)

------
towb
I did the switch from OS X to linux about six months ago and I am pretty much
using the same tools for front and back end web stuff. Then there is a huge
plus for all the free new knowledge you get from using linux as a "power
user", so if anything, the switch made it easier to deal with all kinds of
things.

I suppose the question was more about low level development than in my case,
where tools depend more on the system it's run on, but for me it has only been
positive.

------
kurjam
Don't really have any frustrations to be honest. All my personal projects and
stuff I do for fun (both mostly in ruby) I do on ubuntu 14.04. Use VIM, a lot
of plugins and some custom CLI tools. Have never tried developing on Mac,
though so maybe I just don't know what am I missing (windows isn't even a
thing for ruby devs. And for good reason).

Only thing I'm kind of missing/sad about is lack of games on Ubuntu. Upside,
though, I won't get lost in a "quick 20 minute brawl to clear my brain" that
never lasts 20 minutes....

For sake of honesty, I do my daily job on windows. Stuff I use there is
awesome. VS is nice, Windows domain works well enough and lync, outlook,
fiddler, slack etc. are all nice. If, for w/e weird reason, I had to do my
daily job on linux, I would be sad.

But most likely, I'm not frustrated with linux because I chose to use it for
fun etc. If, in any point in my life, I would have been forced to use linux,
I'd probably find a lot of problems with it.

//EDIT And uhm. I've never really had any problems with linux and hardware.
For personal stuff I still run an old thinkpad t420s which hardware gets along
with linux a lot nicer than it did with windows 8. Touchpad acts a bit better,
touchpads 3rd button actually provides some nice functionality and most
importantly, gsm card worked out of the box (something I never got up and
running on windows 8). Once more, for sake of honesty, it shipped with windows
7 so maybe the drivers provided for the gsm card aren't compatible with win8.
who knows.

Never had any problems with my desktops running Linux nor my previous thinkpad
either.

------
navinsylvester
No gripes since Linux is by far the best development environment for most
technologies. I am running Ubuntu desktop(Gnome) vms inside my macbook pro and
macbook mini but going to install Ubuntu on metal itself. I like apple
hardware not much their OS(especially for development). Use quite a handful of
Ubuntu server edition without GUI for development and testing too. CLI can be
as ease for development but with right tools and config.

Tools: vim/nano, curl, grep, rsync, find, mitmproxy, autossh, tar, syslog,
seige, top, wget, netstat, lsof, sed, df, du, ifconfig, iptables -L, ping,
dig, traceroute, strace, screen, tcpdump, telnet, history

Dev setup config: pathogen.vim, ssh custom host config, ssh keyless entry, ssh
tunnel, .bashrc/.bash_profile, alias, /etc/init.d/, .gitignore,
vurtualenv(python), vagrant, docker, bash script for automation, supervisord

As a desktop user - I am a big fan of Gnome but just don't see GTK going
anywhere. My bias towards Gnome is due to it's design principle. Wish for a Qt
Webkit like layer on top of Gnome for native application development. For some
reason KDE seems cluttered to me but to their advantage they have Qt.

------
andrewchambers
Personally, I can't find a text editor I like. The closest I came was acme
from plan9, shown here
[https://www.youtube.com/watch?v=dP1xVpMPn8M](https://www.youtube.com/watch?v=dP1xVpMPn8M).

I would love to see an editor which clones acme, but follows a few of the
modern ui conventions.

------
bloodorange
* Having to make efforts to keep the system working smoothly after regular system updates

* Hardware vendors not showing much love

~~~
hga
I use server/workstation parts for systems (not a laptop guy), so that's not
so much of a problem, but can still be an issue with e.g. having to use a
newer kernel that's not getting security update love.

The update issue can be problematical with not all that many distros providing
Long Term Support. systemd + Debian's short term support, one year after a new
version plus a volunteer effort starting with squeeze is prompting me to
abandon it and its famed stability between releases. I'm trying Alpine for
Xen, with probably the current LTS Ubuntu without default systemd for
development and who knows what else on VMs.

Ah, yeah, the chaos in GUIs is not good, e.g. Gnome going off in a bogus
direction after version 2. I'm happy enough for now with Xfce, but its got
less mindshare.

------
captn3m0
1\. Fragmentation. Getting something as simple as a bluetooth speaker is a
challenge depending on which distro you are on.

2\. Package management. Again, a package may be available under vastly
different names or config depending on what your distro overlords decided

3\. Second class Citizens. Games and software that I want to use is very often
never available for Linux. Companies that used to develop are dropping it
(ynab). Indie game devs are picking it up, but companies like GitHub are still
to even commit to a linux client. Google Drive for Linux was announced more
than 3 years back to be under development, but is still unreleased.

I still love Linux, and refuse to switch to Mac (despite almost everyone
around me doing so). This is mostly because I love how easy and
straightforward it is to develop in Linux.

------
axle_512
From my experience several years ago:

Distributing binaries for Linux was complex. libstdc++ compatibility across
distros or different versions within a single distro wasn't great.

(Compared to Solaris, it seemed like libraries were always backwards
compatible. Running old binaries always just worked.)

------
danwakefield
Using xubuntu, switched from crunchbang a year ago after a drive failure.

It has some weird problems like forcing gnome-keyring-daemon to run which
breaks ssh-agent. The only fix I have found to to create a wrapper script that
always disables its ssh component.

I sometimes get focus issues requiring me to tab through the windows to
refocus the correct one.

I dislike the practice of littering my home directory with dotfiles. I prefer
them to be put in .config. I have 10 directories in $HOME and another 85
dotfiles/dirs there at the moment.

New ubuntu versions start you out with capitalized folder names which is
annoying.

NetworkManager often bugs out. displaying in a tiny one line box you have to
scroll through or disabling wifi when i attempt to start a VPN connection. I
cant be bothered to learn wicd though

------
PatKelly
I develop applications in C++ on Linux and Windows. On windows I can enable
heap tracing and have leak detection included in my test cases (Google
mock/test). On Linux I need to run my app under Valgrind for leak checking as
a separate process.

~~~
padenot
You want to make ASAN builds (simply build with clang or gcc > 4.8 with
-fsanitize=address on the command line).

Then you can break in a debugger, and do some tricks, explained in this page:
[https://code.google.com/p/address-
sanitizer/wiki/AddressSani...](https://code.google.com/p/address-
sanitizer/wiki/AddressSanitizerAndDebugger).

This will also detect any memory trashing or the like, while being quite fast
(compared to valgrind, of course). Then if things are really weird, you can
use valgrind.

------
karka91
Unstable virtual box networking on my arch machine that requires occasional
suspend and resume of a vm. No good looking and stable gui client for mysql.

I've been doing dev with linux for most of my carrier and I honestly don't
know why would someone use another os. Windows dev looks very weird to me with
trillions of popups, little windows and checkboxes. Mac looks like it's trying
to replicate linux tooling and while it's pretty good you still need to jump
some hoops

------
jamespcole2
My biggest frustration with Linux development is how poor it has made windows
development env look in comparison. Every time I have to fire up a windows VM
to do some work for some of our clients that still use MS tech I hate it.
Before using Linux as a dev environment I honestly thought windows and the
associated dev tools were really good. Now using anything else seems like a
huge chore.

------
jules
Anything sysadminy like building third party libraries or configuring tools
and getting them to work. I just want to write code, not fight with
installation and configuration. Editors and dev tools are all fine after they
are installed and configured.

------
Happpy
Thinkpad running fedora, a dream come true.

------
SFjulie1
Dealing with lazy people asking stupid questions and making everyone loose
time and resisting the urge to pick on them.

~~~
czardoz
Sometimes, people just don't know.

~~~
collyw
Most of the time techies don't know either, but have a sensible approach to
finding out.

