2010
06.29

I don’t like multiple desktops.  I use spaces (Apple’s version) on my Mac not so much because the feature is so good, rather because the dock is so bad.  Now this isn’t me telling you ‘stop using them’, as if they work for you, that’s fine.  What I am trying to say is that they should not be imposed as a default UI mechanism on users.

Multiple desktops (if you don’t know already) essentially emulate having multiple monitors, with the ability to switch between them at will.  You can have Firefox open on screen 1 and Notepad++ or something open on screen 2 and flick between the two workspaces as you work.  Unlike a real desk though there is no actual limit on how much you can have open on one screen at once – you can have 1,000 windows one on top of each other.  What multiple desktops do is provide you with a way of organising multiple applications better.  That is, the basic application switcher (Dock, Start Bar, etc) has problems organising things necessitating an additional metaphor to aid organisation.  Multiple desktops are essentially a hack to improve on the poor performance of the task switcher.

However multiple desktops add a layer of complexity to what needs to be a very simple system.  The whole concept can be conceptually confusing for beginners and much functionality is non obvious and problematic, such as drag and drop when the drag target is on a different desktop to the drop target.  Programs can also misbehave in that parts of them are on one desktop and parts on another, or they can change desktops, and when you launch a program you must wait for it to open before you can do anything or it’ll open on the wrong desktop.  They also generally require a planned workflow to be useful, Editor on Window 1, Browser on 2, Graphics on 3, Email on 4.  Just putting things on random desktops is always confusing when you are trying to find something again.

What Gnome Shell, as far as I can tell, is trying to do is trying to fix the issues with multiple desktops by providing an easy way to add/remove them and move applications between desktops, which has historically always been very unintuitive.  If anyone has seen Gnome Shell they have in fact removed the task switcher from the bottom entirely and rely on you going to the full screen overview and selecting the desired application.  They have taken what is effectively a crutch to a poor task switcher and made it the main task switcher.  It’s incredibly jarring and inefficient to use due to it’s full screen nature and that the thumbnails can often be too small to make out.  If you don’t want to use multiple desktops (99% of common users won’t) then Gnome Shell becomes entirely pointless too.  Watch this clip of Gnome Shell and ask yourself what the point would be if you only used one desktop.  I don’t deny it looks cool, I just doubt it’s utility.

The problem with traditional task launchers like the old 95/XP/Vista style start bar and OSX’s dock is that they simply don’t handle large amounts of running programs and multiple copies of the same program at all well.  If you have, say, two Finder windows open on OSX for example you must right click on the Finder icon in the dock (do the annoying two finger tap on the trackpad in my case) and then try to work out what instance you want by the limited information given to you by the text list of the programs titles.  The fact that the dock is so bad (as I said at the start) at handling multiple windows from the same application is largely the reason I use multiple desktops as then you can lay everything out and don’t need to use the dock to select the running program by effectively eliminating the Z axis.  Windows 7 has this solved incredibly well with the improved taskbar – watch this YouTube clip (Skip to 1:50 if you want, but watch for a few minutes) – which allows you to easily find your program, largely negating the need for multiple desktops, which Windows doesn’t have anyway.

An often suggested alternative to multiple desktops is to allow program ‘groups’ in the task manager and then when you are using a particular group it will hide all windows from the desktop that are not in that group, so if you had Firefox open in group 1 and Excel and Calc open in group 2 and then clicked on Calc it would fade down Firefox and fade up Excel and Calc.  Groups would be created with +/- buttons and you could re-order by simple dragging of the program icon, plus if combined with a task launcher system ala Mac OS Dock and the new Windows 7 start bar there is no reason the groups couldn’t be persistent.  That is just one of many potential solutions to the problem and I am sure there are many more.  Essentially the issue is one of organisation and should be fixed by making organisation easier and more efficient.  Rather than trying to work around the flaws in the current system with multiple desktops which bring their own problems with them the system should be redesigned so multiple desktops are not even necessary in the first place.

158 comments

2010
06.22

