a semantic filesystem for Linux kernels
based on libfuse
What will be added to next release?
[1.] First most important feature that should be added is query caching!
Query caching will be implemented in a third directory using hashes. The hash of the query will be computed using SHA1 or better algorithm. If <repository>/cache/<query_hash> exists, than it's opened and all contents read. There should be also a timestamp mechanism to avoid queries not being syncronized with new filesystem contents.
Latest News! Query caching is here! In latest SQL rewriting a query cache has been coded. Download revision 37!
[2.] Probably a second, useful feature is the exposition of archive internal directory to the user, to allow file management without the load of path_resolution.c library. archive directory can be exposed as <mountpoint>/.archive which should be enough tag-neutral.
[3.] Of course, path_resolution.c library should be enahanced and profiled, since it's the central point of workload for all the filesystem. Tagsistant does not play well even with small amounts of files (like hundreds of files!) which is of course a limit too small! Doing some basic refining of path_resolution.c code, performances can likely grow up to 10 times.
Latest News! During rewriting to port Tagsistant to SQL backend, path_resolution.c has been extensively rewritten. Performance grew up to 300%. More on that can still be done...
[4.] A very appealing feature is subfolder storage. So far, only single files can be added to Tagsistant. It whould be very cool to add entire subtrees.
[5.] But the very important thing is to be really semantic. A friend told me that tagsistant is not a semantic filesystem because it doesn't get tag relationship out of user tagging. He's right, damn. So, that's the plan.
First of all we can establish a better semantic for normal file operations. I.e., moving a directory inside another means saying that this tag is a subtag of the other. For example if I have all Iron Maiden songs, I can create a tag "iron_maiden" and put them inside. Later I can create a "heavy_metal" tag and move "iron_maiden" inside "heavy_metal". And of course move "heavy_metal" under "music".
So, searching by "music" later will show me Iron Maiden's songs in results.
Second we can use plugins to prefilter contents. If a file is of MIME type audio/mp3, we can use an ID3 tags library to inspect file tags and create corresponding tags on filesystem.
Read more about that on semantic rules page.
(tagfs)




