File-level Metadata

If the computer user can store arbitrary metadata in any file, then you would have a strong foundation for new ways to organize files. You would still have to develop user tools that let you sort and select files based on their attributes.

Metadata for files might be used along with a database overlay or a database-like filesystem, to create a whole solution.

Examples Of Metadata Already In Use

The concept of metadata for files is already being used, but only for a subset of files.

  • ID3, for compressed audio
  • EXIF, for digital images
  • XMP, for images, documents, media files

If Metadata Were Easy To Use On Any File

What if a user could easily specify metadata for any file, no matter what type of file it is? And the metadata could be arbitrary, answering only to the needs of the user? It could be as easy as tagging and categorizing a Post in WordPress.

The metadata would need to be stored along with the file data, so that if you moved the file the metadata would go along with it. I’m putting aside the issue of newly minted metadata breaking applications that aren’t expecting it.

The metadata itself could be of several types:

  • Additive, such as “funny” or “interesting”;
  • Key/value, such as “animal=cat” and “color=orange”;
  • Hierarchical

Because this metadata would affect every kind of file, it may need to be implemented at the file system level.

And of course you would have to create user tools to do interesting things with the metadata. The tools would allow sorting, finding, and actions based on the file metadata.

Extended file attributes (xattr) can be applied to any file. What can you do with these?

The Sample Problem

Simple, file-level metadata:

Of course the above metadata would do nothing until all the user tools were in place. You might want a file manager that could sort files by metadata.

How Does This Relate To Multiple Ways To Sort Files?

If the file browser/viewer/manager allowed it, the user could sort first according to one attribute, and then according to another. Much in the same way you can currently sort by file name, size, and date.

This approach would typically only help you sort the number of files that the application could read in at one time. An obvious next step is tracking the metadata with something like a database.