I think exploring past the folder/filing cabinet design metaphor we’ve been stuck with for decades might be productive.
But, you need legacy support for it to work with anything else in modern computing so it’s not really practical outside of a thought experiment.
I find systems like collaborative pipeline file managers and content databases developed for creative work to be much more intuitive than file managers, and apple implements some of that, but I don’t think it goes far enough.
A folder, in practical terms, is basically a “tag” that filters files out right?
Maybe we’re limiting ourselves by treating it as a separate, heirarchical thing in the first place.
As a practical example, I work with Resolve Studio day to day.
I can search all the files in the folders i’ve made it aware of by details as granular as color temperature and time of day it was shot, have bins that autopopulate with clips containing a certain person’s face, or filter out still images that don’t have normalized motion vector data.
Where the file is doesn’t matter, just what it is. Most modern operating systems have a rudimentary version of this to make finding your files easier, but why not just focus on the utility of that and have a flat storage structure rather than separating the two concepts?
I could see a system where you could integrate that type of file management tightly instead of relying on a separate sql db and paid software, and I think it would be very nice to use.
You could even make package management easier by having binaries tag the stuff they depend on and not have to worry about what hidden folder it’s nested in. Stuff you don’t need to see day to day isn’t tagged as an image or a program or whatever, so there’s a litter free file browsing experience.
You could install programs that rely on different versions of the same library in a snap by having version of the lib be metadata, and having package management check for less than/greater than before tagging. No installing in /opt/, no altering environment variables, no dependency hell. just plop in the other version of the lib and tag the misbehaving program as part of the installer, or manually as the end user. Obseletes stuff like which
and the reliance on commands like --version for scripting too.
Not just for power users either. Window pops up, single click image, hit related tags, click png, hit advanced tags, and FR metadata shows a grid of faces. click the face of the person you want and they all show up without having to dig through dozens of folders labelled “DCIM_Canon_201X” because you didn’t painstakingly rename all of them.
And you can used a “saved search” to keep that specific set of filters for quick recall, or even set up a “bucket” that scans for new things matching metadata and automatically adds them. If the system is designed to be “metadata aware” at the base level, past mimetypes and file tagging and stuff, right down to the core of it as a replacement for folders and links, you can do a lot more without 3rd party software.
You could even have a uuid system that lets identical filenames or files coexist and lets the user delete duplicates when they want more easily by searching the file names as metadata.
Doesn’t completely rule out the benefits of volume management either, you could have a tag that indicates drive or partition location and honors that at a block level.