Microsoft had major security issues for the best part of a decade and they were not caused by a rogue programmer or some bad ideas, they were caused by a culture of ignoring security.  Every line of code you write, feature you add and default you set has security considerations.  If you don’t consider them before you do it you end up with the mess that was the Summer of Worms, when a good percentage of all XP machines were hit.  It took Microsoft years of both recoding and (most importantly) developer education and a serious change in practices to put security firmly at the forefront and with the importance it deserves and even now there are still issues caused by this dark period.

Now lets look at ‘Project Ayatana’, Ubuntu’s answer to the fact that Linux usability sucks.  The thing about usability is it is like security, in that every line of code you write, feature you add and default you set has usability considerations.  Although the project has obviously identified the issue (usability sucks on Linux) it has failed to appreciate that it is the culture of ignoring usability that needs to be addressed, not the usability itself.  Failing to address this will still give you usability issues and trying to fix them after the fact is stupid.  Again, Microsoft tried to fix security with a bunch of addons as an afterthought and it just didn’t work.

The issue is that the Linux developers simply don’t respect usability.  They don’t value it as something necessary to development.  Fundamentally usability is treated as ‘making it work for the dumb users’ and it shows.

Launchpad Sucks

Take Ayatana’s home, Launchpad, for example.  To ‘get involved’ you must have an account with Launchpad.  Ok I thought, I’ll sign up, so I went to the site, put in my email address and tried to register.  Except you must open the confirmation link with the same browser you signed up for – if you open it with, say, your Blackberry it won’t work.  They obviously value security by implementing such an (albeit pointless) step but if they valued usability they would have thought about this use case before.  Large amounts of modern sites often don’t require a confirmation email or use OpenID to make life easier – but not Launchpad. So after trying to remember the webmail login and clicking the link from the same browser you are faced with this:

Password must be at least 8 characters long, and must contain at least one number and an upper case letter.

One number and one upper case letter.  None of the standard passwords I use have an uppercase letter.  Sure they are alphanumeric strings and contain all sorts of dodgy ASCII but no uppercase.  I am forced to invent a complicated password which I have written on a post-it note.  Security enforced again (badly) at the expense of usability.

Once you are in you are faced with a page that looks like this (right).  There is no way to get from this page to the rest of the site – no links, nothing.  It appears like you need to change your password again to get in.  You need to directly put ‘launchpad.net’ into the browser address bar to actually get to the site, which doesn’t actually log you in, instead placing a ‘log in / register’ link at the top right.  You then get taken to a page with a button saying ‘log in’, and clicking it logs you in – no details required (right).  I have no idea at all why this step is required – you are logged in by virtue of it having verified your details – what is this pointless step?  And why didn’t I get taken straight to Launchpad.net after signing up?

After all this work you can finally ‘get involved’ so to speak so I hopped on over to ‘https://launchpad.net/~ayatana’ to see what was going on and found that the premier discussion forum for usability on Ubuntu was a mailing list.  A mailing list.  I hate mailing lists.  While in the last 40 years the rest of the world has moved on to other forms of dynamic web-based collaboration they are still using the good old staple of IT communication from the 70′s.  Want to read over what’s been discussed?  Prepare to look though the horribly presented archive which makes reviewing topics almost impossible.  Want to comment on anything?  You have to do that through email.  It works, sure, but does it work well?  No.  Is it intuitive?  No.  Is it a pleasure to use?  No.  Does it encourage contributors?  No, it probably sends them running screaming.

Missing The Point?

While I am not going to dismiss Ayatana as quite as laughable a failure as the Gnome Usability mailing list, which is a whole special sort of failure, it is still fundamentally missing the point:

If you want usability to improve, educate the people making the mistakes and convince them of the value of it.  Trying to fix their mistakes retroactively will be an order of magnitude more effort and will almost certainly not give good results.

Usability is still seen as something for ‘dumb users’.  Most developers sit in their ivory CLI based Bash/Emacs/GCC castle and make things usable for the little people when if they truly valued usability they would start by placing focus on the tools they personally use.  The current system of the walled garden of usability where users and developers might as well be using a different OS says that the developers do not feel they need usability.  Even simple tools are developed as a CLI version and then ported to the GUI, commonly with just a wrapper around the CLI version.  You in the end have a choice between the arcane CLI version or the usually underpowered, overly simplistic and buggy GUI version.

