Updated: March 11, 2016
After writing my War on Inconsistency article, and having gone through a bunch of Arch-based distro tests, all of which exhibited the same lack of coherence, stability and predictability, I thought about what should be done in the Linux space to make it more appealing to the wider audience. Not just from the application perspective. From the brand and image angle.
Diversity and uniqueness are important and possibly even conducive to progress and success, up to a point, but then, you cannot disregard all the things that people expect from a consumer product. Which, to a large extent, Linux isn't today. However, making everything work the exact same isn't really an answer either. We do need our KDE and Xfce and Gnome, but perhaps they can all behave less erratically and radiate a tiny bit more professional air. This is my current short list of what we can do, without compromising on all the little things that make Linux so special. 2016 edition. Yes, same old, same old, blah blah, we have seen this kind of list emerge every few years, etc. True. You do not need to read. If you do want, the rest of the text awaits you.
The very first thing people see when they boot into Linux is this or that splash screen. But often as not, rather than just being a nice animated distro logo, the screen is often polluted with random and sometimes alarming text messages. Not happily contained in their own virtual consoles, errors, warnings and info banners intrude into the X console. The displayed texts adds no flair or charm to the experience, users often perceive it as garbage, and the end effect is one of less than spot-on professionalism.
Very few distros manage this well. I think Zorin is one of the rare ones that managed to pull this off. The rest blithely show off init and systemd vomit. I don't care about any one of those messages. They are useful on servers, they are absolutely pointless on a home system. And so, the boot process should be changed to either blank the screen or disable visual consoles to minimize text intrusions until the desktop is reached. This would make the whole Linux boot adventure more pleasant, more top notch.
System menu behavior
This is an almost trivial thing. But not all distros use the Super (Windows) key to activate the system menu. Why not? This is such a simple action, such an innocent action, and it is associated with the menu functionality and behavior across almost the entire desktop space. Yes, Microsoft uses it, too. So what.
Live session data persistence
Some distributions do offer live session persistence. Depending on which particular USB writer tool you use, you could potentially partition and/or allocate some space off your thumb drive for live session data, which you may want to keep in between reboots. Puppy does this quite well. However, the idea is to run Linux off a removable media and not have it committed to disk, hence the persistence idea.
I have a different approach. People will often spend time testing various distributions running from the live media before they decide to install them. During this time, they may accumulate useful stuff in the form of various files, install extra software, make visual modifications, and such.
Usually, apart from the Wireless config, few if any of these settings are preserved after the install. Users then have to manually redo all the little changes, and copy data into the installed system. This is fine, but then, it would be much simpler if all the live session changes were retained. Presented as an option to the user, and then saved.
Mandriva and family used to do this back in the day, and even Ubuntu had a feature, allowing you to import user settings from existing home directories on the disk. For some reason, the latter was abandoned, and the former never more widely accepted outside the Mandriva community. Well, almost. A few distro do this nicely. It makes a lot of sense. If you end up your live session with a dozen new files, three or four system tweaks, a couple of new programs or codecs, then it would be a shame to reinvest all that effort doing the same thing again.
This is like the Achilles' Heel of Linux. People come expecting all sorts of magical stuff to happen, but then they are told about ideology and licensing restriction on this or that continent. No one cares about that.
But worse that that, there isn't really a single unified approach to how Linux should handle codecs. Every distro has its own method. Ubuntu will let you check a certain box, and then you get your stuff after the system is installed. Not bad, but it doesn't really let users fully experience what the system can and could do in the live session. Mint gives you everything you need. Fedora and SUSE force you to add third-party repositories, and that means a whole different world of problems and complications.
To make things worse, the results aren't consistent, either. You may install certain codecs, but there's no guarantee they will work, or that applications you expect to use them will be able to use them. Example, Amarok in SUSE. Then, dependencies aren't really mapped, so you may end up wasting hours hunting for software.
But this is just the tip of the iceberg. The problem is much, much bigger than that. Not only do you not know what codecs and plugins you need, how many of them, and how each and every distro has the whole scheme configured, you don't really have a meaningful way of finding the codecs, either.
For example, the MP3 codecs - do you think they're called MP3? No. They are called gstreamer some nonsense something. Yup. Not only that, you want gstreamer-ugly codecs, but not the bad set or the good set. I love the play on words, but that does not really help you in any way.
The Flash plugin has about a dozen names - flash-plugin, flashplugin, flash-installer, adobe-plugin, and other crazy stuff that makes sense to people who write Python for pleasure, but not to ordinary folks who just want to enjoy pr0n.
My solution to the problem is very simple: Agree on a single and human readable naming convention for all media-related stuff. These can be just transitional packages, it makes no difference. In the background, the right stuff will be auto-sorted. But if people need Flash or MP3 or DVD or HD video, then those are the search words they should use.
If a distribution cannot legally provide codecs, then create a wrapper mechanism that will add the necessary stuff - repos, dependencies, etc. This can be a prompt during one of the stages in the installer, like Ubuntu does, or maybe a prompt early into the live session.
The point is, users should NEVER EVER have to worry about package names, their quantity, the fact they resolve to different things in different distros, the fact they are called different things, or any other nerdy madness that you can think of.
Auto install of missing functionality
As an optional feature, distributions should have the ability to download missing software, including drivers, and help users achieve whatever they might be doing. I know this sounds very Microsofty, and that's not how Linux works, but then, it is exactly how Linux works.
Today, you have ugly udev rules - or whatever backend monstrosity you can imagine - designed to help you initialize hardware. Then, the necessary modules are loaded or used, and Bob's your uncle. Except it's a lousy implementation. Yes, the kernel normally supports a mindboggling array of hardware platforms and devices, and yes, normally you can literally do anything in most distributions. And the fact so many platforms are supported out of the box is amazing. However, the problem is with the little things that do not work. People don't care the distro booted just fine on their particular laptop. They expect it. However, they will be rather cross if their Fn buttons do not work, or if they can't connect their smartphone.
Installing new software can be a security risk, but it is one that is blown out of proportion. People just want to use stuff. Let them use it. If someone plugs in a new device, and the system does not seem to have the right mix of kernel modules and system libraries to support it, the distro should then download the missing software and configure it.
This is quite doable, including all the backend stuff. It just requires a framework that will extend the functionality to include on-the-fly downloads, on-the-fly configurations, and other things that cause magic and user happiness.
The same applies to cameras, printers, anything. Don't expect users to figure out their printer model on their own. Don't assume that extra level of nerdy intelligence that might not be there. I don't want to wonder if my Ubuntu needs HP drivers or foo drivers or whatever. I just want the stuff to work.
Once upon a time, Crunchbang tried something like this. A startup script that configures a lot of cool stuff. It was a noble attempt, and it was something that could have evolved into a great thing. But like many other things in the Linux world, it died all too quickly.
Security again. Firewalls are useful. But they should NEVER interfere with users' work. If someone wants to connect to another host on their network, they should never need to manually edit firewall rules. The concept of zones is quite useful here, alas very few distributions use it.
Speaking of security, we should probably add AppArmor and SELinux into the lot. Have you ever seen these two tools do anything useful? Have they ever stopped anything bad from happening? No. They just generate false positives. Again, home systems aren't mission critical Internet-facing servers. Give it a rest.
People tend to forget - not everyone speaks English and/or uses it as their primary interface language. Being able to add new languages, dictionary or helper tools should not become an exercise in geekology. It's much like the media problem. Users shouldn't need to figure out how and when and where their keyboards ought to work. Their one and only concern should be clicking a button and selecting a new language. That's all.
Screen resolution and contrast and such
Screen detection has become much better in the recent years. Dual monitors, even. But then, quite a few Linux distributions come with a suboptimal screen clarity. You can use fancy words like DPI, hinting, aliasing, whatever. I don't care, and neither do users. This is something that should be automatic and flawless.
How? Well, maybe a calibration tool? Something that would actually let users get the best from their monitors and their eyes. Maybe it is impossible to find the ideal solution for all types of hardware out there, but a configuration tool could help users quickly and easily tune their desktops so they can enjoy a better visual experience. And yes, fonts, too, but I've already ranted on this one.
And the list goes on
After this initial checklist, problems start to become even more elaborate. Like the choice of the audio framework. ALSA versus Pulse, I wanna puke please. Not going there. I do not care about technical implementation. Focusing on technical stuff is EXACTLY what's wrong with most Linux desktop distributions. They are all about providing a solution without even knowing what the problem is. For most people, believe it or not, geeks included, it comes down to functionality. Computers are tools. Operating systems are interpreters for user actions. If you can't do the stuff you like on a machine, it's useless, no matter how uncanny and beautiful and advanced the technology under the hood might be.
You would not be delivering pizzas in a Lamborghini Aventador, now would you? Yes, you might, for the novelty effect, but most of the time, you'd struggle to appreciate all the awesome bits and pieces behind your back. Because it'd be a wrong tool for a wrong task.
The same with Linux. Which is why there's a big disconnect between how things are done and how they should be done. Not the technological implementation. That's irrelevant. User experience. That's all. Find the best way to provide it, and figure out the dirty bits in the background. Unfortunately, Year 2016 and counting, Linux is still all about the dirty mechanics none of the finer art.
Future? Probably not so bright
You may think I'm being smart and obvious, both at the same time. The thing is, I've highlighted most of these issues so often, it's almost too embarrassing. Indeed, if you look at what I told you anywhere between seven years ago and yesteryear twice removed, things are probably not going to be changing any time soon. Not too quickly and maybe even not at all. Linux is still stuck in that superior inferiority stage, where it has all it takes to be a winner, but the sum of all ingredients is less than one.
Of course, like any self-respecting system, unless new energy is invested, nothing will change. The current way of how things are is an equilibrium of a sorts, even if we're talking barely controlled chaos bordering on ridiculous. And that's because the critical mass of focus and importance that would mandate a change of things in Linux has not been reached. But it cannot be reached as long as there aren't enough users complaining. Or users. Just users would be cool. Only why would they use Linux if it doesn't do their <insert arbitrary thing people want or need or imagine or something>. Eventually, something's got to give. One day, the precarious balance will shatter, and the whole system will either explode or implode. But it will not remain the way it is today.
These kind of articles tend to escalate. You start simple, then you warm up, then you go ballistic, and the list becomes a neverending, pointless tirade without a solution. And often, that is the reality. However, there's so much that can be done without taking away from the essential beauty and wildness of Linux, without compromising on its unique and imaginative spirit. Small things, without killing or smothering creativity.
It's all about what the user sees and does. The desktop environment shouldn't be the deciding factor. Functionality should. Can you play music? Can you print? Can you use your phone? Can you boot into a system without panic? Small things. And we still keep all our little feuds and forks, and everyone's happy. Maybe. Hopefully, someone with a desire to run megalomaniac projects and get some code written will read this and pump out a better, improved version of their distro that just might have that extra dose of professionalism Linux so desperately needs. We need a hero. See ya.