# Tagga
Originially file systems did not have any hierarchy.
All Files were just kept in a plain list.
Some people found that limiting and created trees of folders.
Other people considered files to be the wrong abstraction and used databases instead.
Tagga is a bit of a middle ground.
Instead of sorting files into a tree of folders,
they are tagged with a number of attributes.
For retrieval they can be filtered,
much like a SELECT ... WHERE statement does.
This idea is backwards-compatible,
as the path can just be an tag.
Right now its just a prototype to explore the ideas viability.
It uses a database for storing the tags, and a folder to store the files.
In the future it would be nice to have an in-kernel implementation.
It would then need to store the tags in the file system (hard)
and the files would just become inodes (easy)
# Contributing
Please symlink the hooks to your local .git/hooks/ directory to run some automatic checks before committing.
ln -s ../../hooks/pre-commit .git/hooks/
Please install rustfmt and cargo-sync-readme so these checks can be run.
rustup component add rustfmt
cargo install cargo-sync-readme
Please execute `cargo-sync-readme` when you change the top-level-documentation.
Please run `cargo fmt` whenever you change code. If possible configure your editor to do so for you.