This hardly needs to be said, as it's been said a million times before, but as it's been my personal experience and frustration for the last few days I can't help but re-iterate the points myself... For all its awesomeness Linux is extremely, profoundly, mind-bogglingly difficult when it comes to installing the things you need. Case in point, over the last few weeks I've needed to install a VPN client on several different real and virtual machines running different flavors of Linux, namely Ubuntu, Debian, Scientific Linux, and CentOS 6. My ultimate success rate was only 50% with me ultimately abandoning the attempt in the other cases after too many hours wasted; I think I spent about 10 hours in all, trying to install VPN on the four systems. This relatively simple task was made incredibly complicated by the process being similar but seriously different for every flavor of Linux involved.
The basic procedure starts simply enough with needing to install the OpenVPN package. But wait, with various flavors of Linux come various package management systems you need to know, from RPM and Yum to Deb and Apt. And once you know the right command-lines the task becomes immediately complicated by the fact that OpenVPN depends on several libraries which may or may not be available in the repositories to which your Linux of flavor automatically connects. It invariably takes some time working out which repository has the needed libraries, some time wondering about the legitimacy of that repository, some worry that the package isn't entirely suitable for the flavor of Linux you're on, and the configuration changes needed to actually cause Linux to look at that repository. With some flavors of Linux this went relatively smoothly and with others not so much. Eventually I would in each case get the OpenVPN client package and its dependencies installed.
Say whatever negative thing you like about Microsoft Windows, but the install experience on Microsoft Windows would have involved at worst picking x86 or x64 versions and possibly selecting between Windows XP / 2000 and Windows Vista / 7 / 8 versions. Everything you needed would be included in the installer.
And here's where it gets even worse with Linux. As I quickly discovered, the ubiquitous Network Manager applet (akin to the wifi/network icon and applet in the Windows system tray) that's featured in all modern Linux task bars, the applet that makes adding / configuring and connecting to VPN servers quick and easy, still had its Add and Import buttons unhelpfully grayed out. After quite a bit of confusion and much Googling I discovered that for those features to be usable in the Network Manager applet several additional packages (acting as plugins) specific to Network Manager had to be installed allowing it to support OpenVPN. This was not something one would naturally expect, as the VPN tab was already present in the Network Manager applet giving no hint that something was left to be installed. And it's here where I was only partially successful across the various flavors of Linux. With two of the flavors I just couldn't find the appropriate dependencies (of the Network Manager plugins) to get the job done; I found things but they didn't work, were for CentOS 5 when I needed them for Cent OS 6, etc.
And even where I was fully successful on two of the systems the VPN wouldn't connect until a reboot, which I would have been happy doing had the cryptic error I was receiving indicated that might be useful. More Googling required to learn that. And in another case where I came close to getting things working the VPN manager would let me add VPN connections only to then make them unavailable for connection selection, leaving me with no idea why it wasn't working or what to do about it.
Say what you will about Microsoft Windows but there is never a separate installation step required to enable a driver's/software's GUI.
And so it is my profound and lingering frustration that something as miraculously wonderful as Linux continues to be hobbled by user experience which requires vastly more time, patience, intelligence, and dedication than most users will ever be willing to provide. While I understand that the various flavors of Linux are very much a part of its success and ubiquity in everything from web servers to embedded devices in cars to Android tablets, I can't help but wish the desktop Linux space wasn't so fragmented, that putting together a working Linux machine and all its needed packages wasn't so g-d damn much like assembling a jigsaw puzzle. When I think of all that Linux does right, all its hardware support, all its ported software, all its UI options, why oh why can't these relatively basic issues be sorted out?
Ah well... I can dream.