Evolutions
I have put more in sresi than I first thought I would, but I'm still not quite there yet. Here are my current ideas for further developments.
Code Quality
- Maybe use an object for the bookmarks collection (better code compartimentalisation);
- A better and stable API;
- Add more comments: I've been quite lazy about them;
- Write ocamldoc-formatted documentation for the programming interfaces;
- A grand clean-up to try and keep true to the official coding guidelines;
- Better and more exhaustive error messages;
- Rewrite the CLI interface.
Features
- Add a system of synonyms;
- When the export comes from a subset, add the selection pattern to the title (maybe as an option);
- Write filters for the next Firefox bookmarks system (pushed back to 3.x);
- Write export filters for Atom and RSS;
- Write an XML portal export filter, so the navigation and display can be changed with a simple XSLT;
- Make optional stylesheets a runtime parameter;
- Add a recovery option for damaged files;
- Deal with charsets;
- Maybe add a description field;
- Add Favicons (probably not before they are standardised).
Advanced Evolutions
- Write a Firefox extension (maybe in conjunction with the PHP wrapper);
- Write a Javascripllet to invoke the PHP wrapper;
- Write a PHP+Javascript wrapper based on the trees, with drag-and-drop support (not enough knowledge yet);
- Write an advanced editor, where keywords are automagically filled in from the folder the bookmark has been created in, plus the ability to add more tags either free-form or from the list of existing ones (much later, I guess).
Optimisations
- Index the tags and do the work on their integer index instead of their string names (more cumbersome, but the comparison is about six times faster in my quick benchmark);
- Check whether It is better to duplicate much data or to only use index in structures;
- Indexing folders with the MD5 of their tag set did not give the performance benefits intended.