Wednesday, 25 November 2015

GUI vs CLI:KLM speed analysis

Introduction

I have decided to analyze what is faster in terms of actual speed of use, the GUI or CLI? In this post I will describe my process, and I will display the results of the various scenarios. All the scenarios describe on how a user would update the software on his computer.

Important:In this test I did not measure the speed of the actual software. What I measured was the total time of how many seconds did the user have to interact(user actions) with his computer to complete the desired goal while using the GUI or the CLI. In other words I am not measuring the speed of the software but the speed of the usage of said software. That is we are measuring the speed of the hand movements and similar(which can cause the carpal tunnel syndrome).




The method



I have used the KLM(Keystroke-level model), it is a method that tries to predict on how long will it take a user to accomplish a routine task while using an interactive computer system. This method assumes that the user knows how to do the taks in question, and it also assumes that in the measured scenario no errors were made by the user.
Keystroke-level model 
I also should mention that although I have used Ubuntu 15.04(Unity) as my reference operating system, I consider that my results are usable on most modern operating systems, because the process of updating the software is very similar with 2-3 common steps:
1)Search for updates
2)User authentication
3)Install the updates

The goal of my measurement was to be system agnostic, so I have simply assumed that the system response time = 0.
Some scenarios however cleverly automate 1), which is perfectly ok for the purposes of this test.
As for the KLM, I have used 4 of its six operators in my scenarios:
  • K - Keystroke or mouse button press-I have assumed that the user is an average skilled typist - 1K = 0.2s
  • P - Pointing to a target with a mouse - 1P = 1.1s
  • H - Switching your second hand from the keyboard to the mouse and vice versa - 1H = 0.4s
  • M - The mental preparation for the execution of physical actions - 1M = 1.35s
I have ignored the D operator because I did not use them in the scenario and I have ignored the R operator because this measurement was system agnostic so the system response time was just assumed as 0, as that is not what I intended to measure. The length in seconds for each operation was scientifically established by monitoring many users of different skill levels.

Each of the operators(K, P, H, M) represents one single user action.
In total I have measured 5 scenarios. Each of the 5 scenarios was first broken down to several steps which were then separately measured by the KLM method. When analyzing the steps I will not describe every single user action, instead I will just write down the neccesary operators and the resulting time.

In the GUI scenarios the user starts with an empty desktop with no windows open. The user in those scenarios is using both the keyboard and mouse. In the CLI scenarios the user starts with an empty terminal. In those scenarios on the other hand the user only uses the keyboard. In all of the scenarios the user starts with both his hands on the keyboard. At the begining of each scenario there is one 'M' operation.
The scenarios are:
  1. GUI - The user has to find the software update dialogue. He also has to check for the updates,authenticate and install them.
  2. CLI - The user has to manually search for updates, authenticate and update his system via the CLI. 
  3. GUI - The user gets a 'notification' which leads him to the software update dialogue. The user has to click on the icon, authenticate and install the updates.
  4. CLI - The user has to update his system via a script file. He has to start the script, authenticate and approve the updates.
  5. CLI + i3wm GUI - the peculiarity of the i3wm GUI is that it promotes keyboard only usage. This scenario acually uses the CLI and the same script from scenario 4. The i3wm GUI however is only used for launching the CLI terminal with the script preloaded onto the terminal. Everything else is pure CLI.


The actual measurements
1)The 'long' GUI scenario

In this scenario the user has to first do 'menu hunting'  until he finds the neccessary system update dialogue box. Then he has to authenticate and search for the updates. After that the user ends his actions by pressing the install updates button.

Here are the steps that I have used to separate everything into smaller chunks:
  1.  Finding and activating the 'start' menu: 2M+H+P+K=4.40s
  2. Searching for the 'software update dialogue'(typing in 'update' into the search box): H+M+6K=2.95s
  3. Activating the 'update software dialogue'(running it): H+M+P+K=3.05s
  4. Searching for the updates: M+P+K=2.65s  
  5. Authenticating(8 letter password + shift + enter):  P+11K+H+M=5.05s
  6.  Installing the updates: H+M+P+K=3.05s
Total: 21.15s 

2)The 'manual' CLI scenario

