World Wide Web

How to write your own bookmarking tool and why

(NOTE: This is a work-in-progress. Last edited: 02nd May 2006.)

I have never been fully satisfied with an available bookmarking tool. Each tool has its own set of cool features to offer. But there never has been one tool that offers all. This made me think, “Why not write my own bookmarking tool? What will it take to write one?”

This is an entry in progress. I intend to update this entry as I try out various things and write about my own experiences.

WHY my own bookmarking tool???

Although the title mentions 'How' first, let us look at the 'Why' aspect of it. Requirements lead to implementation.

Let us look at the question: “Why do people bookmark something?”

If you do a Google search on “Why do * bookmark”, you are bound to see some analyses done by people. There is some formal research done on this topic, and I will have to go through these papers. However, the stupid answer that you will find in the informal analyses is 'To retreive it later'.

Ok, let us go ahead with this stupid answer and ask the next question, why would someone want to retreive it later?

I see a bookmarking tool as an aid in Personal Knowledge Management (PKM).

If you are looking at bookmarking tools from a research angle, then the reason you would want to bookmark URLs and retreive them later is to use the information in the URL when you need it and make some analysis with the information. There are problems with existing bookmarking tools if you want to use them for this purpose.

There are chances that you bookmark something to share it with people, but that is not the problem that I am trying to solve here. Existing bookmarking tools are good enough to solve this latter requirement, although there is scope to make them better.

There are also chances that you bookmark something for some purpose that I don't know and again I don't guarantee that writing your bookmarking tool will help.

Let us now look at the problems with existing bookmarking tools in information extraction and analysis.

As a first step, let us look at what the requirements are and then see why existing bookmarking tools cannot help us in our requirements.

The first and foremost thing that I would like to see in bookmarking tools when I am using it in research work is to be able to enter information then and there about what the resource contains, why it is useful to me and how it is related to other bookmarks that I have. I should then be able to get an overall picture of the problem in hand, by using the information about all the bookmarks that I have for that particular problem. More often than not, you learn new concepts or technologies and then you would want to delve into this topic and learn more about it. This goes on and on.

Soon, this would result in a network of concepts, where different items are related to each other in some way.

So, the reasoning is quite clear. A bookmarking tool should aid us in creating this network and also retreive information from it when required. The retreival should be as efficiently done as possible (remember usability?).

Let's now look at existing bookmarking tools and see why they cannot help us solve this problem.

Most online bookmarking tools are not written for personal knowledge management. They are for people who want to store links somewhere and possibly share it with a group of people. The most you can expect from these tools are a set of fields to fill in clippings, comments etc. I have not seen a single bookmarking tool that allows me to relate information between bookmarks. (I need to have a look at Connotea). You cannot expect these tools to do more than this because the average user would not want a whole bunch of boxes to be filled just to store that damn URL.

But then I want more. I want bookmarking tools to be extensible. I also feel that there are people out there who feel the same.

The fields that they provide are static and may not serve the purpose for all people. I would like to add my own fields and/or edit them when required.

Ok, ok, now tell me HOW do I write one???

There are many ways we can solve this problem. One easy solution I found was to use Lazybase. Lazybase allows anyone to design, create and share a database of whatever they like.

Ok, so how can we use Lazybase to create our own bookmarking tool?

Here are the steps to create a bookmarking tool using Lazybase:

1. Create a database and name it whatever you want. I would call it “BookmarkDB”.
2. Create an item type named “Resource”, which has the following fields: Name, Keyword, URL, Bookmark Date, Clipping, Rating, Category, Read (Yes/No), Comments, Related To etc.
3. Create a bookmarklet for “Resource” and make sure URL is extracted from Page URL, Name is extracted from Page Title, Clipping is extracted from Selected Text.
4. Drag and drop the bookmarklet onto your bookmark toolbar.
5. You can define as many item types as you want to capture the relationship between the bookmarks. For example, you could define an item type “Relationship” and have two URL's as its fields and a third field to define the kind of relationship (why the 2 are related).
6. You are ready!

The actual design of the BookmarkDB and the item types and their relationship is upto you. You can in-fact make it a collaborative experience by adding an item type 'Person' and then adding this to your 'Resource' to identify 'who' bookmarked a particular URL. All you need to do is share the 'edit' URL of your database with those who you would want to collaborate with. If you want to export all your bookmarks, you can use the CSV file option to export all the bookmarks.


The solution is not perfect, but good enough. I have been using Furl for quite some time now and I will miss the 'page copy' that Furl does.

But then, with the number of bookmarks that I have and the way I want to use them, I feel Furl does not serve me well.