Global bookmarks improve usability
Some people are afraid of computers, because their first experience with one wasn't full of joy. They blame themselves thinking it is their fault, when in fact it could be the system designer's fault (note that the system is not guilty, it is merely doing what it was told).
A well-designed system should prevent the user from doing something wrong, or something that cannot be reversed (ex: deleting an important file); it should give us hints on how to do things right, with increased speed and accuracy.
I decided to create a new section on the site - usability, where thoughts on improving the relationship between humans and computers are shared. I'll start with describing a new concept - the global bookmark.
Global bookmarks
A global bookmark is one that has the following properties:
- globally available - it makes no difference which application I am using right now, the bookmarking mechanism can be invoked from anywhere in the desktop environment;
- content agnostic - it can be applied to anything: page in a book, moment in a song, video clip, position in a drawing, etc;
Here are some examples:
- I am reading a PDF whitepaper in Acrobat Reader and I have to go or I stumble upon an interesting paragraph which I don't have time for now, but which I definitely want to read later. I click "add bookmark" and enter the bookmark's name, perhaps adding some tags - later I can use the bookmark and the system will open the program and scroll the document to the right page;
- I am interrupted while viewing last weekend's photographs, I create another global bookmark - later I can use the bookmark to automatically open the right program and display the right photograph;
- I am interrupted while drawing an illustration in Inkscape - later I can use the bookmark to view the same illustration at the same zoom level, have the same active instrument, etc.
Bookmarks, the ones we are familiar with
Tipically, a set of bookmarks is restricted to a single program - for example my browser's bookmarks are usable inside the browser and the only way to get to them is to start the browser.
Many book reading programs provide a bookmarking mechanism too. As in the previous case, I can get to the bookmark if I run that program.
Another scenario - reviewing a document in a wordprocessor, stopped at page 45. I can go back there, but first - I need to start the wordprocessor before I get to see the list of bookmarks.
All these examples illustrate local bookmarks, ones that are only relevant in the context of a particular program. This is OK from the program's perspective (as well as from the perspective of the program's author), but not so OK from the user's perspective - I have to run the program first, prior to that I must remember which program it was, then find it.
Already working [similar] scenarios in the real world
- Portable audio players memorize the last track that was playing when the device was turned off. When you turn it back on, playback starts with that track. Some devices memorize the position inside the track, thus playback is resumed from the exact point where it stopped;
- Palm PDAs get you back to where you were when you turned the device off, thus there is no need to restart programs, or reopen documents;
- SMPlayer memorizes the position at which you were in the video clip when closing the program. Next time you open the same file playback is resumed from the memorized position, no need to waste time seeking the right spot. The player memorizes the positions for different files, thus if you view a clip you've opened earlier - its position will not be lost.
Half working scenarios in the real world
- Hibernate or always on - users develop the habit of not turning the system off or hibernating it. They don't have to remember what they were working on, instead they choose to never close their programs. This method is not very effective, having the following drawbacks:
- Waste of energy in the always on case
- Limited resources - you can get away with this if you're working with a small number of programs at the same time, but this is not always the case. Most often the system becomes sluggish because too many processes are running
- Limited attention - same as above, the difference is that you're running into problems once a large number of windows (say, at least 25) is open - it takes longer to switch (alt+tab) from one window to another or find which of the instances of the program is the one you need (for example if you have 5 Word documents open, you have 5 Word icons, all identical)
- Stability issues - I'm lucky if my system is still snappy after 40 days of "hibernate in, hibernate out"; with time it gets slower and less stable, probably because of memory leaks in the programs, etc
- Recent files - all modern desktop environments keep a list of recently opened files - this is pretty good, but has its limitations:
- Only the last N items are memorized
- It depends on the program how well the context is restored - for example, one document viewer will restore the view to the page you were reading, another one will set you to the beginning of the document
- One document - one bookmark. If I want to mark several spots in the same document - this isn't possible
- The recent files cannot be categorized, or sorted
Implementing global bookmarks
Each program that supports the global bookmarks concept should export the following data to the user's desktop environment:
- Document state (ex: page number in document, second in song or movie, etc)
- Program state (ex: current active instrument)
- Currently open file
You can see that this places a burden on the program and on the desktop environment, as both of them have to adhere to the specs in order to communicate.
If you think that every program author will update their software accordingly - you're wrong. So maybe the burden should be placed on the desktop environment or the operating system - it will have to save raw a snapshot of the program's state (like hibernate, but for an individual program). The drawback is that it takes much memory to keep these snapshots.
Recommendations for developers
As you can see, you can do things better by making small changes in your program, and make the users' life easier even if the environment itself does not implement the concent of global bookmarks.
- When a user is working on a file and closes the program, don't ask whether they want to save their work or not. Just save it, and load it next time when the program starts, so that they continue from where they left. If the user wants to get rid of the file they will explicitly close it.
- If the program is of a viewing type (ex: PDF reader, photo viewer, audio player, video player) - memorize the position inside the file, and next time the same file is open - scroll to that position.
- Memorize the positions of the last N open files, not the single last file that was open.
Conclusion
Global bookmark - a context independent and content agnostic bookmark that can be invoked from anywhere in the user's desktop environment. Remember, you've heard it here first!
Alternative names: omnimark, panmark, transmark, supermark, paramark, metamark.
3 comments
Comment from: gr8dude Member
It can be hard to make everyone use it, but the protocol itself is not difficult; the interface needs to export the three things mentioned in “Implementing global bookmarks".
Perhaps the first step is in adding this to the default applications that are usually present on a system (browser, document viewer, photo viewer, movie and audio player).
Comment from: nintyfan Visitor
Imagine I looking information about artist, which I liked. I simple bookmark to some position of he/her music and bookmark page about him. Another way us to make bookmark(and sets tags) to position on the movie and search info about that actor/actress in the net. I’m next typing artist name and I have received web info about them and all scenes in which they act. Is a greet!
Like global ‘Recent Files’?
Bookmark management is quite tricky though, making a standard protocol for everybody would be hard.