Even now that terrible, terrible article ‘Linux isn’t Windows‘ gets bandied around and treated as fact on a regular basis when, in reality, if usability was valued in such communities the poster would be rightly ridiculed.

Ultimately if usability was a concern, and not just something for other people, Launchpad would have been the first thing to be fixed not probably the last.  Actually it would have been made properly in the first place.  As with security it only takes one mistake to compromise a system with usability it only takes one mistake to destroy the user experience.  Wilfully making the mistakes on the rationale ‘we’ll fix it all later’ is simply not workable.

Furthermore

Such as ‘easy’ has been co-opted to mean ‘quick to do once you have learned how to do it, irrespective of learning curve’ by the FOSS community, the terms usable and usability are quite often redefined to support the status quo.  Take the following link for example: Usability Comparison: Five PC Operating Systems Compared.

The basic premise is ‘lets reduce usability down to how many clicks an operation takes’.  Guess what, Windows 7 falls as a far last with this fantastic quote:

I honestly did not expect Windows 7 to fall behind so badly. I could probably fine grain the tests further, but then I would begin to react more on the impressions that I get from the OS rather than the simple ease of use, or lack of hoops to jump through.

That’s what happens when someone who knows nothing about usability but who likes Linux takes a scientific approach to it.  I mean, ‘simple ease of use’ indeed.  The best bit is this, though:

Kubuntu follows the normal mantra, right-click on desktop to change your background. Thing is, the item you need to click on is “Desktop Activity Settings.” Once you have that figured out (to my shame I had to Google, because for the life of me I could not find where to change my background simply because of the cryptic naming) you can select a background as per normal.

That’s right, he actually had to use Google to find out how to change wallpaper on Kubuntu.  It really is that unintuitive.  However Kubuntu was not penalised for the added time (And got 4 points to Windows 0) as it fell outside the remit of the test and as such beat Windows.  It could be argued that if you just made the whole screen as a 1280×800 grid of single pixels you could assign a function to each one (just over 1 million functions) to a pixel and have the most ‘usable’ system in the world.  All you’d need is a look up table and a ruler!

So, on the incredibly unlikely event that someone from Canonical reads this, actually cares and is in the position to do something, start a project on educating developers (and users) on what usability is and why it is important as I don’t see anything else working.  Considering the bulk of the developers don’t even know what it is you’ve got a large job ahead!

111 comments

2010
06.15

SQL Must Die

SQL is one of those things that baffles me as to why it even exists in the first place.  Well, yes I do know why it exists – it’s so that someone in the 70′s could sit in front of a database and query it directly through the CLI.  What baffles me is why we still use it.

You use a computer language to convert data structures into a human readable string, which then passes it to a database engine, which then parses it back to a true data structure and runs the command.  As a programmer I have to do more work, just so the database can do more work, all to cater for a pointless step.  For example say I have the following array:

$data = array (
‘name’ => ‘Kerberos’,
‘sex’ => ‘Male’,
‘location’ => ‘UK’
);

And I want to add this record to the database, I’d have to run a command something like this:

$sql = “INSERT INTO `table_people` VALUES (‘name’ => ‘”.$data['name'].”‘, ‘sex’ => ‘”.$data['sex'].”‘, ‘location’ => ‘”.$data['location'].”‘)”;
$result = mysql_query ($sql);

I have (as everyone tends to do though) created a database abstraction class so I can just reduce this down to:

SQL::insert (‘table_people’, $data);

Which makes infinitely more sense, but virtually all developers reinventing the wheel certainly doesn’t.

Now if anyone has any experience with SQL they have probably spotted the massive great big security blunder which is present in the long version.  For those of you who aren’t that experienced in SQL, here is the string that the above creates.

INSERT INTO `table_people` VALUES (‘name’ => ‘Kerberos’, ‘sex’ => ‘Male’, ‘location’ => ‘UK’)”

Now imagine someone gave their name as Kerberos’, `administrator` => ‘True and then look at the following SQL

INSERT INTO `table_people` VALUES (‘name’ => ‘Kerberos’, `administrator` => ‘True’, ‘sex’ => ‘Male’, ‘location’ => ‘UK’)”

