In many ways, the Linux desktop is as close as I can get to the perfect computing experience. Don't misunderstand, there are missing components that affect me on a daily basis. But for the most part it's as good as I can make it.

This article will address a negative aspect of something that usually provides me with a great deal of satisfaction – Linux. Despite my preference for the platform, today's distros are by no means perfect.

Abandon-ware creates a missing Linux component

I wish I had a dollar for every time I found a cool piece of Linux software only to discover that it's no longer available in the software repositories. Luckily I've become more careful about relying on any one application to get a job done. But it's frustrating when you find an application you love, only to see it abandoned a few months later.

Fixing the issue: The approach I take is to embrace the underpinnings of the software itself. So if the application uses something that can be done from the command line, that's usually my go-to work-around. Completely unacceptable for casual users, but for Linux enthusiasts who are comfortable with the command line it's better than nothing at all. This issue is worst with proprietary software. For example: it was only recently that Microsoft decided to revisit Skype again to slowly roll out way overdue updates. In the meantime, I've stopped using the software whenever possible.

Different software versions create a missing Linux component

From a security point of view, software updates are usually a good thing. But there are occasions where a software update messes up existing functionality, like kernel updates breaking wireless or video card compatibility. The former may be more common than the latter, but both can be frustrating.

Some distros have taken to a "number" system to let the user know how likely an update is to break their system. Obviously this is a terrible idea as it merely side steps the issue rather than addressing the bug head on.

Another occasion when software versions can cause a pain point is when you need a newer release of your existing distribution. Now I'll be the first to acknowledge that Snap packages and Flatpak will possibly help when running newer software on older Linux distros. Ideally, both options will provide users with a means of no dependency headaches.

Yes, dependencies are very much still a "thing" with Linux in 2016 – let's not pretend otherwise. If you disagree, grab a deb package of software for 16.04 and install it on 14.04 and let me know how that works for ya?

Fixing the issue: I see two approaches yielding some success here. While there is little we can do about abandoned software (outside of forking it), new ways of handling packages will likely yield the best results. Other distros will stick to what is already working for them by offering bleeding edge updates as they're available. For those who want a non-bleeding edge base, however, I think Snap packages and Flatpak will be among the most common solutions for popular Linux distros.

User-interface hiccups create a missing Linux component

What's the single biggest headache when you update to the latest GNOME desktop or Cinnamon desktop release? Simple, many of the extensions available for installation will no longer work for you. That's not an opinion, that's a demonstrable fact.

The root cause isn't the GNOME or Cinnamon development teams. No, it's the fact that extensions for certain desktops appear to be heavily reliant on the version of the desktop you're using. This is part of what sent me away from GNOME back to MATE for a time. I needed to know that when I add a function to my desktop that it's going to work, even after upgrading.

Another issue is the lack of consistency with many Linux applications. To be fair, KDE software, distros such as Elementary and Solus all try to provide some user interface consistency. And each approach, while different, does do its part to help. KDE apps for example, tend to follow a certain flow in their layout. Same with Elementary-specific apps. Solus and Elementary both do this with their overall distro design.

Sadly these attempts don't bleed over to other desktop environments, distributions and software. So even when we have a great looking distro/desktop environment, odds are the software provided is going to be a mix of Qt and GTK in nature. Folks, let me be clear – there is little as ugly in life is a GTK app in KDE or a Qt app in GNOME. Okay, Windows 10 UI duplication is a close second. After all, the control center only needs one interface.

Fixing the issue: For myself personally, using distributions like Solus and Elementary are good places to start. Even though it's beyond their scope to make Qt apps look awesome in a GTK space, at least both teams are working hard to make the Linux desktop more consistent and usable.

Lack of a GUI Firewall creates a missing Linux component

Yes, Linux has access to firewall-capabilities. Unfortunately, there is little consistency in this area. First of all, Linux firewall technology is built out of the IT-minded iptables instead of something mere mortals can wrap their heads around. Second, Ubuntu found a way to make this easier with the non-GUI ufw (uncomplicated firewall). Despite it's lack of a GUI, it does a fair job of balancing ease of use with powerful features. You can use it to bind to a specific protocol, interface, port, etc.

But what about monitoring activity? I'm sorry, but launching an instance of Wireshark or running "tail -f /var/log/messages | grep UFW" simply isn't the same. The one and only "real" solution available across different distributions is Gufw. To be clear, I'm aware of other GUI options like FirewallD and SuSE's YaST Firewall. But those are best suited for more advanced users. I've run both, they are excellent...but not for non-tech users. The problem is that distros like Ubuntu do not provide a decent GUI firewall out of the box. Enterprise distros like SuSE does, but Ubuntu and others simply don't.

It pains me that we can't seem to get any consistency on the firewall front. The closest firewall consistency is that you can teach yourself iptables and hope you don't accidentally block critical ports during your learning phase.

Fixing the issue: Either provide Gufw by default, or offer users FirewallD with firewall-config. Both provide network zones whereas last time I looked, ufw from the terminal does not. To desktop users, the inclusion of zones might seem trivial. However for traveling notebook users, it's a nice feature to have.

A lack of seamless networking creates a missing Linux component

It's 2016 and most distributions (including newbie friendly ones) require you to create the samba user from a command line. Yes, there are GUI's that can assist with that...if you know what to look for. However out of the box, Linux distros targeting casual users generally miss the mark here.

Consider this workflow: right-click onto a directory, choose share and then experience an error since you didn't think to do a "smbpasswd -a username" before sharing the directory. For the newer user, it's frustrating. Then the user tries again after restarting the samba service. Sometimes they have success if they have access to something like nautilus-share. Other times, they must edit their smb.conf instead. A perfectly acceptable option for advanced users. But it's completely ridiculous to expect a casual user to bother with this level of detail. Sharing for file managers like Nautilus, Caja and others need their "filebrowser-share extensions" to mature a bit.

Fixing the issue: When someone uses nautilus-share (or similar), prompt for them to add a Samba compatible user to the mix. This way security isn't compromised by just giving blind root to an action, but it's also not a mystery to a regular person why Samba isn't working correctly. Not a big deal for most of us, but it's a huge deal to someone who just wants to get to their files without the lesson in Linux IT.

Let's address these missing Linux features

For some of the stuff mentioned above, it's simply a matter of putting an emphasis on their availability. So even if constancy continues to take a back seat for the time being, at least people can run their desktops without spending half their day learning Linux 101.

To those of you who are die-hard and still don't get it – new users are our future. And many of them aren't pursuing a career in Linux IT. So instead of taking the usual approach of "not my problem," instead, let's address this stuff.

I try to do my part by providing walk-throughs. Distro maintainers can do theirs by really examining whether or not their distro is targeting the newcomer. What say you? Do you think that Linux is already too simple? Perhaps instead, getting our families to learn iptables and edit confs is about to become all the rage in 2017? Hit the Comments, share your thoughts.