| Author: | Martin Blais |
|---|---|
| Contact: | blais@furius.ca |
| Date: | 2003-04-14 |
| Copyright: | Copyright (C) 2003, Martin Blais. All Rights Reserved. |
Abstract
Description of an idea to build an innovative, next-generation bookmark manager, viewer and search system. The scope of this idea could easily be extended to encompass other related domains, whose input can be re-worked to fit within the domain of this system. We will dub the contents of this document a "self-organizing graph-based search method".
This document describes an idea to improve management and use of bookmarks for web browsers. It also proposes a novel user-interface for performing search in information that can be organized as a graph. We also propose a simpler system for organizing the bookmarks themselves, labeling them with a small amount of keywords.
Our motivation is the desire to more easily manage bookmarks. Common systems for bookmark management (all of them as far as I know) as use a tree-based structure and are accessed by a hierarchical menu system.
Screenshot of Mozilla bookmarks menu.
This works reasonably well for organizing a small number of well-designated bookmarks. However, as your list of bookmarks grows, problems with this kind of approach start to show up:
I believe these annoyances are important enough that as a result most people don't keep large lists of bookmarks. In fact, most "dumb" [1] users I've seen only use a linear list of bookmarks, which they clear (...and lose) every so often.
In addition, every browser has a slightly different format for storing bookmarks (although the situation is improving with growing use of XML-based formats), but committing to a single format may prevent using the bookmarks list with different browsers, and does not necessarily merge well over CVS.
We propose that instead of associating a specific bookmark to a single "folder", that we rather store the bookmarks as a unique set (a "soup" of bookmarks), and that each of the bookmarks be associated with a short set of keywords.
For example, we would consider the following associations:
http://imdb.com --> movies, online database, posters http://movies.yahoo.com --> movies, schedules http://www.cinemamontreal.com --> movies, montreal
From a list of such associations, we can create a graph with two types of nodes where we have a node for each bookmark and a different type of node for each keyword. This graph will then be used to navigate between the different categories defined by the keywords.
To help with uniqueness of keywords, the input system should make the keywords themselves easily searchable, or attempt to detect close matches upon input. We should also provide a simple way to merge two similar keyword groups.
We could implicitly associate a relative importance to the each keyword in a list, by say, giving more importance to the keywords who come first. This important could be used to modify our graph-creation heuristics (more below). For instance, we could use this importance measurement to sort the list of neighbors of the current node.
We propose an extremely simple file format, such that it can be edited by hand if desired: a simple list of bookmark entries in an ascii file, where each bookmark entry is formed by three consecutive lines:
Here is an example bookmarks file:
Internet Movie Database http://imdb.com movies, online database, posters Yahoo Movies -- has specific cities http://movies.yahoo.com movies, schedules Movies in Montreal -- (annoying popups) http://www.cinemamontreal.com movies, montreal
This format is easy to read and should also merge well with automated CVS merge, thus allowing maintaining a bookmarks list across multiple sites. It is also fast to read.
From the bookmarks graph, we can build a system to navigate between the different keyword nodes. Here is example of a user-interface for navigating the graph:
Prototype Design for User-Interface.
The UI is always visiting a specific node, and its immediate neighbors are displayed around it. The user can click on a neighbor to "move" to that node, making it current and thus displaying its bookmark contents [2]. The contents can be clicked on or dragged to a browser window. The URL of the bookmark nearest to the cursor would be displayed in a status bar at the bottom of the window.
It would be convenient if each node of the graph contained a limited number of entries. To that extent, we can heuristically split keyword groups that have too many entries, by looking at common keywords of the contained entries and splitting them into subgroups of two keywords and making them direct neighbors of the other keywords nodes (as opposed to indirect neighbors thru a bookmark belonging to the two keywords).
For example, if there are too many entries for the keyword "montreal", entries associated with it could instead become associated with subgroups "montreal/maps", "montreal/movies" and "montreal/weather". For example:
Combined keyword groups.
Searches within the graph could be entirely integrated by creating a dynamic "search node", which would
The search node can be made active by navigating to it the same way the user navigates to a normal node.
This idea accomodates keeping many search nodes active without a problem and does not require a special user-interface to the searches. The user should be able to modify the search term by editing it directly in the node.
It is very convenient to define arbitrary groups of nodes. For example, there is an implicit arbitrary group of bookmark nodes (or containers) in the user-defined toolbar of every browser.
To that extent, all we need to do is to add a specific keyword, say "top", to the bookmarks that we want included in that group. Then, we could add simple syntax (e.g. an asterisk afte the keyword name) to designed those nodes as top-level nodes and make sure our application makes those few nodes more easily accessible, perhaps with a set of buttons, or by initializing to one of those nodes when starting the application.
(FIXME: todo)
We propose to implement this as a stand-alone application.
Browsers almost all accept some form of drag-and-drop protocol and often have an external program that can be invoked to signal a running instance to display a specific URL. We can use either of these techniques to bind our bookmarks manager application with existing browsers.
In addition to managing bookmarks, the bookmark manager app could monitor what the browser is viewing and display the corresponding entries in the bookmark database. This could potentially make it much easier to correct errors or change entries.
(FIXME: todo)
Footnotes:
| [1] | By "dumb" we mean users who are not avid computer users, e.g. your mom. We do not mean anything insulting against such users. |
| [2] | We could provide a cool-looking smooth-scrolling animation to move from one keyword node to another. |