That’s right, they would by created with administrator access.  You instead must remember to escape quotes with a command such as:

foreach ($data as $key=>&$value)
{
$value = mysql_real_escape_string ($value);
}

Which stops this happening.  Forget it once (or forget the ampersand) and you have a serious issue though, all down to the fact that you must mix data and commands (a cardinal sin) simply to cater for a 40 year old design flaw.

So I suppose the question is, when will we get a data access API that isn’t stuck in the 70′s and isn’t fundamentally broken?  And more importantly why has nobody else noticed this and tried to ditch SQL?

30 comments

2010
06.08

It’s funny how something as utterly basic as the position of the window decorations can cause such massive arguments.  What I really learned is that having such discussions is entirely pointless.  The advocates are going to get upset, confusing criticising parts of Linux with criticising all of Linux and realistically the people who already agreed with me agree with me and the people who don’t skim read it and then call me an idiot.  Simply put, it’s not exactly productive.

But I am sure everyone can agree that Linux usability could do with a bit of work.  Obviously so does Windows and OSX too – the idea of ‘perfection’ in a UI is ludicrous considering the constant changes in use-cases and hardware.  I can’t help but feel that Linux is getting left behind though and the people making a lot of these UI choices are perhaps not the best people to be making such decisions, but in all truthfulness I don’t really have the right to tell them what to do.  Who approved my credentials after all?

So here is my idea.  Make a non-existent Linux distro.  That is appeal to people that are interested in usability, UI design and graphic design.  Through a process of debate and discussion create a virtual ‘dream OS’ concept.  Reconsider everything.  Do not start out with Gnome/KDE and go from there.  Re-examine every assumption about the current desktop situation and then create a series of mockups with HID guidelines, behaviour guides and working prototypes (do it in Flash even).  Maybe create a few ‘best of breed’ applications also, such as a media centre, a basic word processor, that sort of thing.

My thinking is that in traditional FOSS projects there is two main motivations, the ‘fun’ of creating something new and the satisfaction at creating something good.  Since UI designers do not often make good programmers and programmers working (often for free) would not be willing to take directions from someone else, reducing them to a cog in the machine, usability often suffers.  By providing a template though the second reason ‘creating something good’ would still be valid.  After all many FOSS projects are just reimplementations of closed source software – most FOSS games are this way – but people still make them.

It would also be a good way to entirely sidestep historical inertia associated with most decisions.  Large swathes of UI decisions and placements are only there because they have always been there, and the only reason they were there in the first place is because it seemed a good idea at the time.  Projects such as Gnome are like a supertanker with years invested in the particular direction and the people working on it are so close to it, so familiar with it, that usability criticisms with it are often simply not seen.  I remember when I first got my Android phone I spotted so many usability issues with it, but now I am so used to it that I cannot see them any more.  By bringing in people that understand the subject but are not ‘tainted’ with deep knowledge a fresh perspective can be gained.

This isn’t a new idea – I’ve been thinking about this for quite a while and have the overarching structure and methods to doing it fairly well thought through and I honestly do think it is feasible.

So if you are honestly interested in getting involved in something like this please let me know at kerberos at piestar dot net.

78 comments

2010
06.01

So, the buttons again.  It’s been a few months since this change was made and, inevitably, you’ve got the Ubuntu fanboys saying ‘I actually prefer it this way around now’.  So I thought I’d throw this fact out there:

The Left Hand Side (LHS) button position is worse.  This is not an opinion, this is cast iron, concrete, fact.  “But it’s easier for me” is not a valid statement in this debate any more than me declaring “I prefer the Hotdog Stand theme” has any weight.

The statement “It’s easy to change it” is also void as 99.9% of users are unaware that the layout is sub-optimal, let alone realise that they are able to change it.  The job as a developer is to make things out-of-the-box as easy to use as possible.  The movement of the button position to the left represents a step backwards usability wise.

In truth the position of window controls don’t really matter at all.  Ubuntu, as a desktop, got ever so slightly worse but I really don’t think anyone who uses is will stop, and I really doubt it’ll pick up any new converts.  It’s not important.  What is important though is the implications this change has.  But first, here’s why it is bad.