In this scenario the user has to completely manually input the neccessary CLI commands in order to update his software. The commands used were 'sudo apt-get update' and 'sudo apt-get upgrade'
Here are the steps:
  1. Search for the updates: 2M+20K=6.70s
  2. Authenticate(8 letter password + shift + enter): M+10K=3.35s
  3. Starting the install process: M+21K=5.55s
  4. Review and allow the updates: M+K=1.55s
Total: 17.15s

3)The 'notification' GUI scenario

In this scenario the user gets a notification on his GUI that allows him to directly skip into the 'software update dialogue'. Also the 'search' for updates step can also be skipped as it was done automatically by the system.

  1. Pressing on the notification: 2M+H+P+K=4.4s
  2. Starting the install process: M+P+K=2.65s
  3. Authenticating(8 letter password + shift + enter): P+H+11K=5.05s
Total: 12.1s

4)The 'scripted' CLI scenario

In this scenario the user has to start a script that automates the processof searching for the updates and starts the process of installing the updates. It is assumed that the script itself is finished and ready to use.

  1. Start the script( './update.sh' + enter): 2M+13K=5.3s
  2. Authenticate(8 letter password + shift + enter): M+10K=3.35s
  3. Review and allow the updates: M+K=1.55s
Total: 10.2s

5)The 'combined' i3wm + CLI scenario

The i3wm GUI promotes keyboard only usage. It is something that is called a 'Tiling window manager'(Tiling WM ). I3wm functions in such a way that often you can think of it as a visual extension to your CLI. It is definitely not a traditional GUI. This scenario acually uses the CLI a lot more and it uses the same script from scenario 4. The i3wm GUI however is only used for its keyboard shortcuts to launch the CLI terminal with the script preloaded onto the terminal. Everything else is pure CLI. In this scenario the user has to press the keyboard shortcut that opens a CLI with the same script that was used in scenario 4 preloaded. After that the user only has to authenticate and review the updates.

  1. Input the keyboard shortcuts: 2M+2K=3.1s
  2. Authenticate(8 letter password + shift + enter): M+10K=3.35s
  3. Review and allow the updates: M+K=1.55s
Total: 8s

What have we learned?
Well we have learned that the above picture depicts the truth. However there are other things that we have learned as well...
Is the CLI faster in usage?
Definitely. But I will admit that it is a few seconds slower than I expected it to be.
What about those nifty 'Tiling WM's?
Those are also awesomely fast, however in the workflow their nature is closer to being extensions to the CLI. Had we avoided to use the CLI, then we would have had to go trough the same 'menu hunting' process as we did with the traditional GUI(Unity) and that would cost us a lot of speed.
Does that mean that the CLI is superior to the GUI?
Absolutely not. It only means it is faster in usage. Plus there are many other scenarios to test. For some situations and users it is better to use the CLI, for others it is better to use the GUI.
Ok, but what are the advantages of the GUI then?
Intuitiveness and interactiveness. The GUI uses our 'intuitive knowledge' to make it easier to use computers. I.e. you can take apiece of paper, grab it and throw it into the trash can. The same way you can take an icon, grab it and throw it into the trash can. The CLI on the other hand is a lot like 'casting spells' you have to learn the commands and tell them to the computer. 'rm -rf' is very similar to 'Avada Kedavra' :P
Oh and another thing... Notice how the scenarios with 3 steps are faster than the scenarios with 4 and 6 steps...

In the future
 Further research should be done:
1)Further research should be done on many other scenarios
2)UX designers should try to decrease the number of steps neccessary to complete scenarios.
3)UX designers should implement more keyboard shortcuts for its software even when it is not marketed only towards experienced users.
4)When designing GUI's for advanced users, UX designers should try to integrate the CLI into the GUI.  A good example would be how the file manager named 'Dolphin' has a CLI extension(picture below):

5)Tiling WM's are nice and they are something that should be looked into.

6)The strength of the GUI is in its intuitivity. However when it comes to doing more with less the CLI has the advantage. That means that the GUI world must not stagnate, in order to start doing more with less UX designers must do 'wild exerimentation'.
7)Where are NUI's in this whole mess?

Monday, 23 November 2015

Multiculturalism and why I love it.

