In this regularly updated article we only discuss main Linux problems and deficiencies (which may be the reason why some people say Linux is not ready for the desktop) while everyone should keep in mind that there are areas where Linux has excelled other OSes: excellent package management, multiple platforms and architectures support out of the box, usually excellent stability, no widely circulating viruses or malware, complete system reinstallation is almost never required, besides Linux is extremely customizable, easily scripted and it's free as a beer.
This is not a Windows vs. Linux comparison however sometimes you'll find comparisons with Windows or Mac OS as a point of reference (after all, their market penetration is in an order of magnitude higher). Most issues listed below are technical by nature, however some of them are "political" (it's not my word - it's what other people say) - for instance when companies refuse to release data sheets or release incomplete data sheets for hardware, thus Linux users don't get all the features or drivers have bugs almost no one in the Linux community can resolve.
I want to make one thing crystal clear - Windows, in some regards, is even worse than Linux and it's definitely not ready for the desktop either. Off the top of my head I want to name the following quite devastating issues with Windows: no enforced file system and registry hierarchy (I have yet to find a single serious application which can uninstall itself cleanly and fully), no true safe mode, no clean state, the user as a system administrator (thus viruses/malware - most users don't and won't understand UAC warnings), no good packaging mechanism (MSI is a fragile abomination), no system wide update mechanism (which includes third party software), Windows is very difficult to debug, in too many cases when Windows stops booting no normal user will be able to solve this problem, Windows is hardware dependent (especially when running from UEFI), in most cases you cannot safely upgrade your system (there will be thousands of leftovers), etc.
Probably you've heard many times that Android thus Linux is conquering the entire world since it's running on the majority of smart phones (which are indeed little specialized computers but not desktops). However there are two important things to keep in mind - firstly Android isnotLinux (besides have you seen anyone running Android on their desktop or laptop?). Android contains the only Linux component - the kernel (moreover, it's a fixed old version which is maintained and supported solely by Google). Secondly Android is not a desktop OS, it's an OS for mobile phones, tablets and other touch screen devices. So, this article is not about Android, it's about a horde of Linux distributions and Open Source Software included by these distributions (called "distro" below).
Miguel de Icaza, the creator of Gnome and Mono, opined about Linux problems in a similar way, here's his opinion where he reiterates a lot of things mentioned below. He stopped using Linux in 2012, saying about his Mac the following, "Computing-wise that three week vacation turned out to be very relaxing. Machine would suspend and resume without problem, WiFi just worked, audio did not stop working, I spend three weeks without having to recompile the kernel to adjust this or that, nor fighting the video drivers, or deal with the bizarre and random speed degradation that my ThinkPad suffered", highlighting problematic areas in Linux.
Ubuntu developers decided to push Ubuntu as a viable gaming platform and they identified the topics which need to be addressed in order to achieve this goal. Uncannily the list, they've come up with, matches the list, you can read below, almost verbatim.
Some of Fedora developers proposed to change this distro so it provides stable APIs/ABIs and avoids regressions if possible.
Greenish items on the list are either partially resolved, not crucial, questionable, or they have workarounds.
This list desperately needs to be reorganized because some of the problems mentioned here are crucial and some are not. There's a great chance that you, as a user, won't ever encounter any of them (if you have the right hardware, never mess with your system and use quite a limited set of software from your distro exclusively).
Here are a few important considerations before you start reading this article:
If you believe Linux is perfect and it has no problems, please close this page.
If you think any Linux criticism is only meant to groundlessly revile Linux, please close this page.
If you think the purpose of this article is to show that "nothing ever works in Linux or Linux is barely usable", you are wrong, please close this page.
If you believe Linux and Linux users will work/live fine without commercial software and games, please close this page.
If you think I'm here to promote Windows or Mac OS, please close this page.
If you think I'm here to spread lies or FUD about Linux, please close this page immediately and never ever come back. What are you doing here anyway? Please go back to flame wars and defamations.
Keep in mind that this list serves the purpose to show what needs to be fixed in Linux rather than to find faults in it.
(For those who hate reading long texts, there's a TL;DR version below). So Linux sucks because ...
Video accelerators/acceleration (also see the X system section).
! NVIDIA Optimus technology and ATI dynamic GPU switching are not officially supported on Linux, and they aren't even remotely usable with the implemented hacks to support them. At most you can switch GPUs using BIOS settings or change an active GPU on boot before running the graphical subsystem. Optimus issue is now semi-solved by Linux hackers (but still it's not supported out of the box by any Linux distro).
! No high quality open source Intel, NVIDIA and AMD drivers:
! Open Source AMD and NVIDIA drivers do not properly and fully support power management features and fan speed management.
All open source graphics drivers feature very incomplete and outdated OpenGL implementation (OpenGL 3.1 as for 2013, whereas OpenGL 4.3 was released in 2012).
Intel drivers are much slower than their Windows counterpart.
! Open Source AMD and NVIDIA drivers are much slower (sometimes in a order of magnitude) than their propriatary counterparts.
The lack of suitable performance counters support due to different issues.
(Hopefully will be more or less resolved in 2013) Nouveau crashes the system quite often.
The complete OpenGL stack cannot be legally implemented in/imported into Linux because many OpenGL features (like S3TC texture compression and floating point textures) are patented.
The open source OpenGL stack (aka Mesa) is in a bad shape.
!NVIDIA and AMD proprietary graphics drivers don't work reliably for many people (crashes, unsupported new kernel and X server, slow downs, extreme temperatures, a very loud fan, etc.).
Proprietary NVIDIA/AMD graphics drivers don't support KMS/VirtualFB and lag in features implementation (proper and full Randr support, full 2D acceleration, support for new X.org and kernel releases, etc.). Besides Linux developers do everything to break closed source drivers by changing APIs or making APIs unusable beyond the GPL realm.
No unified API for H.264 AVC/Microsoft VC acceleration. VDPAU is only supported on NVIDIA GPUs. Intel's VAAPI is still immature and it's not yet merged and accepted (by mplayer/ffmpeg/xine/etc.) AMD doesn't yet have a working implementation.
! Great many users experience severevideotearing while watching videos and youtube clips (using Adobe Flash) - this issue affects both proprietary and open source GPU drivers. Ostensibly it's an X.org "feature".
No reliable sound system, no reliable unified software audiomixing (implemented in all modern OSes except Linux), many old or/and proprietary applications still open audio output exclusively causing major user problems and headache.
Too many layers of abstraction lead to the situation when the user cannot determine why his audio doesn't work (ALSA kernel drivers -> ALSA library ( -> dmix ) -> PulseAudio server -> Alsa library + Pulse backend -> Application).
(Applies only to certain sound cards, e.g. the Creative Audigy series) Insanely difficult to set up volume levels, audio recording and in some situations even audio output. Highly confusing, not self-explanatory audio channels names/settings.
(Linux developers don't care about backward compatibility - OSS is mostly unsupported nowadays, OSSv4 is no longer being developed. ALSA FTW - like it or not) Changing the default sound card for all applications (i.e. for old applications using OSS or ALSA directly) if you have more than one of them is a major PITA.
Printers, scanners and other more or less peripheral devices:
! There are still many printers which are not supported at all or only barely supported (amongst them are Lexmark and Canon).
Many printers features are only implemented in Windows drivers.
! Some models of scanners and (web-)cameras are still inadequately supported (again many features from Windows drivers are missing) or not supported at all.
Incomplete or unstable drivers for some hardware. Problems setting up some hardware (like sound cards or TV tuners/Web Cameras/Wi-Fi cards).
Laptops/notebooks special buttons and features often don't work (e.g. Fn + F1-F12 combination or special power saving modes).
! An insane number of regressions in the Linux kernel, when with every new kernel release some hardware can stop working inexplicably. I have personally reported two serious audio playback regressions, which have been consequently resolved, however most users don't know how to file bugs, how to bisect regressions, how to identify faulty components.
! Incomplete or missing support for many power saving features modern laptops employ (like e.g. PCIe ASPM, proper video decoding acceleration, deep power saving states, etc.) thus under Linux you won't get the same battery life as under Windows or MacOS and you laptop will run a lot hotter. Jupiter.
AMD's Hondo will only support Windows 8 at launch.
No high level, stable, sane (truly forward and backward compatible) and standardized API for developing GUI applications (like core Win32 API - most Windows 95 applications still run fine in Windows 8 - that's 18 years of binary compatibility). Both GTK and Qt (incompatible GTK versions 1, 2, 3 and incompatible Qt versions 2, 3, 4, 5 just for the last decade) don't strive to be backwards compatible.
No true safe-mode for the X.org server. Misconfiguration and broken drivers can leave you with a non-functional system, where sometimes you cannot access text virtual consoles to rectify the situation (in 2013 it's becoming less of an issue since quite often nowadays X.org no longer manages your hardware - the kernel does that via KMS).
! Keyboard shortcuts handling for people using local keyboard layouts is broken (this bug is now 9 years old).
! X.org doesn't automatically switch between desktop resolutions if you have a full screen application with a custom resolution running - strangely some Linux developers oppose to the whole idea of games on Linux. But since Linux is not a gaming platform and no one is interested in Linux as a gaming platform this problem importance is debatable. Valve has released Steam for Linux and they are now porting their games for Linux - but that's a drop in the bucket.
! Scrolling in various applications causes artifacts.
! X.org allows applications to exclusively grab keyboard and mouse input. If such applications misbehave you are left with a system you cannot manage, you cannot even switch to text terminals.
! Keyboard handling in X.org is broken by design - when you have a pop up or an open menu, global keyboard shortcuts don't work.
Under some circumstances GUI becomes slow and unresponsive (video drivers performance, video drivers breakage (thus using software accelerated VESA drivers), notorious bug 12309 - it's ostensibly fixed but some people still experience it)
! Adobe Flash player has numerous problems under Linux (unsupported video acceleration decoding and rendering, video tearing, crashes and frames dropping at 100% CPU usage even on high end systems). In 2012 Adobe announced that Adobe Flash player wouldn't be supported any longer for any browsers other than Google Chrome.
! X.org server currently has no means of permanently storing and restoring settings changed by the user (xrender settings, Xv settings, etc.). NVIDIA and ATI proprietary drivers both employ custom utilities for this purpose.
There's no way to replace/upgrade/downgrade X.org graphics drivers on the fly (simply put - to restart X server while retaining a user session and running applications).
X.org 2D acceleration technologies and APIs aren't as mature and fast as Direct2D and DirectWrite in Windows. This is proven by the fact that standards basedHTML5 demos which contain 2D animations and transformations work up to a thousand times faster in Windows than in Linux (to be fair MacOS X has the same issue).
Font rendering (which is implemented via high level GUI libraries) issues:
! White or light-colored fonts antialiasing on dark backgrounds (without Infinality patches wich are yet to be included by default by any distro) is horrible.
! ClearType fonts are not properly supported out of the box (For a test I compiled FreeType 2.4.11 with ClearType technology but the results were abysmal). Even though the ClearType font rendering technology is now supported, you have no means to properly configure/tune it.
Quite often default fonts look ugly, due to missing good (catered to the LCD screen - subpixel RGB full hinting) default fontconfig settings.
Fonts antialiasing is very difficult to implement properly when not using GTK/Qt libraries (Opera had been struggling with fonts antialiasing for a year before they made it work correctly, Google Chrome had fonts rendering broken for eight months).
(Getting better but we're not yet there) By default most distros come without good or even Windows compatible fonts.
Fonts antialiasing settings cannot be applied on-the-fly under many DE.
By default most distros disable good fonts antialiasing due to patents - more or less resolved in 2012 (however even in 2013 there are still distros which forget/refuse to enable SPR in freetype2).
The Linux kernel:
! The kernel cannot recover from video, sound and network drivers' crashes (I'm very sorry for drawing a comparison with Windows Vista/7/8 where this feature is implemented and works beautifully in a lot of cases).
KMS exclusively grabs video output and disallows VESA graphics modes (thus it's impossible to switch different versions of graphics drivers on the fly).
KMS video drivers cannot be unloaded or reloaded.
!! KMS has no safe mode: sometimes KMS cannot properly initialize your display and you have a dead system you cannot access at all (a kernel option "nomodeset" can save you, but it prevents KMS drivers from working at all - so either you have 80x25 text console or you have a perfectly dead display).
Traditional Linux/Unix (ext4/reiser/xfs/jfs/btrfs/etc.) filesystems are unusable for mass media storage.
File descriptors and network sockets cannot be forcibly closed - it's indeed unsafe to remove USB sticks without unmounting them first as it leads to stale mount points, and in certain cases to oopses and crashes. For the same reason you cannot modify your partitions table and resize/move the root partition on the fly.
In most cases kernel crashes (= panics) are invisible if you are running an X session. Moreover KMS prevents the kernel from switching to plain 640x480 or 80x25 (text) VGA modes to print error messages.
Very incomplete hardware sensors support, for instance, hwinfo32/64 detects and shows ten hardware sensors sources on my average desktop PC and over 50 sensors, whilest lm-sensors detect and present just four sources and 20 sensors. This situtation is even worse on laptops - sometimes the only readings you get from lm-sensors are cpu cores' temperetarures.
Problems stemming from the vast number of Linux distributions:
! No unified configuration system for computer settings, devices and system services. E.g. distro A sets up networking using these utilities, outputting certain settings residing in certain file system locations, distro B sets up everything differently. This drives most users mad.
! No unified installer/package manager/universal packaging format/dependency tracking across all distros (The GNU Guix project, which is meant to solve this problem, is now under development - but we are yet to see whether it will be incorporated by major distros). Consider RPM (which has several incompatible versions, yeah), deb, portage, tar.gz, sources, etc. It adds to the cost of software development.
! Distros' repositories do not contain all available open source software (libraries conflicts don't even allow that luxury). The user should never be bothered with using ./configure && make && make install (besides it's insecure, can break things in a major way, and it sometimes simply doesn't work because the user cannot install/configure dependencies properly). It should be possible to install any software by downloading a package and double clicking it (yes, like in Windows, but probably prompting for a user/administrator password).
! Applications development is a major PITA. Different distros can use a) different libraries versions b) different compiler flags c) different compilers. This leads to a number of problems raised to the third power. Packaging all dependent libraries is not a solution, because in this case your application may depend on older versions of libraries which contain serious remotely exploitable vulnerabilities.
! Two most popular open source desktops, KDE and Gnome, can configure only few settings by themselves thus each distro creates its own bicycle (applications/utilities) for configuring a boot loader/firewall/network/users and groups/services/etc.
Linux is a hell for ISP/ISV support personnel. Within the organization you can force a single distro on anyone, but it cannot be accomplished when your clients have the freedom to choose.
! It should be possible to configure pretty much everything via GUI (in the end Windows and Mac OS allow this) which is still not a case for some situations and operations.
No polish and universally followed conventions. Different applications may have totally different shortcuts for the same actions, UI elements may be placed and look differently, some core KDE/Gnome applications have GUI glitches. E.g. KDE's start menu can become a bloodymess (that's from KDE 4.8.5 in recently released Fedora 17).
Problems stemming from low Linux popularity and open source nature:
! Few software titles, inability to run familiar Windows software (some applications which don't work in Wine (see at the lines which contains the word "regression") have zero Linux equivalents).
! No equivalent of some hardcore Windows software like ArchiCAD/3ds Max/Adobe Premier/Adobe Photoshop/Corel Draw/DVD authoring applications/etc. Home and enterprise users just won't bother installing Linux until they can get their work done.
!Very few games and no AAA games for the past five years (as for 2013. Valve games alone are just less than 0.05% of available AAA titles for Windows). Cedega (now dead) and Wine (very unstable, very regressions prone) offer very incomplete support (besides open source AMD and NVIDIA GPU drivers don't offer enough performance and compatibility, and stuck on OpenGL 3.1 - 2013, trailing the specification for 4 years already).
Questionable patents and legality status. USALinuxusers cannot play many popular audio and video formats until they purchase appropriate codecs.
General Linux problems:
!! There's no guarantee whatsoever that your system will (re)boot successfully after GRUB (bootloader) or kernel updates - sometimes even minor kernel updates break the boot process. For instance Microsoft and Apple regularly update ntoskrnl.exe and mach_kernel respectively for security fixes, but it's unheard of that these updates ever compromised the boot process. GRUB updates have broken the boot process on PCs around me almost ten times. (Also see compatibility issues below).
!! LTS distros are unsuable on the desktop because they poorly support or don't support new hardware, specifically GPUs (as well as Wi-Fi adaptors, NICs, sound cards, hardware sensors, etc.).
!! Linux developers have a tendency to a) supressnews of security holes b) not notify the public when said hole have been fixed c) miscategorize arbitrary code execution bugs as "possible denial of service" (thanks to Gullible Jones for reminding me of this practice - I wanted to mention it aeons ago, but I kept forgetting about that).
Here's a full quote by Torvalds himself: "So I personally consider security bugs to be just "normal bugs". I don't cover them up, but I also don't have any reason what-so-ever to think it's a good idea to track them and announce them as something special."
! Fixed applications versions during a distro life-cycle. Say, you use DistroX v10.10 which comes with certain software. Before DistroX 11.10 gets released some applications get updated, get new exciting features but you cannot officially install, nor use them.
Some people argue that one of the problems that severely hampers the progress and expansion of Linux is that Linux doesn't have a clear separation between the core system and user space applications. In other words (mentioned throught the article) third party developers cannot rely on a fixed set of libraries and programming interfaces (API/ABI) - in most other OSes you can expect your application to work for years without recompilation and extra fixes - it's often not possible in Linux.
No native or/and simple solutions for really simple encrypted file sharing in the local network with password authentication (Samba is not native, it's a reverse engineered SMB implementation, it's difficult to manage and set up. Samba 4 reimplements so many Linux network services/daemons - it looks like a Swiss knife solution from the outer space).
Glibc by design "leaks" memory. Firefox for Linux now uses its own memory allocator. KDE Konsole application uses its own memory allocation routines. Neil Skrypuch posted an excellent explanation of this issue here.
!Just (Gnome) not enough (KDE) manpower (X.org) - three major Open Source projects are seriously understaffed.
! Linux/open source developers are usually not interested in fixing bugs if they cannot easily reproduce them. This problem plagues virtually all Open Source projects.
! A galore of software bugs across all applications. Just look into KDE or Gnome bugzilla's - some bugs are now ten years old with over several dozens of duplicates and no one is working on them. KDE/Gnome/etc. developers are busy adding new features and breaking old APIs, fixing bugs is of course a tedious and difficult chore. KDE's files indexing is still largely broken in 2013.
! Steep learning curve (even in 2013 sometimes you need to run CLI and complete some non trivial tasks).
!Poor or almost missingregression testing in Linux kernel (and, alas, in other Open Source software too) leading to a situation when new kernels may become totally unusable for some hardware configurations (software suspend doesn't work, crashes, unable to boot, networking problems, video tearing, etc.)
! GUI network management in Linux is a bloody mess. Consider yourself lucky if NetworkManager works reliably for you. In too many cases NM won't see your existing eth0 connection, nor it'll be able to detect it, even if this connection has never been configured before. NM cannot change your NIC hardware parameters, even the most basic ones like MAC address - MAC address can be changed now, in 2012. You cannot establish PPPoE connections over Wi-Fi. Resolved in most recent NM releases: in Microsoft Windows and MacOS X you can have IP address/mask/default gateway assigned using DHCP and a custom DNS server(s) - NM does not support this configuration.
Poor interoperability between the kernel and user space applications. E.g. many kernel features get a decent userspace implementation years after introduction.
! Linux security/permissions management is a bloody mess: PAM, SeLinux, Udev, HAL (replaced with udisk/upower/libudev), PolicyKit, ConsoleKit and usual Unix permissions (/etc/passwd, /etc/group) all have their separate incompatible permissions management systems spread all over the file system. Quite often people cannot use their digital devices unless they switch to a super user.
No application level firewall (to clarify this point - there's no way to block or allow certain applications to access the Internet, e.g. /usr/bin/firefox) - SeLinux doesn't solve this problem because SeLinux policies by default don't apply to normal user applications and SeLinux is not a firewall solution per se.
No (easy to use) application level sandbox (like e.g. SandBoxie) - Fedora is working hard on it.
(This needs to be thoroughly rechecked): observed generalslowness: just compare start up times between e.g. OpenOffice and Microsoft Office. If you don't like this example, try launching OpenOffice in Windows and in Linux. In the latter case it will take more time to launch it.
! CLI (command line interface) errors for user applications. All GUI applications should have a visible errors representation.
! Very poor documentation and absence of good manuals/help system.
Questionable services for Desktop installations (Fedora, Suse, Mandriva, Ubuntu).
! No unified widely used system for packages signing and verification (thus it becomes increasingly problematic to verify packages which are not included by your distro). No central body to issue certificates and to sign packages.
(Not that serious considering that 4GB of RAM cost $20 nowadays) As of recently Linux distros and desktop environments have become a resource hog, e.g. in Ubuntu KDE 4.8.5 consumes whopping 1390MB of RAM.
There are no antiviruses or similar software for Linux. Say, you want to install new software which is not included by your distro - currently there's no way to check if it's malicious or not.
! Due to unstable and constantly changing kernel APIs/ABIs Linux is a hell for companies which cannot push their drivers upstream into the kernel for various reasons like their closedness (NVIDIA, ATI, Broadcom, etc.), or inability to control development or co-develop (VirtualBox/Oracle, VMWare/Workstation, etc.), or licensing issues (4Front Technologies/OSS).
Old applications rarely work in new Linux distros (glibc incompatibilities (double-free errors, memory corruption, etc.), missing libraries, wrong/new libraries versions). Abandoned Linux GUI software generally doesn't work in newer Linux distros. Most well written GUI applications for Windows 95 will work in Windows 7 (15 years of compatibility on binary level).
New applications linked only against lib C will refuse to work in old distros. (Even though they are 100% source compatible with old distros).
Distro upgrade can render your system unusable (kernel might not boot, some features may stop working).
There's a myth that backwards compatibility is a non-issue in Linux because all the software has sources. However a lot of software just cannot be compiled on newer Linux distros due to 1) outdated, conflicting, no longer available libraries and dependencies 2) every GCC release becoming much stricter about C/C++ syntax 3) Users just won't bother compiling old software because they don't know how to 'compile', nor they should know how to do that.
DE developers (KDE/Gnome) routinely cardinally change UI elements, configuration, behaviour, etc.
Open Source developers usually don't care about applications behaviour beyond their own usage scenarios. I.e. coreutils developers for no good reasons have broken head/tails functionality which is used by the Loki installer.
Quite often you cannot run new applications in LTS distros. Recent examples: GTK3 based software (there's no official way to use it in RHEL6), and Google Chrome (Google decided to abandon LTS ditros).
Current issues with my PC:
1) The maximum volume of my ALC892 audio codec is three to four times quieter than in Windows.
2) Suspend in EUFI mode is totally broken.
3) RPM package manager is broken.
(Being slowly resolved: google for gold linker) Slow (libraries) linker. Braindead slow linker. Intolerably slow linker.(A binutils linker has nothing has nothing to do with loading of applications). Still, a Windows version of OpenOffice when being run from Wine starts up in less time than its native Linux version. Microsoft Office 2003 starts from Wine in a matter of few seconds even on 1GHz CPUs with a slow HDD. Still gold'en linker is not universally used.
(Being resolved: systemd) No parallel boot of system services. No delayed loading of system services.
!Stable APInonsense: you cannot develop kernel drivers out of the kernel tree, because they will soon becomeincompatible with mainline. That's the sole reason why RHEL and other LTS distros are so popular in enterprise.
Games development: no complete multimedia framework. Flaky OpenGL support. In 2013 open source GPU drivers support only OpenGL 3.1 (DirectX 11 level graphics require features implemented in OpenGL 4.0, DX10 - OpenGL 3.2).
A lot of points mentioned above apply to this category, they won't be reiterated.
Enterprise level Linux problems:
Most distros don't allow you to easily set up a server with e.g. such a configuration: Samba, SMTP/POP3, Apache HTTP Auth and FTP where all users are virtual. LDAP is a PITA. Authentication against MySQL/any other DB is also a PITA.
! No software (group) policies.
! No standard way of software deployment (pushing software via SSH is indeed an option, but it's in no way standard, easy to use or obvious - you can use a sledgehammer to crack nuts the same way).
Unix permissions systems is absolutely outdated and unsuitable for the modern world. Posix ACL system is quite often disabled by default and not transparent. ACL are very tough to configure without proper GUI, but KDE's ACL editor cannot recursively change ACL permissions, it cannot set default ACL permissions - which renders KDE's implementation almost useless. This issue is finally fixed in KDE 4.9, but I cannot say anything about Gnome/XFCE/LXDE as I don't use them.
! No CIFS/AD level replacement/equivalent (SAMBA doesn't count for many reasons): 1) Centralized and easily manageable user directory. 2) Simple file sharing. 3) Simple (LAN) computers discovery and browsing.
No native production ready filesystem with deduplication and file compression. No filesystems at all to support per-file encryption.
No stability, bugs, regressions, regressionsandregressions: There's an incredible amount of regressions (both in the kernel and in user space applications) when things which used to work break inexplicably, some of regressions can even lead to dataloss. Basically there is no quality control (QA/QC) and regression testing in most Open Source projects (including the kernel) - Microsoft, for instance, reports that Windows 8 recieved 1,240,000,000 hours of testing whereas new kernel releases get, I guess, under 10,000 hours of testing - and every Linux kernel release is comparable to a new Windows version. Serious bugs which impede normal workflow can take years to be resolved. A lot of crucial hardware (e.g. GPUs, Wi-Fi cards) isn't properly supported.
Hardware issues: Under Linux many devices and devices features are still poorly supported or not supported at all. Some hardware (e.g. Broadcom Wi-Fi adapters) cannot be used unless you already have a working Internet connection. New hardware often becomes supported months after introduction. Specialized software to manage devices like printers, scanners, cameras, webcams, audio players, smartphones, etc. almost always just doesn't exist - so you won't be able to fully control your new iPad and update firmware on your Galaxy SIII. Linux graphics support is a big bloody mess because kernel/X.org APIs/ABIs constantly change and NVIDIA/ATI/Broadcom/etc. companies don't want to allocate extra resources and waste their money just to keep up with an insane rate of changes in the Open Source software.
The lack of standardization, fragmentation, unwarranted & excessive variety:Too many Linux distributions with incompatible and dissimilar configurations, packaging systems and incompatible libraries. Different distros employ totally different desktop environments, different graphical and console applications for configuring your computer settings. E.g. Debian based distros oblige you to use the strictly text based `dpkg-reconfigure` utility for certain system related maintenance tasks.
The lack of cooperation between open source developers and internalwars: There's no central body to organize the development of different parts of the open source stack which often leads to a situation when one project introduces changes which break other projects (this problem is also reflected in "Unstable APIs/ABIs" below). Even though the Open Source movement lacks manpower, different Linux distros find enough resources to fork projects (Gentoo developers are going to develop a udev alternative; a discord in ffmpeg which led to the emergence of libav; a situation around OpenOffice/LibreOffice; a new X.org/Wayland alternative - Mir) and to use own solutions (Ubuntu won't use systemd).
A lot of rapid changes: Most Linux distros have very short upgrade/release cycles (as short as six months in some cases, or e.g. Arch which is a rolling distro, or Fedora which gets updated every six months), thus you are constantly bombarded with changes you don't expect or don't want. LTS (long term support) distros are in most cases unsuitable for the desktop users due to the policy of preserving applications versions (and usually there's no officially approved way to install bleeding edge applications - please, don't remind me of PPAs and backports - these hacks are not officially supported, nor guaranteed to work) Another show-stopping problem for LTS distros is that LTS kernels often do not support new hardware.
UnstableAPIs/ABIs & the lack of real compatibility: It's very difficult to use old open and closed source software in new distros (in many cases it becomes impossible due to changes in core Linux components like kernel, GCC or glibc). Almost non-existent backwards compatibility makes it incredibly difficult and costly to create closed source applications for Linux distros. Open Source software which doesn't have active developers or maintainers gets simply dropped if its dependencies cannot be satisfied because older libraries have become obsolete and they are no longer available. For this reason for instance a lot of KDE3/Qt3 applications are not available in modern Linux distros even though alternatives do not exist. Developing drivers out of the main Linux kernel tree is an excruciating and expensive chore. There's no WinSxS alternative for Linux - thus there's no simple way to install conflicting libraries.
Software issues: Very few games and very few AAA games (Humble Indie Bundles and Oil Rush - two independent, very rare occurrences - in 2012-2013 joined by few Valve/Steam titles (vs. thousands of games released for Windows every year) don't really count), no familiar Windows software, no Microsoft Office (LibreOffice still has major troubles opening correctly Microsoft Office produced documents), no native CIFS (simple to configure and use, as well as password protected and encrypted network file sharing) equivalent, no Active Directory or its equivalent.
Money, enthusiasm, motivation and responsibility: I predicted years ago that FOSS developers would start drifting away from the platform as FOSS is no longer a playground, it requires substantial efforts and time, i.e. the fun is over, developers want real money to get the really hard work done. FOSS development, which lacks financial backing, shows its fatigue and disillusionment. The FOSS platform after all requires financially motivated developers as underfunded projectsstartto wane and critical bugs stay open for years. One could say "Good riddance", but the problem is that oftentimes those dying projects have no alternatives or similarly featured successors.
A lot of people who are new to Linux or those who use a very tiny subset of applications are quick to disregard the entire list saying things
like, "Audio in Linux works just fine me." or "I've never had any troubles with video in Linux." Guess what, there are thousands of users who
have immense problems because they have a different set of hardware or software. Do yourself a favour - come and visit Ubuntu or Linux.com forums and count
the number of threads which contain "I have erased PulseAudio and only now audio works for me" or "I have finally discovered I can use nouveau
instead of NVIDIA binary drivers (or vice versa) and my problems are gone."
There's another important thing critics fail to understand. If something doesn't work in Linux, people will not care whose fault it is, they
will automatically and rightly assume it's Linux' fault. For the average Joe Linux is just another operating system, he or she doesn't care if a
particular company ABC chose not to support Linux or not to release fully functional drivers for Linux - their hard earned hardware just doesn't work, i.e.
Linux doesn't work. People won't care if Skype crashes every five minutes under some circumstances - even though in reality Skype is an awful piece
of software which has tonnes of glitches and sometimes crashes even under Windows and MacOS.
I want to answer a common misconception that support for older hardware in Linux is a lot better than in Windows. It's partly true but it's
also false. For instance neither nouveau nor proprietary NVIDIA drivers have good support for older NVIDIA GPUs. Nouveau's OpenGL acceleration speed is lacking,
NVIDIA's blob doesn't support many crucial features found in Xrandr or features required for proper acceleration of modern Linux GUIs (like Gnome 3 or KDE4).
In case your old hardware is magically still supported, Linux drivers almost always offer only a small subset of features found in Windows drivers, so saying
that Linux hardware support is better, just because you don't have to spend 20 minutes installing drivers, is unfair at best.
Some comments just astonish
me: "This was terrible. I mean, it's full of half-truths and opinions. NVIDIA Optimus (Then don't use it, go with Intel or something else)."
No shit, sir! I've bought my laptop to enjoy games in Wine/dualboot and you say to me I shouldn't have bought in the first place? I kindly suggest you not to
impose your opinion on other people who can actually get pleasure from playing high quality games. Saying that SSHFS is a replacement for Windows File Sharing
is the most ridiculous thing I've heard in my entire life.
It's worth noting that the most vocal participants of the Open Source community are extremely
bitchy and overly
idealistic people peremptorily requiring everything to be open source and free or it has no right to exist at all in Linux. With an attitude like this, it's
no surprise that a lot of companies completely disregard and shun the Linux desktop. Linus Torvalds once
talked about this: There are "extremists" in the free software world, but that's one major
reason why I don't call what I do "free software" any more. I don't want to be associated with the people for whom it's about exclusion and hatred.
Most importantly this list is not an opinion. Almost every listed point has links to appropriate articles, threads and discussions
centered on it, proving that I haven't pulled it out of my < expletive >. And please always check your "facts".
I'm not really sorry for citing slashdot comments as a proof of what I'm writing here about, since I have one very strong justification for doing that -
/. crowd is very large, it mostly consists of smart people, IT specialists, scientists, etc. - and if a comment over there gets promoted to +5 insightful
it usually* means that many people share the same opinion or have the same experience. BTW, I would be very glad if someone submitted this
article to slashdot.org (I've done it once but my submission was rejected).
* I previously said "certainly" instead of "usually" but after this text was called
"hysterical nonsense" (a rebuttal is
here) I decided not to use this word any more.
If anyone's interested I can publish a list of measures required to make Linux edible, usable, pleasant and attractive for both users and developers
but savvy readers have probably deduced everything on their own :-).
On the positive side
If you get an impression that Linux sucks - you are largely wrong. If I had to create a list of Windows problems, it would be almost as
long as this one. Intrinsic Windows problems are almost impossible to fix unless Microsoft starts from scratch. Linux problems are indeed approachable.
Luckily currently there are several projects underway which are made to unify the Linux desktop and make it truly modern and
unified. They are systemd, Wayland, file system unification first proposed and implemented by Fedora, and others. Valve Software is currently developing
Steam (digital games distribution and management system) and the Source Engine for Linux so there's a chance that Linux users will finally get a few AAA
titles. NVIDIA is currently exploring options to support Optimus under Linux.
Linus Torvalds believes Linux APIs have recently become much more stable - however I don't share his optimism ;).
Ubuntu developers have listened to me and created a new unified packaging format, more on it here and here.
Sometimes I have reasons to say that indeed Linux sucks and I do hate it. For this week (the 32nd week of 2012)
alone Alan Cox has closed twofeature requests providing in the latter case no explanation, no comments, nothing, nil,
nada. Lennart Poettering doesn't give a flyingfuck
about how I want to use my system, and I don't even want to mention that those two things used to work previously. "I'm a developer - I know better
how users want to use their software and systems", says the average Linux developer. The end result is that most innovations draw universal anger
and loathing - Gnome 3, Unity, KDE 4.0 are the perfect examples of this tendency of screwing Linux users.
I guess everyone likes to have fun, so if you want to know how people get to this page, here's a very incomplete list of Google queries which lead here: October 2012 keywords list can be found here, fonts related keywords list here.
Fonts problems: in case you've reached this page and you still want good/best/top/free fonts for Linux download them from here.
Additions to and well-grounded critics of this list are welcomed. Mind that irrational comments lacking substance or factual information will be hidden. I'm terribly sorry but I have disabled anonymous comments because some people abuse this freedom.
This is isn't a work in progress any longer (however I update this list from time to time). There is nothing serious left that I can think of.
About the author: Artem S. Tashkinov is a vivid supporter of the Open Source movement and Open Source projects. He has helped to resolve numerous bugs across many open source projects such as the Linux kernel, KDE, Wine, GCC, Midnight Commander, X.org and many others. He's been using Linux exclusively since 1999.
If you want to support the author or if you want this list to be regularly updated, please, click any ad at the top of the page. Thank you!
I'm seeking a permanent job (with relocation) as a systems administrator in Down Under; you can download my stripped (for security reasons) CV here.