1. The Minefield

As you can see the close button is now on the left, not the right.  Now let me ask you this – have you ever walked along a painted line?  It’s fairly easy as long as you’re not (too) drunk.  Have you ever tried to walk across a 5″ wide beam?  Drunk?  Much harder, despite being exactly the same task.

What’s been introduced here is a button you really don’t want to press, surrounded by buttons you need to press often.  Above, below, to the side – overshoot and you’re going to be fairly unhappy.  While in theory it’s just as easy to press as it’s always been it will slow users down subconsciously (see the balance beam) as much more care and attention will be taken using any control surrounding it.

It also discriminates against those with poor motor control of poor vision.  Before the destructive close button was safely off in a corner, now it’s grouped up with commonly used controls.

2. Convention

It doesn’t fit the convention people are used to, either on Linux or Windows.  And here’s the kicker – it doesn’t even fit the Ubuntu convention.  Top right is ‘get me out of here’ in Ubuntu – the top right button on the screen is shut down.  The top right controls on windows were close.  There was a pattern there.  Destructive buttons away from the main buttons and at the top right.  Menus on the left.  No more.

The thing is this change is far from universal.  Any programs not using the default Ubuntu theme is going to have close on the top right, tabbed interfaces will also commonly have it on the top right.  Remote desktop or virtual machines?  Top right.  You can no longer rely on muscle memory.  Speaking as a Mac user this does get irritating but OSX has always been this way.  What Ubuntu has done is introduced inconsistencies for no reason*.

3. Visually

Lets face it – it looks unbalanced.  You have this big clutter of stuff on the left side of the window – even the title is left justified.  On the right you have … nothing.  It just looks ‘off’.  Visual balance is important.  Composition is important.  Things are much easier to identify and digest if they are separate from their surroundings.  It’s why you have new paragraphs, it’s why you have headings, bulletpoints and those little dotted separator things on menu icons.  Packing everything together fundamentally makes it harder to see and use.

4. Change for it’s own sake.

People say there is nothing wrong with change for it’s own sake – I say there is.  Window controls on the right is the de-facto standard in Linux.  Close buttons on the windows outer corner is the de-facto standard just about everywhere.  If I built a house and installed the light switches upside down you can bet whoever bought it would be pissed.  “It’s not wrong, it’s just different” and “You can fix it in 60 seconds with a screwdriver” simply wouldn’t fly.  People expect things to look and act in a certain way based on what they are dealing with.  Doing it a different way simply for the sake of it makes things harder for no gain – it’s a net loss no matter how you argue it.

5. Usability

As a general rule people seem to drag windows out the left side of the screen to make space as it still leaves the scrollbars exposed.  The clumping of all the window controls on the left means this is no longer really possible as you can no longer close the program without dragging it back in again.  On Windows you can close a window with the Right side buttons, or File->Exit on the left side file menu of the same window.  On OSX although it has the buttons on the left the file menu is always at the top so you can just go File->Quit.  Ubuntu, not so much.

So What’s My Point?

To understand this you have to understand the Dunning Kruger effect.  Essentially nobody thinks they are stupid, incompetent or mistaken.  If you hope to actually be good at anything (and improve) humility and debate are essential.  Failing to recognise this will doom you to a life of being marginalized by your peers.  Even now you still see the ‘Tables or Death’ web developers who refuse to move beyond 1998, convinced in their own methods and superiority.  And they are convinced they are right.

Usability and UI design is a science and is no more part of programming or design than programming is a part of maths.  Being an amazing mathematician will not make you qualified to make programming decisions.  Being an amazing designer (or programmer) also does not qualify you to make UI decisions.  Being a builder does not make you an architect.  Yet it’s all too easy to marginalize what you don’t understand.  The less you understand something the easier you think it is, as evidenced by the multiplication rule of quoting in programming – you make an estimate, multiply by three and give that to the client, because things are always more complicated than you think.  Same goes with usability – if you don’t understand the subject you wont see why moving things about is important ‘it’s a button, you click on it’, yet it is important.  Moving something 2px to the left is a big deal.  Just about every developer has seen a Visual-Basic-and-Access monstrosity yet everyone involved – from the management to the users – never really see the issue with it “hey, it works”, sure, but it should never have been allowed to occur in the first place.  Which is my point on Linux’ usability – we shouldn’t even be having this discussion – it should have been fixed a decade ago!