Phew, this will be my first blog post that is not related to technology this year. I have gone 11 months without writing about anything that is not related to technology.


Well... What I want to write about is why I am such a big fan of multiculturalism. To talk about multiculturalism first we need to define what exactly it is:
Multiculturalism describes the existence, acceptance, or promotion of multiple cultural traditions within a single jurisdiction, usually considered in terms of the culture associated with an ethnic group. This can happen when a jurisdiction is created or expanded by amalgamating areas with two or more different cultures (e.g. French Canada and English Canada) or through immigration from different jurisdictions around the world (e.g. Australia, Argentina, Brazil, Mexico, United States, United Kingdom, and many other countries). 
Multicultural ideologies and policies vary widely, ranging from the advocacy of equal respect to the various cultures in a society, to a policy of promoting the maintenance of cultural diversity, to policies in which people of various ethnic and religious groups are addressed by the authorities as defined by the group to which they belong. - From Wikipedia-multiculturalism

I would just add one more thing, multiculturalism is a goal, not a means or a process. This is not a discussion on how well multiculturalism currently functions in place XY. In recent events it certainly takes a lot of strong will to keep your hope in humanity and the idea of multiculturalism.

I think that the best way to explain on why I like multiculturalism is to mention some of the opposites of multiculturalism. So, what do we have at the opposite side of multiculturalism:
-prejudice, intolerance, inhumanity, brutality, isolationism, misunderstanding, wars, authoritarianism, big brother, dictatorships and ultimately all of that leads to nazism. And that is only just among other things.

Also the argument that some cultures are superior to or more valuable than others is moot. Firstly it is very subjective on which culture is superior. Secondly, sure the west might be superior in some ways to other cultures but only at this moment. 1000 years ago for instance the Islamic world was more progressive both culturally and technologically, there was tolerance to atheists, different religions and tolerance to different cultures.  Meanwhile in Europe at that time we had forced baptizing, an all out war against heretics and everyone who was "different". It was a culture of violence back then. What happened to islam is that all the bad things that I have mentioned in the paragraph above had take over. So, you can't guarantee that western culture will be 'superior' in 100 years. Furthermore if we let the bad things take over we might become just like modern islamic culture, defensive, stuck in our ancient ways and aggressive.

But that is enough about the negatives, let's talk about the positives. 

Multiculturalism promotes peace. Let us look at the example of Europe. Before WWII, Europe was the continent that was the most riddled with wars and with intercultural hate and misunderstanding. After WWII the people in Europe(myself included) and their leaders have finally learned their lesson and they decided that they must do something to stop the wars in Europe. So they decided to form the European union, with multiculturalist policies at its heart. As a result Europe became maybe even the most peaceful continent of modern civilisation.

Another very important and my favourite reason on why I like multiculturalism is that multiculturalism 'expands' my perception of the real world. I.e. if you were born in the English speaking world, you probably know English. And you know your way with people in the English speaking world. Everything else is actually pretty closed for you. However, I who also know German, I also know my way around the German speaking world.  I can go to Berlin as a tourist and enjoy everything that Germans do. I can read German newspapapers, I can read German web sites. I can go to German forums and take part in flame wars on German. I can even make German friends, easier than to force them to speak English. I even took part in a beginner class of Japanese, though my Japanese skills are still not that good.

The conclusion about multiculturalism is that you should think long term. Very long term. You should think in decades and centuries. You should also think about, how could we ever reach the famous "star trek society".

Wednesday, 4 November 2015

Ubuntu Q&A 6.10.2015.

Hello everyone.
This time I will write about the Q&A that happened on the 6th.October 2015. This miniseries will be overviewing the regular weekly Q & A's held by the Canonical community team. I don't promise to do this miniseries regularly because of my own time constrictions. I also will not write about every question that was asked, I will only write about questions and answers which I consider interesting. And I will only indirectly report what was asked and how it was answered. You can find those details in the video of the sessions themselves. I will however put a link to the videos(if I forgot the link, please tell me so in the comments). So let's start with the first question.

20:00 What are their user names on twitter and irc?
Dholbachm,sturmflut,dpm,spij

21:06 Will Kubuntu exist after 15.10?
Yes.

21:45 Do you think patreon is the answer for the adblock for chrome browser, they have joined adblocks acceptable ads program?
They have no opinion. 

