currently at the very, very start of its development.
Some months ago, I explored the very nice browser conkeror. While not quite as fast as Chromium, the main issue was the lack of decent bookmark support. And even the Chromium bookmark manager is not a very convenient tool when it comes to managing the hierarchy.
My favorite bookmark system ever was of course the one provided by the Gnome browser Epiphany (not sure it still is the same), where bookmarks would only be assigned categories, and Epiphany figured out the hierarchy of the Bookmarks menu on its own, and also tried to keep it shallow.
Check out roadmap.org for some ideas and features envisioned.
Of course, the main goal is to develop some tools and experience for writing modern web applications in Common Lisp.
Currently, it does not do much, you can add bookmarks and view a list of all bookmarks stored in a Sqlite3 database. All the dependencies are either available in Quicklisp or on my Github.
To run the application, load it via asdf/quicklisp, then call (bookmark-web-interface:start-bookmark-server), which will automatically setup a database in /var/cache/. The entry point for the web interface is then at http://localhost:8080/bookmarks/list.
There are two funtions, save-bookmarks and load-bookmarks, which allow to dump and restore the current bookmark database in JSON format.
We only saved the user-categories in addition to the url and title.
For now, we store this stuff in ~/tmp/bookmarks.json.
Call import-chrome-bookmarks. Note that if the bookmark is already present in the database, but the title in Chrome was changed, it will not be updated (because we assume that
A bookmark is identified by its url, and carries some additional data: a title, and user-categories which are the manually assigned categories.
From the title and the url, we use the rules specified in bookmark-rules.lisp to assign more categories by matching regular expressions to compute title-categories resp. url-categories. Afterwards, we use a fixpoint iteration to add more categories based on logic rules, which may also be defined in bookmark-rules.lisp.
Categories (or tags) are represented by symbols in the package CAT. Use the function bookmarks:cat to obtain a category from a string description. Note that in principle, you may also use symbols in different packages for identifying categories, but this probably causes trouble. Also don’t forget that categories are case-sensitive.
do some kind of prefix comparison on the url?
- [ ] matching a set of tags
- [ ] not matching a set of tags
- [ ] all bookmarks without tags
split up the contents of web-interface.lisp
- JavaScript Code
- CSS code
- HTML code
Merge contents of readme.org and roadmap.org, if possible
Using a webservice to compute the categories of an url might perhaps offload the classification problem, because this problem sounds a lot like a search engine problem.
for bookmarks and categories
figure out how to write this kind of application write some cool macros ;-)
provide some autocompletion facility to speed things up
something Emacs like? could be very efficient, and would integrate well with conkeror
perhaps an addon for chrome/chromium, maybe conkeror this is mostly important for being able to add bookmarks from open tabs/windows the other important function of bookmarks is being able to get completions of them in the address bar
chromium exports its bookmarks in a JSON format, this could also be useful for importing data
automatic tagging when things come from a hierarchy?
Just give tags to your bookmarks and let the computer figure out the hierarchy Epiphany was doing that
perhaps priorities for categories (to express generality of a tag)
should we allow bookmarks to appear twice in the hierarchy? Maybe in an alternative browsing mode – “filtering view” or something
global vs local names, category assignment
even if the system stays single user, it needs some way to protect the data (at the very least against changes)