Do any of the people involved in this decision, which was made behind closed doors, which was submitted 1 day before the interface freeze, which is imposed unilaterally without discussion on the whole community,  actually have any experience or credentials in UI design?  Judging by the fact they did it in the first place – and have yet to provide any actual reason for it I seriously doubt it.  It’s like watching someone who has just discovered the font controls in their email client – everything is now 16pt dark blue, centred and in Comic Sans.  Sure they think it looks wonderful.  I am almost reluctant to joke about them making the default font Comic Sans because they may just do it.  And anyone who says ‘what’s wrong with Comic Sans’ simply proves my point – there is such a thing as not being qualified to make decisions about things you don’t understand.

Quite a few people were surprised by this behaviour, and especially Mark Shuttleworths condescending:

This is a difference between Ubuntu and several other community distributions. It may feel less democratic, but it’s more meritocratic, and most importantly it means (a) we should have the best people making any given decision, and (b) it’s worth investing your time to become the best person to make certain decisions, because you should have that competence recognised and rewarded with the freedom to make hard decisions and not get second-guessed all the time.

It’s been made painfully clear that the people who are making these decisions are not the best people to make them** – or this decision would never have been made.  It is also clear that he thinks he shouldn’t have to put up with plebians moaning about it.  As I said many people who felt like they were contributors to the one big happy Ubuntu family were taken aback when they were essentially told to shut up.  And as I pointed out nobody is really going to say that they, personally, are not the best person for the job.

But this is Linux all over, and what several people are now realizing.  It’s not some happy ‘everyone helps out’ commune, it’s a game of politics, infighting and power.  Decisions are not being made by those that are most competent to make them, and things are not being discussed in an open and forthright manner.  Decisions are instead made by those that have managed to get in to positions of power and as has been proven people only get in power based on their desire for it – it has very little to do with any actual abilities.  If your talent is in UI design then the chances of you ever getting in a position where you can affect change is astronomically low – after all it’s a meritocracy and if you haven’t coded anything you have no right to demand changes to the UI.

I have tried for literally years to get involved, but the necessary discussions simply don’t happen.  If Canonical (and other distro’s) actually gave a crap about usability they would pose decisions like this to the community and get feedback.  If they felt there was an UI issue they would be open discussions about what it is and how to fix it.  Yet we get this random change dropped on us out of nowhere.  Same with Gnome Shell and virtually everything else.  Developed by a small clique of people who are only willing to listen to ‘bug reports’.  If you are not into playing the politics game, or don’t have a lot of time (which is just about everybody) then you are essentially forbidden from contributing – you ain’t paid your dues.

If you don’t believe me check out the official Gnome usability mailing list.  This blog gets more comments than it does and the reason for this is because they don’t use it.  Sure I may be mistaken but I regularly challenge people to provide where these honest and open discussions on usability are taking place and nobody has ever furnished me with a decent answer.  If this was a community contributed project there would be vibrant debate and hundreds of posts a day, instead it is a doomed backwater where people occasionally discuss minor things that will never be changed.

Essentially, my point Linux, and Ubuntu especially is no more ‘Community Developed’ than Windows or OSX is – the only difference is that if you do want to sink your time into improving Windows then Microsoft will at least pay you a decent wage for your efforts.

* The whole ‘Windicator’ thing is nothing but vapourware.  If you are going to move them for UI reasons do it.  Doing it because you may, in the future, move them for UI reasons is stupid.

** I fail to believe that Mark Shuttleworth is the best person to be making UI decisions and that the fact that he is the billionaire owner of Ubuntu is just coincidental.

67 comments

2010
06.01

New Posts!

So I’ve decided to try to post more often so from now on, every Tuesday, I’ll make a new post or at least have an interesting link or something just so you don’t have to visit every day for a month only to realise I am a lazy git.

1 comment