Update at page bottom!
Tagsistant has born both as a challenge with a friend and as a tool to organize my personal informations.
Challenges often include a clause like "I'll do it in one week!". (Actually it took me three days for the first, minimal but working, release, thanks to FuSE ;) So when your first problem is time constraints, you use basic tools that require the lowest amount of time to be integrated.
Later I've found that using symlinks has another benefit than SQL or XML don't have.
Think about using Tagsistant on a small device, like a PDA. You have small amount of RAM (about 64M or even 32M!!). Using SQL or XML means
- linking another library (Tagsistant uses just libc and libfuse)
- managing a DB in ram!
Too much if you already have 52M of 64M used by kernel, GUI and some app!
But using symlink allows you to tag even some gigabytes in your expansion flash card without requiring impossible memory upgrades!
Of course nothing excludes that, evolving Tagsistant in something more complex, a layer between the query logic and the storage backend is created. That allows for multiple backend to coexist.
Well, yes, there's the update
I've finally switched to SQL! Yes. Why? Because symlinking was to slow and was not able to store query results without a complex mechanism of storage written from scratch!
So I've finally started to read SQLite documentation and coded a prototype version which uses this great library to save tags and tagging relations. Code was heavily modified but after two days of work it's running fine.
You can find this version in the SVN. It's revision 23. Of course downloading previous revisions will allow you to use old symlink based implementation.
A more recent revision, number 28, also features a caching layer which is able to store results from previous queries to speed up processing. Query results are saved with a TTL of 15 minutes and are updated dynamically each time a file is removed from a directory or something changes in tags (directories) on the filesystem. That guarantees a smooth operation and up to date results.