cat /merlijn/brain

Why you think Linux sucks (and why it’s your own fault)

Let’s rid the world of one of the most prominent Linux myths: “Desktop Linux sucks. It’s just not there yet”.

When Windows power users try out Linux two things always happen:

They get frustrated because they can’t find how to do something in Linux.

They brick their system, or make it extremely buggy.

I’ve been that person, I’ve bricked my system (a lot!), and the fact is, it was entirely my own fault. Linux didn’t suck, I made it suck! This post is a summary of every mistake I made the last 4 years, in an attempt to prevent other people from making the same ones.

Let’s rid the world of a few Linux misconceptions

Linux is different

Let’s start with an example: Bill is trying out Ubuntu and wants to change his screen resolution. Bill knows that on Windows, you can right-click the desktop background and click “change screen resolution”. Bill tries this, but cannot find the “change screen resolution” option. Bill can now do two things:

[the bad way] Assume you can only change this using the commandline. Go online and rant about how Ubuntu is impossibly hard to use.

[the good way] Open the dash and search for “Resolution” or “screen” or “display” or “monitor” or “projector” or whatever. He will find the “Displays” application. If he isn’t entirely sure if that is the right application, he can right-click the icon and he will see a description of what the application does.

Linux is not Windows. You are used to doing things a certain way on Windows. Some things will work differently on Linux. You will have to get used to it. This does not mean Linux is hard, only that it is different. Mac has this exact same problem. Windows power users complaining that ctrl-c ctrl-v does not work on a mac, even though the command button makes a lot of sense.

And yes, you can change the resolution in a GUI

Windows power user != Linux power user

Another example: Jessica knows a thing or two about Windows, she can even re-install Windows, if she finds that dvd she once burned. Jessica want to try out Ubuntu. She takes an old computer lying around and starts up the Ubuntu installer. She knows it’s better to have different partitions, so she chooses to partition the disks manually. She tries to configure the partitions, but she keeps getting errors she does not understand. She gets frustrated and rants on G+ about how in Linux, everything is complicated.

I see this mentality a lot: “I know how to do advanced tasks on Windows. I don’t know how to do advanced tasks on Linux, so Linux must be hard.”

You can do advanced tasks on Windows, because you learned how to do them on Windows. You will have to learn how to do some of them for Linux. This is the same for every platform. You can be a complete Linux Guru, being able to install Linux From Scratch. But you will still have to relearn how to flash your android phone.

Give it time, after a while you will come to have the same skill level on Linux as you have on Windows. Just don’t expect to get there on the first day.

You are a danger to your Linux

Exhibit A: Alice her Windows machine is becoming really slow and she wonders what she could do to speed it up a little. Alice googles “how to speed up Windows”. One of the first results is a blog explaining how to use cCleaner to disable processes. Alice, being a Windows power user, knows this can break her system really bad, so she is very careful and googles each process before disabling it. Alice is happy, her Windows is faster again.

Exhibit B: Bob is running the latest Ubuntu on a 10-year old laptop and notices it is a bit slow. Bob is a Windows power user, he figures he knows enough about computers to do something about it. He googles “how to make Ubuntu faster”. He finds a blog telling him to run different commands. The blogpost is a year old and has a lot of “thanks!” comments, so Bob thinks he can trust the author. Bob runs the commands. When a command fails, he figures it is a permission problem, so he runs the command again with “sudo”. The following week, Bob experiences weird glitches and crashes, and his computer cannot connect to his printer anymore. Bob is unhappy and goes on twitter to rage about how buggy Linux is.

You’re a Windows power user. You can mess with Windows, because you know what is dangerous, you know what warnings you can safely ignore. You are not a Linux power user. You do not know how to make that distinction on Linux, so be very careful!

Do not blindly trust commands from the web

I cannot stress this enough. I’ve seen this happen so many times, with myself, and with other people. A friend of mine wanted to make a lightweight Ubuntu install for a media center. He was using a heavily outdated guide to do so. The guide instructed him to remove a lot of programs, including compiz. Little did he know that newer versions of Ubuntu(Unity) require compiz to function properly. The result: he bricked his system, and blamed Ubuntu in the process.

A Desktop environment is not a theme

A desktop environment(DE) is a collection of software that does a lot more than just “look good”. A DE handles a lot of the “usability” features of the desktop, like automounting USB-sticks, CD’s, DVD’s and memory cards. It also helps you set up your network, it configures DHCP, detects wireless networks and gives you a nice user interface to enter the WIFI password. A DE also handles the function keys (brightness, sound, …) on your keyboard, and it can even connect to your smartphone to show you if you have new messages.

When you choose a DE, you basically choose how you will interact with your computer. If you choose a lightweight DE like lxde, you will lose a lot of the out-of-the-box experience a Windows/Mac user might expect. You will have to pop open a terminal, even to do basic stuff, like change your timezone. Unity on the other hand has those features, but demands more from your hardware.

Xubuntu might be fast and stable, but it comes with a price

A lot of the DE’s share the same libraries and software. Installing multiple DE’s at the same time can cause problems. If you want to try out different DE’s, I recommend doing a clean install with one of the official Ubuntu flavours, or another distro.

Choose wisely, and stick to that choice

Linux gives you a lot of choice. This is a great strength, but also a weakness. People have a tendency of making bad decisions when presented with so much choice.

If you’re looking for a Window/Mac replacement for your primary machine, and you are new to Linux, you should use default Ubuntu. Ubuntu offers the complete out-of-the-box experience you are used to on Windows/Mac. It is the best supported desktop, and It also has a good community that is very newbie-friendly. Every problem you will have, someone has had already. Askubuntu is full of questions Windows and Mac users might have when switching to Ubuntu.

