Tuesday, September 13, 2011

Why Linux Sucks on Desktops and How to Save Your Ass

In terms of pure resource usage, performance, stability and security Linux wins. Pick any distro (from Debian, Scientific, OpenSuse, Mint, Arch, PCLinuxOS...) and compare it with Windows 7, you'll know what I mean. Discard X-desktop and the stuff beyond, pure linux shell is perhaps the most powerful tool for computing. I've never been a Windows guy. But quite often I came back to it at odd times when I am almost pissed off by the so called direction (or lack of it) in the Linux world. So what're those minor glitches that sour the desktop experience.

Here's why Desktop Linux Sucks

Desktop Graphics Drivers

If you've a plain Intel IGP on your mobo and you are not a gamer, almost always you'll have a smoother experience. Similarly you'll have a painless experience with older realtek, atheros, huwei and many other devices. But if it's new, shiny and of non-standard (as per linux driver support) you're stuck. Take for example Nvidia optimus graphics technology related to switching between IGP and discreet graphics. It's been more than two years yet the graphics stack is half-baked. ATI/AMD side of the story, especially concerning the recent Fusion series APUs, is more grim. Though AMD was much vocal a year back regarding open source drivers for its fusion series APUs, the driver support for Linux is lame at best at the moment of writing this post.

I have an Asus 1215b EEE PC based on Fusion platform that sports a C-50 APU (AMD Ontario CPU + Radeon 6250 GPU). Windows 7 runs quite well and offers a thrilling graphics experience powered by UVD and DirectX 11. Linux? Fusion graphics is muddy with multiple wrappers, drivers and methods. When kernel 2.6.38 flaunted of having Fusion APU support through Gallium drivers it didn't disclose that it was limited to just decent graphics. You can't expect anything beyond, forget the support for UVD and 3D acceleration till next couple of years. For better graphics experience you're left with distro-specific fglrx drivers, xvba/vaapi wrappers and suitable xorg pieces. But the distro-specific drivers are generally dated, so, I pulled in the latest catalyst driver sources from AMD and compiled them for Debian Squeeze. I had a good-go, but the graphics performance was inferior to that of Windows 7.

Correct the Basics

Blue Screen of Death is history. Modern Windows OS (XP onwards) ensures you land at least on a basic vga mode if the install disk lacks proper display drivers. Then you're ready to install the proprietary drivers. But linux graphics problems sometimes slam you with a black screen (call it Black Screen of Death), and if you are unlucky you even can't enter to a rescue shell. Sure, there are dozen of cheat codes [(nomodeset, radeon.modeset=0, nvidia.modeset=zero, intel.modeset=0, if kms is messed up) or (vesa="numeric resolution value" for a vga screen or xforcevesa) or (some similar acpi cheat codes on the kernel line)] to put you on a workable shell. Who cares with these not-so-dirty but definitely-cryptic codes? Distributions should come up with fool-proof measures to land the users on a vga desktop without much fiddling around.

Desktop paradigm is gone. It's the time for mobile computing where sleep/suspend/hibernate/resume is very necessary. Linux world has been fighting with these features for years. These features work fine with standard distributions running on standard hardware. Sadly, they are far from being stable in case of very new or esoteric hardware.

Bewildering Choice vis-a-vis Rapid Development

Choice is good. But bewildering choice is very bad. Mass look for a few working applications, not a million shoddy clones. Situation is slowly improving in this regards. Thanks, the leading and serious flavors such as RHEL (and its clones), Debian, Arch and most recently Mandriva following frugality as far as choice of applications and desktop environments are concerned. Less configurations and less packages means less clutter. The bewildering choice and plurality in design philosophy decrease the mindshare. It also kills much of developers' hours in re-inventing the wheel. This coupled with rapid development worsens things further. Take the most popular distributions of our time, Ubuntu. Though it pulls packages from Debian testing/unstable it puts efforts in developing a few packages and polishing them. It follows a fully automated packaging and testing. However, given a 6-months release cycle, it must not be putting more than a month towards real development. Who'll expect fidelity from such a fleeting women!

Linux != Open Source. But the later is blamed for the plurality in Linux. For example, in Windows, if a certain version of package works it works. But in linux that's not always true. For example pidgin 2.7.3 on Windows, owing to the singularity of platform and API standards will be the same across XP, Vista and Win 7. But the pidgin on Fedora might behave differently than it does in Debian. The difference lies in how the particular software is packaged across various distributions. The same is true in case of some core components such as kernel. Kernel 2.6.38 in Debian backports repository is not 100% the same in Remi's repository meant for RHEL and its clones. The same trend is true in case Ubuntu, Mandriva, Arch and Slackware. Each original distribution has its peculiar set of patches for kernel, and particular build flags and dependencies for a particular software.

Features vs. Polish

Firefox undoubtedly has more options than Chrome, and OpenOffice is more versatile than any other proprietary office suite. Both are feature-rich, but both lack polish. Firefox is trying to catch up chrome on desktop. But still it lacks the philosophy of chrome, frugality. Firefox still caches aggressively like a hungry beast and sometimes forgets to flush. OpenOffice is jumping from Sun to Novel to Document Foundation. It's as slow as a sloth. Performance improvement is a long due for OpenOffice (now LibreOffice).

So, How to Save Your Ass?

Hardware and Distribution

1. Choose standard hardware. Save the output of your "lspci" commmand using any liveCD and post the text across popular forums to know which distribution fully supports your devices. Of the supported distributions choose a stable one from Ubuntu LTS, Debian stable, CentOS or Scientific Linux. If you're hardcore gamer, forget linux for a while.
2. Pin up the critical packages. If your current setup runs your devices well pin up the core packages such as xorg, kernel, sound-base packages and other device drivers so that future upgrades won't break your setup. I've faced sound problems, graphics hells and many booting problems related to upgrading core packages.
3. Don't tinker much. Choose your favorite distribution, customize it to your liking and forget. No need to always put newer bits and pieces. Newer is not always better. Even all new features may have nothing to do with you. Go by perceivable experience regarding performance, features and stability, not by numbers and benchmarks.

Personality and Distribution

1. If you really want to learn linux and expect a painfree experience for a longer future, choose Arch or Slackware. The things you learn here will last for ever. And a perfect Arch or Slackware setup will rarely go wrong.
2. If you want to make living out of Linux go with Scientific Linux. Because it's perhaps the most sincere clone of RHEL the present king in the enterprise world. Though it doesn't replicate RHEL in bug-for-bug philosophy, it's more predictable and open than its more popular cousin, CentOS.
3. If a great no-nonsense home desktop is all you want choose one from PCLinuxOS, Mepis or Mint. All three guarantee a superb desktop experience out of the box. PCLinuxOS gathers the best from across entire Linux distros, Mint does Ubuntu much better and Mepis polishes Debian to the extremes for a hasslefree desktop experience.
4. If you don't fall into any of the above and are apathetic to Windows. Choose FreeBSD, tame it with extra caution and make it your own. It's very very unix to the core and very systematically designed. If you don't want to shed that extra sweat choose OS X. Buy Apple hardware or assemble your Mac following insanelymac website and put OS X. OS X Mach kernel is heavily inspired by Unix. You will get many of the POSIX features including Bash shell.

That pretty well sums my two cents!

How about this