Hello, I am Matilda Sitch from Colabora and I will speak loud, I will try to speak loud,
okay?
I will speak about a cool UI command tracking and another reason.
First, why do we need it?
Well, at the UI, there is a question always that how should the UI elements be, how big
there should be what kind of image, what kind of name, should be and where should we place
this UI elements where we can have a lot of theories to do it, but we can also check what
users do it, and figure out some problems maybe only if it's good, like if they
undo most of these times, then maybe the UI element is not perfect and we can also check
how much the users use them, there is a lot of other ways how we can use this kind of
flux.
For example, I made a screenshot from another application where we can see the paste button is
much bigger than the copy and the cut, and I heard that there are some statistics about
what the users do, and they see that the paste used much, much more than the copy and the
cut, and so they just increase the button to be sure that the user can much easily use
that.
So, let's see what we got from it, this lags made from 12 days, so it's not a huge time
in Taiwan yet, but you can see that the paste and the copy is nearly the same in our cases,
but sure the cut is used 10 times less than the paste or the copy, maybe or users
use it differently, however, there is another option that we only counted the you know
paste and the you know copy command, and it can be a button, but it can also be generated
by keyboard shortcuts, so maybe we could separate them and we could get different stats,
maybe the other application they can't eat only the button clicks and that could result
the difference, but all other stats could be useful, for example, it's good to see that
we use most of the times for texting, but all of the moves movement is more in this case,
and it's also good to see that removing text is much less than the input text, but we can
see that 400,000 characters were inputed by users in these 12 days, and that we have
other stats, for example, what was undoed, we can also see that the paste was undoed
very many times, it can be a logical, I think if you paste somewhere and oh we have to paste
it's one character, later than we undo it and go away and paste it again, maybe that's
right, more, there is a strange problem here that we have an unknown command with undoed,
but it's because there is a bit of problem, it was not able to connect R, undo with
undo and do at command, or undo a command, we can improve it later, but I think this
that's does not seem to be bad, but for example, the last, in the table, the table cell background
color was used only 12, 21 times, but it was undoed five times, we could say that it's
many of them was undoed, maybe it's not the best, but it seems not so bad at all, we have
other statistics like typing speed, it's not important, it's just interesting, command transition,
for example, it's logical that, then it was used mouse clicks only 25 times, but it was used
a lot of text input or other navigation, it's logical if we click, then it will ruin all
navigation, so we don't click many times if we are using navigation, but in other statistics
are using, for example, we can see that many cases there was not even one user, I mean
that is more than 20 times more times, documents was opened only by application, like converting
it or something like that, and for example, we can see how many people was editing or
just viewing, this information can help us figure out how to set up servers for them, and
many other cases, but we can use it for, and about how to implement it at first it was
seems, it's very easy, we just find a function where other commands go, I find the function
in the server, and we just look these commands and then make some statistics, it's very
easy, but in the reality it's much more complex, for example, I mentioned that paste,
baton or keyboard, if we want to separate them, then it's not enough to check in the server,
we have to somehow find it from the UI as so, which it can be find in the client, but in
the client side code, it's not in one place, so if we want to check them there, we should
make codes everywhere or on the source code, so I decided to keep it in the server side,
but we still can fix this by making separate commands for the batons, and separate
you know, command for the keyboard, and then it can be done, another question was, what
do we want to log, what kind of statistics we are, because this is very subjective things,
like for example, the client visible area, this is a command we get, but it's not directly made
by the user, so we thought that it's not needed, but we can, if we want such statistics like
how many times the user done something that the visible area changed, then we have to log it,
so I rather made a configurable point to the code where we can list what kind of code
commands we want to log and what do we, we don't want to log, and another complexity that
what should we do with the parameter, so if it, because in some case, we need this parameter,
for example, in the k command, it can be a space or an arrow, and sure we need this information
what it is, but if we are typing text, we must not log the text that the user typed,
because we have to make it anonymous, and another complexity is that how to
count the andro, I mean, now I do, it's like that there is a vector in the core that contains
either an ando state, when we change the document then it will add an ando state that we can
use for ando, and if before the command, and after the command, I check this vector and it
changed and I, I will log that the ando state has changed, it gets one more and or one less,
element, it has other problems, but I rather skip them, now and the match thing is again
complexity, because we don't want to log one handy times that someone write it one letter,
the other one to have only one line that there was 100 letter typed in, and this is even not
so easy, because at first we talked with one to murder everything, but in then that was things
that we want, we don't want to merge, for example, the key commands, if we merge everything,
then we will not see which is navigation or we ended up to save, log this information like up or
write or page up, not like a 9 navigation, another complexity was that we have to convert some of
the commands, because like if the user made a most click, it video sees most than and the mouse
up, but we don't want this information, it would be enough to log only just a mouse click,
in other cases, for example, the key command can be a space or an enter, but this is more like a
text, so we should log it as a text input, but other cases if the key was an arrow key, then it should
be not a text input, so in the run time we have to convert even these commands, and we also have to
care about if the control the shift key was pushed to, and even more complexity is that
multi user and multi document, where we have to separately keep track on every user, what
commands was they last last commands was used for merging, and we have to keep what commands
are undoable, if you use an undo, we can choose what was undoed, in the multi document,
please, we had some problems with the logging system, I tried to try the more things, because I think
I don't have much time, so, and there are more problems about the merge, we can lose the order,
if you want to log at run time and log at merge at run time, then we have a logical problem
with the order, because we cannot log the command until we figure out that the user
started to do something else, I mean if the user run start to type and he doing it for a long time,
okay, then if you have one type along and the user to just join in and do something and
quit, then the user to be logged, but the user one will still not log, because he still try typing and
it don't see, then he will stop, but once user run stop typing and do something else,
it will be loaded after the second user, but with an earlier time stem, it's the
order, but we can fix it, but we can fix this order at a later time, in this case in the
script that makes the statistics, there was other complications like there are, there are no user
in the sessions in the combat application of something like that, and sure we had to make a
script to make statistics about it, and this is just an example of the lock five, but we are
now logged in, and I think I should finish now.