Askubuntu, helping Windows users change to Linux since 2010

You will surely find a DE that is easier to use than Unity. You will also find one that is more stable and one that is more beautiful. However, Unity offers the complete package with very few rough edges.

It’s also easy to find a Distro that is more up-to-date than Ubuntu. Finding one that is more stable and one that is faster is easy too. But again, Ubuntu offers the complete package, with very few rough edges. It makes the transition very easy and it is a care-free Windows/Mac replacement.

With a Numix theme, Unity looks pretty good!

Conclusion

Are you thinking of joining the cool kids and trying out Linux? Then start with an easy distro like Ubuntu and be careful with what you do in the commandline. Most important of all, remember that Linux is different, and that’s a good thing.

If you don’t ls -a, they’ll never show. And they are mostly configure files from various softwares, placed there simply because it is easy to find. Imagine you want to change a configure of bash. Isn’t it nice just typing vim ~/.bashrc and you gets it?

“If you don’t ls -a, they’ll never show.” Right, let’s do like the ostrich does when a danger is spotted!
Come on Ron, seriously, do you think that best way to fix things is to sweep them under the carpet? Your answer reminds me of this strip: http://dilbert.com/strips/comic/2004-01-11/ (btw, Scott Adams, you’re a genius).
I’m not talking about configuration stuff – that, btw, should have its own directory within ~/.config (hello!) or even ~/.local – no: I’m talking about everybody placing their shit inside ~ but hidden. I wonder what’s the mindset of those folks, if they think we are brainless wincrap users that don’t care about such things >:( Hell, it’s like almost all software development teams NEEDS a sysadmin to put things tidy.
An that’s just the beginning because apps like Chrome/Chromium places their temp data inside ~/.config… WTF!
As you see everything is a mess, there’s not a simple way to keep all your configs tidy in one place and in the event you would like to backup your configs… well, you must bring out your scalpel and dissect what you wanna take with you and what don’t, you can’t just backup, let’s say, ~/.config knowing ALL YOUR CONFIGS are there because you know it’s not, and in fact by blindly creating a backup of your ~/.config directory you will most likely be pulling a lot of stuff that it isn’t really important (like the GB or so Chrome stores as tempfiles…).

In fact a *sane* way to keep things in order would be to have a directory for documents (documents properly said, music files, pictures, videos, logs, whatever), other for tmp files and directories belonging to the user (like aforementioned Chrome’s directory, ~/.Mozilla, ~/.conkeror, etc.) and one to store configs.
That way you will gain in data and configs portability without risking to carry along irrelevant stuff that hogs your storage devices and make backup/restore processes longer.

GNU+Linux’s ~ directory IS A MESS that needs to be addressed sooner than later as in the future it will be even worst. I myself have setup my ~ more or less the way I describe above with the aid of Btrfs subvolumes but that’s a hackish way to address a problem that shouldn’t exists at all.

First things first, Putting your config files directly in ~ has been considered a standard for a very long time (http://www.pathname.com/fhs/pub/fhs-2.3.html#HOMEUSERHOMEDIRECTORIES). Even if that would not be the case, there would be no need for you to degrade your criticism by calling people “brainless”. If you want people to respect you and your opinions, you should address those people respectfully.

Ofcourse, the new trend towards putting config files in .conf is a much better alternative. And you see more and more applications doing that.

As with chrome’s cache, one of the reasons they do this, is because cache can contain sensitive data that you don’t want other users on your computer to see, so they don’t put it in /var/tmp. There currently is not standard to where to put user-specific tmp files, so you can’t blame them for not following the standard. If you have a better solution, you can always contact the chromium project and propose a change. Or you can try to make a standard for where to put those files.

THIS is the power of Linux. There is no divide between developers making the program and users complaining about the program. Everyone can be a developer. If you can’t write code, you can at least write proposals. But you have to realize that everything you use, was made by a human being just like yourself. So be a little bit more respectful.

PS: The population is not divided in a group of geniuses and a group of brainless monkeys.

That ‘anybody can code’ is an ultimate fallacy, OTOH coders are not administers and that’s why the shouldn’t give a choice about the filesystem layout.
I work with coders every day and most of them knows little to nothing about systems administration – hence the havoc they do whenever they need to place files.

What you said is true. However, IMO, it is hardly a fault for linux. As a matter of fact, I think *nix file system has already done a splendid job to separate system files and user files in different mounting point. Just look at the mess of MS Windows. Messing some files(boot.ini, for example) outside “C:Windows” can make the computer unbootable? What the hell? In fact in linux, even if we rm -rf ~/*, the system will still operate normally like nothing happened. That’s already something don’t you think?

The ~/ is messy. But that’s because there isn’t a standard for everyone to follow. And independent software developers have their own idea for keeping things simple. You can broadcast your idea of clean and tidy, but other people might just think otherwise. For example, for chrome, if it breaks. And I literally don’t care what the crap causes the problem. The simplest way to fix it is to delete ~/.config/[chrome] and restart chrome again. Imagine if chrome place its user specific files(config, temp, add ons, etc.) in several folders, and I want to “reset” it like I just mentioned. How many lookups and operations should I take? So in this mind set. I am content with chrome’s current way. Though the name “.config/” might not be proper for it. Maybe “~/Library/” like how os X do is better? Oh, then which routine should we follow, again? If each person follows their own routine again, what difference does it make? And it add some unnecessary typings when you want to access the configures. Example,
access bash’s configure: vim ~/.bashrc
access fish’s configure: vim ~/.config/fish/config.fish
Oh bummer.

Setting up a standard, like os X did, may be a good start. However, who’s the one in charge for this? Users? Distro developer? Linus Torvalds? Come on, even the system file management is diverged between Distros.