Mimi Yin wrote:
Hi Jeremy, please see in-line...I think there may be some
misunderstanding about what is being proposed?
Jeremy Epstein wrote:
Also, we've talked about app-response times in general, but what's
a reasonable amount of time for users to wait, when waiting for a
*'Saving operation' *in particular?
Now I am going to separate "overt saving operation" where a user is
in control, from a "covert" save operation where a user does no know
that is what is happening.
*For a "covert" operation, a "hidden save", a "background save", an
"auto save":*
According to the literature and hard research ( I hope your ACM
SIG-CHI membership is current) *its tied to human
perception*(evolution is pretty slow in responding to paradigm
shifts). About 1/10 of a second if it requires redraw. And no, I am
not talking about games or simulation where the number is 1/30-1/60
of a second with all (sonic, visual, haptic) responses fully
coordianted and synchronized to avoid motion sickness. Otherwise,
be prepared to explain what is happening or offer the user a way out.
*ICal *(and other non-modal editing apps such as photoshop,
illustrator, or lightroom, autocad, alias, flash) *generally
responds within 1/10-2/10 of a second.Try it.*
If you want to break new ground with a non-modal editing style, go
for it! But you need speed to make it work. If you have an old copy
of the Apple Human Interface Guidlines, its a good introduction. I
can probably lend you my copy.
Its not generally possible on the web if you need to listen to a
response,and redraw the screen. Not even close. With most companies
that do not have the resources of google (multiple oc3's to avoid
mae west etc...) the latencies alone are bigger than that. Not to
mention server processing time, client processing/rendering time....
I don't think covert-save in the way you describe is on the table as a
proposal. I believe we're talking about user-activated auto-save with
feedback to let the user know that the web app is saving their changes
to the server.
There's no misunderstanding. I think you are trying to split hairs. I
interpret a "covert save" as any time the application elects to take
such an action without the user explicitly telling the application to do
so. By "explicitly" I mean:
1) the user clicks a "save" button when presented with one
2) the user selects a "save" or "save event" option in a menu-bar while
the event has focus
3) the user enters a keyboard shortcut for "save" indicated by the menu
while the event has focus.
if its not one of those explicit actions, its covert. If the Detail
View(DV) has focus and a user goes to minical to look ahead a week, they
probably are looking ahead a week. If the UI is trying to be smart and
saves, then it takes control from the user. Calling it "user-activated
auto-save with feedback" doesn't change the fact that the user did not
know in advance that their action might result in a delay, or how to
stop whatever they did. They might draw the conclusion that minical
forces saves, because that's the last thing they clicked on. They may
also think twice about ever experimenting again if the system
automatically exacts a "save penalty" enough times.
If we really think the app will be unreasonably slow, we can even make
the 'save' process modal...disallow users from interacting with the
app until the save is done.
That is similar to Matthew's position: the app will be unreasonably and
unpredictably slow in enough situations to justify making the edit
process modal.
I'm asking why we need to ask users to explicitly click save with a
dialog when we can use the same interaction cue we use to pop-up the
dialog to automatically kick-off save.
Because its about notifying the user and putting them in control of the
situation. Which is what allows you to make save "overt". If the action
were "instant" that would not be an issue in my mind.
*An "overt" save its a little different because the user feels they
know why a delay exists.*
This buys you a couple of seconds -- you can fake a spinner with an
hourglass. Much longer than a few seconds and you owe the user an
explaination as to why its taking so long, how long you think it
will take, and allow the user to cancel too.
I think user expectations probably vary depending on the amount of
data they are saving. Editing location I would expect to be quite
zippy. Expanding a recurrence rule to be 100 occurrences instead of 3
occurrences understandably takes longer. How long does it currently
take us to process creating a new event on the calendar?
You are expressing an opinion, and you are certainly entitled to it.
Its my personal expectation, based only on my personal experiences, that
both operations should be instant. As I wrote this I opened up outlook
and created, then modified a daily repeating event with no end date, at
least a hundred recurrences. I've done this many times in the past. I
then changed the location. Both operations completed instantly ( i.e.
within the 1/10 of a second it would take for me to notice) Without hard
quantitative data I might suggest that within the modest demographic
group of U.S. based white collar office workers outlook's performance
sets one acceptable lower bar for performance. Ical may perform even better.
Just to clarify: The slowness will happen if you edit the Title field
and then click in the summary table view to resort the list. This is
because the Title changing affects the sort order? Does that mean that
the UI will only be slow if the user resorts the list by the Title
column? <OR> Resorting by any column will be slow?
Hmm no. let me clarify with two examples:
*example 1: *
1) we have a list sorted (a-z) by title, showing the first page of data,
items 1-10 of 100.
2) user clicks on the first item whose title is "Apple".
3) in the Detail View, the user changes the title to "Zoo"
4) user clicks on the second event. This causes the first event to save.
In saving its now on the page 10, and the first page of ten items now
has a new entry. This may require a request to the server to refresh and
reorder the first page of data.
*example 2:
*1) we have a list by title sorted (a-z) by title, showing the first
page of data, items 1-10 of 100
2) user clicks on the title header (or a menu etc...) changing the title
sort from (a-z ) to (z-a). This may require a request to the server to
refresh the data.
In both cases the web UI has a buffer of items to display in the dash
but a user action causes those items to go stale (because of the edit)
or be irrelevant (because of the sort). Even with all the "AJAX"
goodness the server still does the heavy lifting. You really need to
have Matthew or Bobby chime in for a definitive answer here. I do not
know all the specifics of the persistence layer.
The only reason I mentioned location and notes as possible exceptions is
that they do not show up in any view (to my limited knowledge) where
they may modify data that may be used in generating or making sense of a
view, as described above with a dash example. If in the future you can
navigate items with a map, then location might also require server love.
The attributes that show up in the table are:
+ Task stamp
+ From and To (if there are any)
+ Title
+ Start date/time
+ Triage status
To summarize, the 2 scenarios we've identified that will make the UI
respond sluggishly are:
1. Editing fields that appear in the Dashboard and then resorting the
list; and
Please see my example above.
2. Editing the recurrence rule / recurrence
There may be requirements around non-recurring events as well. I'm not
sure off the top of my head. Keep in mind that requiring the item save
mechanism to be fully aware of which combinations of view, state, and
stamp allow for a "covert" save makes things very fragile and makes it
very difficult for contributors to cleanly extend items with novel types
of stamps. Engineering-wise it might be better all or nothing.
Perhaps we could offer more specific messaging than 'Processing...' We
could say:
+ Re-building sort index...
+ Expanding recurring event series...
That might help set user expectations?
Any time you tell the user why there is a delay may help. Without
objective test data I can't say for sure. I also couldn't justify the
engineering effort.
Addressing fields are especially tricky-- When you auto save are you
going to send new invites out?
You might want to explain yourself there, because changes to address
fields carry very specific expectations, and could put you in a
tricky spot.
There is no in-band sending capability for Preview. For Preview,
editing addressing fields is like editing any other kind of text field.
I'm only suggesting that users will apply previous knowledge of similar
systems in trying to understand how addresses work. Every user decides
what simliar means for themselves
( if you are so inclined lookup Endel Tulving and his work on cued
recall and don't forget to look into analogy and its role relative to
procedural and declarative knowledge)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Design" mailing list
http://lists.osafoundation.org/mailman/listinfo/design