23:30 What do you do before the stream goes live?
You don't want to know. They prepare the announcements, they chase guests.

24:15 What year do you predict the postal service will have an Ubuntu snappy app?
Next year.

25:00 Is the unnamed US phone manufacturer still coming?
They can not say anything. They might invite the product management team on the Q & A.

25:50 Why haven't we got all the default scopes on BQ and Meizu on the store yet?
When they released the first phone they decided to give the phones some exclusive value. They are now having an initiative to open source some of those scopes.They open most of the scopes. There will probably always be some exclusive scopes in order to please the manufacturers.

28:00 How many Canonical developers work on Ubuntu phone?
At least 100+ people.

29:40 is it possible to suggest topics for UOS?
Yes

31:30 When the new Ubuntu installer comes, will it still support the small console output for troubleshooting purposes?
They don't remember seeing it. They won't take out the logging.

33:00 When do you expect to see Ubuntu pre-installed in stores for phones or desktop?
You can buy some laptops with Ubuntu pre-installed.

34:00 In your opinion what are the priorities that the application openfoodfacts should have?
Congratulations for being one of the winners. All judges added lots of comments with feedback. There is no settings dialogue.

36:50 What is the feedback from BQ and Meizu about their recent phones regarding sales and customer feedback? Are they happy about it?
Overwhelmingly positive. They don't know the numbers. For them return rates are the most important, and the return rates are very very low. So everyone is very happy with it. Canonical also helps them with customer support. They can't disclose any information, but more phones will come.

39:00 What can help speeding up Ubuntu convergence development?
One issue is that not all Ubuntu phones can run convergence.Another issue is that Unity8 on desktop is not yet stable enough for testing apps.

41:45 Is canonical going to be run over by Germans?
Germans love Ubuntu.

42:50 When Ubuntu personal gets released will the deb version with unity7 get a new theme just to keep visual consistency?
Probably.

43:30 On convergence, how does Ubuntu.layout and the new adaptive page layout fit together?
Ask someone from the SDK team on the IRC or the mailing list.

44:30 Do you perhaps have the information that when the convergence phone comes,will it be packaged with a dock? Also will it support VGA and DVI screens?
They don't have the information.They probably won't have DVI and VGA support.

47:00 Will Canonical put commercials on TV to get a bigger view from Ubuntu. Not many people in the UK have heard about Ubuntu, And I imagine it is the same in the USA. I feel like a lot of Ubuntu users are preaching to the choir when they are promoting Ubuntu.
Yes Canonical is trying to get awareness of Ubuntu. In the past there were commercials on billboards, commercials on airports. And they are working with partners that are pre-installing Ubuntu, like Dell and Lenovo. Commercials on TV are extremely expensive though.Right now they are trying to get the phone out there first.

49:40 Do you think it would be good for the phone industry to create something like a 'BIOS' standard so that we can install any OS on a phone the same
They completely agree with the question. They never understood why we can install any OS on a phone or a desktop while we can not do the same on a phone. They can do the same thing but the user is forced to use the one OS with which the device came with, if he goes to great lengths the user can maybe substitute it with another version of the same operating system.But I can't install Ubuntu on a random phone. Some devices are even locked down. It would be nice to have, and finally something like that is coming, ARM is making such a standard specification.But as long as the manufacturer modifies its OS, interests are colliding. Similar situations were also with PC's and laptops and there it was escalated to the regulatory agencies in order to force everybody to stop trying to build monopolies, maybe that is necessary for phones as well.

52:30 When will we have apps running in the background on the Ubuntu phone? way we can do it on the PC?
It is a big problem.It will have to be done eventually. It is very hard to do right.

This post might be the last post I am doing on this miniseries. Well, probably not the last, but I don't want to do it for every Q&A session from now on. I might do it again sometimes but that is it. One of the resons for this is that the viewership has dropped rapidly. The first post in this series had almost 2000 views in its first two weeks. The last post in this series before this one did barely even reach 200. A more important reason is that I want to reroute my time and effort to something else,still mostly Linux related stuff, like this for example:

And here is the link to the video:

Phew... I am not a journalist(I m an IT student), however I must give a heads up to all the professionall journalists, good journalism is indeed a hard job, keep your chin up :)

