2010
04.27

One year on, same presentation, absolutely no significant change what-so-ever. His hearts in the right place but I really don’t think that even if the community did exactly what he said it would really change a thing.

If a boat is sinking and when someone does a speech ‘hey, the boat is sinking’ it makes waves* then the issue is not that the boat is sinking, it is instead that nobody has noticed the boat was sinking.  Fixing the boat itself will do nothing.  Suggesting fixes to the boat will do even less.  Your core issue is that nobody actually sees that the boat is sinking.  “Guys, I gave this presentation a year ago and there is still water pouring in the sides, what we need is a team to set up a fund to pay for a crew to board up the holes that you guys keep making.”  Lets face it it’s not really tackling the actual issue – people keep putting holes in the boat.

Even saying something as fundamentally obvious as ‘Choice in software is good, choice in standards is bad’ creates controversy and argument.  Essentially what has happened is Linux has become a movement, rather than a bunch of lines of code.  Tenets of that movement such as ‘choice, freedom, superior development model’ are viewed as infallible, thus anything which casts doubt on this is attacked.  Saying ‘standardize on a package format’ goes against the ‘choice’ tenet and as such you’ll get slammed for it.  Saying Gimp isn’t very good – especially compared to Photoshop – goes against ‘superior development model’ and again, you’ll get slammed for it.  Many people actually believe that Gimp is equal or better than Photoshop – which is incredible.

It seems to me that the problem is a culture of defensiveness and denial is at the heart of the issue.  Linux uptake is staggeringly slow (~1% marketshare and, what, 50% increase in the last 5 years?) yet the attitude among the supporters when faced with unhappy users is “If you don’t like it piss off, it’s free”.  The community consists entirely of people who like it more than the competition – people who don’t like it leave pretty quickly.  If the Leopard Print Couch Company wasn’t doing so well, do you think asking a cross section of the people who own Leopard Print couches would provide valuable information into why they were not selling much stock?

I suppose what I am trying to say is that the Linux community reminds me of the Leopard Print Couch Company, who want a couch in every house but can’t figure out why it’s not happening.  Someone walks into the shop and says ‘I don’t like Leopard print’ and they’ll get told ‘everyone else here likes it’ and tell the customer to leave and then continue on discussing changes to the pattern “If only we could add more spots, then we’d succeed!”

The feeling I took away from this presentation was that which I get from virtually all these ‘lets be humble’ sessions – “we are nearly there, we just need to sort out a few little issues and then it’ll really take off” – when from where I am standing there is a massive, and widening, gulf between where Linux is and where it needs to be.

The true issue is that the people responsible for the holes in the side of the boat don’t even realise that they are creating them.  Pointing at the holes is pointless, getting the people making them to stop doing it is the actual solution.  Good luck with that though, as the community largely likes the holes**.

* Sorry!

** Just as the Leopard Print Couch Company wouldn’t change pattern – everyone likes Leopard print after all, just ask our customers!

25 comments

2010
04.14

I bet if you looked in the standard Linux advocates dictionary you’d be hard pressed to find the word ‘easy’.  It’s probably cowering somewhere among the Z’s, hoping that the the torture will stop.

What am I referring to?  Comments such as this (or Google your own) …

Maybe if it wasn’t so easy to change it would matter a little but now it’s starting to sound like a bunch of spoiled babies crying because mommy didn’t cut the crust off of their sandwich. Get over it people…

In the above example the zealot is saying how you shouldn’t complain about a usability regression because it’s so easy to change back.  Here’s what people are referring to as easy:

It is easy to change back to the traditional top RHS.
Alt +F2 to open launcher
gconf-editor
select: apps/metacity/general/button_layout
Place ‘spacer, after ‘menu:’
menu:spacer,maximize,minimize,close

It’s almost as if you say something is easy enough times it’ll suddenly be easier – such as ‘updating is easy, just type sudo apt-get dist-upgrade’ – ignoring the fact that words have actual meanings, and changing the meaning to make something seem better than it is is dishonest.  Here’s the dictionary definition of ‘easy’:

Easy: achieved without great effort; presenting few difficulties : an easy way of

Of course when you actually bring up the fact that it’s not easy you’ll get this fun little qualifier added ‘It’s easy when you know how‘.  But as far as all the dictionaries I have checked none have ‘when you know how’ anywhere in the description.  And why not?  Because ‘when you know’ negates the whole meaning of ‘easy’.  Here’s a bunch of other things that are ‘easy when you know how’.

  • C Pointers
  • Regular Expressions
  • Mod Rewrite
  • Juggling
  • Professional Snooker
  • Tightrope Walking
  • Multidimensional Arrays
  • Assembly Language
  • Windows Arabic Edition (it’s easy once you learn Arabic)

You see where I am going with this.  In fact I can’t think of a single thing that isn’t ‘easy once you know how’.  Even the deliberately obfuscated languages such as Brainfuck are probably fairly simple once you get to know it well enough.

CLI vs GUI

Think of a GUI as a complex network of roads and paths.  You have all the paths in front of you and can see the main highways (start button) and little hidden side-roads (control panel) but although they are sometimes twisty and poorly signposted it is possible to get from A to B without a map.  Not that a map wouldn’t help, and not that the signs can’t be better, but getting from A to B does not require one.

The CLI on the other hand is like the same network of roads, but instead of having signposts you have a blindfold.  You need to know exactly what road you need, where it is and how to get down it.  One mistake and you are lying in the ditch.  It’s the whole point of a GUI and why they have been so wildly successful – they make things easy.

I remember telling a veteran Linux user about tail -f to monitor updates on a log file.  It’s not because he was stupid, it’s because he had never ever read the particular bit of documentation that described this feature.  That is, to effectively use a CLI based interface you must have already read and remembered everything about it.

If we take the above example as a GUI then the program will often pop up a message ‘changes detected, do you want to update to the file stored on disk’, with Yes, No and Always as an option.  There’s no way you could not know about it.  Same thing with mounting volumes, I’ve used various GUI partition tools for the last 20 years and the only thing I need to know going in was what I wanted.  I used the Linux mount command for the first time and wasted the best part of an hour due to not knowing to add ‘-umask=0666′ to the command to make it user-readable.  If that was a GUI there would have been an ‘allow user access’ checkbox and the problem would not have existed.

If something requires a mass amount of prerequisite knowledge then it is not easy!  If there is no way of knowing that something is even possible, let possible to figure out yourself then it is not easy!  Just because once you have invested the months of practice into learning whatever you happen to be using (Bash, VI, Emacs, Perl, etc) you can do something in 5 seconds does not make it easy!  If you have to copy line by line from the internet into a terminal window with no idea what you are typing means, it is not easy!

Hell, I am at the bottom of this article and I simply can’t remember what the steps were that were outlined as ‘easy’ – so if something can be written and read multiple times and you still can’t remember how to do it, it’s not easy.

Update: That’s not to say you don’t get some terrible GUI apps – you do.  But the natural state of a well made GUI app is to be intuitive, obvious and easy.  A CLI apps natural state is to have a mandatory RTFM requirement.

78 comments