BFS2 or our next FS
Possible Candidates
- ZFS (very cool, snapshots, volume chaining (no more partition management...), interesting for query-only FS, compatible license)
- XFS (fast, proven, effective)
- roll our own (much work)
Extended File Type System
File types become more human-readable: Document, Image, Video, etc. In our local database we store the MIME translations for those types. Multiple-inheritance is supported, too (OGG would inherit from Audio and Video, for example). Instead of specifying attributes for each format individually (MP3 has its own attribute set) the attributes are inherited from the super type (Audio). Internally, the file types are stored as MIME. This allows for better OS-interoperability, backwards-compatibility, and more flexibility (we can change the inheritance structure of the whole type database and it will continue to work). But there is a problem with this model: global queries (Audio/*) would have to look for multiple MIME-types (application/ogg, audio/*, etc.). Nevertheless, it should be a step forward, usability-wise.
Hard-Link
The next file system should support hard-links and hard-link attributes for which you can choose the desired file type of the target in the attribute's specification.
Extended-Link and File IDs
Every file gets a unique ID that does not change when it is moved (unlike the inode). An extended link consists of a volume ID and such a file ID. It is similar to a hard-link, but without increasing the target's reference count. Extended-link attributes can have a desired target file type in the attribute's specification.
Multi-Value Attributes
Attributes are allowed to have more than just one value. For instance, a contact may have multiple email addresses.
Ranges
Sometimes one might want to define a range of possible values for a value (most appropriately an integer or other numeric type). For example:
- percentage (task accomplished)
- rating (music)
Enumerators
Enumerators are 64-bits values which represent one of a defined set of string values. The 64bit value should where possible be the UTF-8 representation of the value, or as close as possible for interest of human readability. Users should be allowed to add their own values to an enumerator.
Extensions
An extension allows for adding a collection of additional attributes to a file or folder (as if it had inherited the attributes of multiple file types). You can add any number of extensions independent of the file's type. Internally, a multi-value attribute stores which extensions are used by a file.
Virtual Attribute Groupers
Sometimes you want to have the values of multiple attributes collected into one attribute. Take email recipients as an example. Instead of accessing "To", "Cc", and "Bcc" individually, when creating a query or when categorizing files, you use "Recipients". This attribute does not really exist on the volume, but is generated to simplify attribute handling.
Actions
Each application says which actions it can perform on a given file type. BeMail would say that it can do the following (optional arguments are in brackets):
- "Reply to" "Email"
- "Write Email" (to "Person")
- "Forward" "Email" (to "Person")
- "Send as Attachment" any type (to "Person")
- default: "Read" "Email"
These actions can be executed from within Tracker and supporting applications.

Comments
Re: BFS2 or our next FS
Perhaps you could consider Copy-on-write [http://en.wikipedia.org/wiki/Copy-on-write] for the future FS. It supports versioning file systems [http://en.wikipedia.org/wiki/Versioning_file_system] like ext3cow or zfs
I think it's a big utility.
And with C++ perhaps it were more easy to implement
And it could be a synergy between ext3cow and you (I imagine a common API for COW in fs ;-)). Power your Imagination! :-D
Re: BFS2 or our next FS
I'm personally thinking a modified version of XFS would be nice... I don't know much about file systems or XFS but if it has soft-deletions it would be nice.
I don't understand what you mean by file ID's -- what advantages do these extended links offer over symbolic ones?
The ==Categorization== section comes into the tracker I guess, which is a different issue [file manager; file system]. Nevertheless, I always felt a "Browse by:" button beside the address bar would be great.
Another thing I was thinking, was that search queries should be natively supported by the file system. Something like this [I haven't used Be for a while, so I'll write in simple windows syntax]
"C:\My Documents\My Pictures\Tag: beach; Date: xx/12/07"
or
"C:\My Documents\Search: 'red*'"
Re: BFS2 or our next FS
I'm FS expert. I just want to point out what FS were insteresting to study when you implement the new FS. I just give you some ideas
Thanks,
Xan.