Sunday, 1 November 2015

Should I make my own distro?

So, on January 2013, I tried to create my own anime oriented Linux distro, I was however a noob with just 2 years of Linux experience and no barely enough CLI knowledge to 'cd' and 'apt-get'. That what I made was nothing more than Ubuntu 12.04(or 12.10 was it?) and some preinstalled software like a mass renamer for anime episodes, vlc and some other software. And it was made with UCK and the help of similar tools.
UCK:


Now I am willing to maybe give it another go, just for funzies. And yeah, I did get some skills since then.

I don't want to give you an answer directly about what exactly my distro will be, because as you can see if you read it down furrther, I still have questions myself.

So let's talk about some of the ideas I have.
I will definitely again use the help of tools like UCK, except this time I will delve in much deeper. 
For my base I want to either use Ubuntu or Debian. I am kind of leaning more to Ubuntu, because Ubuntu does have sane defaults(and if we go the 'user friendly route' then definitely Ubuntu), plus if it ever succeeds and becomes my brak off success hobby project(yeah Linus I am looking at you :=P )it might become an official flavour in the long run(hey, a guy can dream right :P ?). 

If I pick Debian I will definitely use the netinstall image. Also I don't want to leave it unprotected, however I do not want to use the NSA backed SELinux, or the omnipresent AppArmor. I will try Tomoyo, because I do like the security trough obscurity concept.

If I pick Ubuntu I will also probably try any kind of minimal image, but I will also consider the Unity image except I will remove Unity from that image. I will do that If I want to have the GUI application software that comes by default with Unity (LO, the unity control center, network manager).

But what GUI will you use?
I am 95% sure that I wan't to have i3wm there somewhere. 
But what does i3wm bring to the usermean to the user, with heavy keyboard usage, ultra high on customisation and even less resource usage than LXDE. It will also mean debloating, although Ubuntu is definitely not bloated, it should just come closer to actual minimalism. A caveat however is that i3wm is not one of the most user friendly interfaces.


Ok, but what about that 'user friendly route'?
If I go that way I will very probably make 2 distros, one with i3 and another one with probably KDE,Unity or LXDE.

What file manager?
I still have no idea. I need to do research on that one. But if I don't find anything better then probably Dolphin. Nautilus activates too many background services and screws up i3wm while launching(by default at least, maybe I could even tame it). Pcmanfm however is too barebones in my opinion. I do want to have automounting and a working search index in the file manager, which Dolphin does have even if it is buggy on i3wm.

What web browser?
Probably not one of the mainstream ones. Maybe Otter browser?

Ok but what about the 'flavour' of the distro?
I am once again thinking about 2 routes:
"i3buntu"- basically a flavour of Ubuntu or Debian with i3wm, modified as I have described before.
"something something anime Linux"- The same like before except anime themed. Anime themed or related or useful software preinstalled. The "user friendly route" is actually a subroute of this route. I will probably also preinstall it with renpy based Visual novels. And maybe steam.

Sounds fun, so may I help?
Of course. Contact me here or on my email: bluedragonsoft@yahoo.com 
What I really do need help for is if you can do Debian packaging for some of my own software and some other tarballs. Because dependency hunting while packaging is something that reminds me of vomiting.
If you can't help with that but can help with something else you are still free to contact me

But isn't there already something like an 'Anime distro'?
Yes there is:
And it looks great. I reccomend you to try those before I finish my first alpha.
However I still want to try my idea for the following reasons:
-Mangaka is based of the LTS release of Ubuntu. Which is not bad in itself, but I want mine to be based of the curent release.
-Mangaka does not have a i3wm version
-I want to do it to further my own knowledge of Linux and for fun.
But I would consider mergin my i3wm version with them when I get something workable.

So what next?
My first order of business is to install the tools I want and need and then get my desired image.
My second order of business is to uninstall Unity (either 15.04 or 15.10 if the bug with AMD drivers gets fixed soon enough), install i3wm and test if the image works.
My third order of business if everything is successful is to reprioritise on what I as a person am doing to make enough space and time to work on this.

Just like Linux Torvalds suggested in one of his famous quotes, I plan to start small. This is a hobby project for me.