I have a dream of killing the "hierarchical storage" metaphor. It started as a program to organize my images w/ tags: the images go into content addressable storage, the tags get stored in a relational database, and then you can query the tags, link them into a tree (taxonomy) or graph, etc.
While building this I realized I wanted it to interact w/ other programs in my operating environment: so I made some tools to take queries and spit out hardlinks on the filesystem hosting the content store. This would let me write a quick query in my shell, spit the results to a taxonomy of ephemeral folders, and then access those folders from your usual "naïve" applications.
Then I became addicted to this workflow and realized I wanted to organize all my media this way; which spiraled out of control when I realized I never wanted to deal with paths again for any of my documents.
I'd stress that the idea of content-addressable storage w/ an interface on top is most emphatically not novel, Venti[1] from plan9 was doing it in the early aughts w/ references to prior work from the decades prior, git and many VCS systems are just interfaces into a content-addressable store as well. It's just that hierarchical organization won in popular culture, and as best I can surmise nobody is really interested in replacing it.
The problem one naturally runs into is: hierarchical storage is inextricably linked into our modern operating systems, file systems, shells, protocols, etc. at the most fundamental levels; so the complexity grows enormously w/ every layer I want to subsume. You either deal w/ the friction of the "impedance mismatch" between your storage and operating environment, or you basically resign yourself to building an entire OS where "files" live at one and-only-one path, with a myriad of indexes & manifests to make sense of it all.
Am I likely to succeed in killing the "filing cabinet" metaphor? Probably not. Has the journey been worthwhile? Absolutely.
While building this I realized I wanted it to interact w/ other programs in my operating environment: so I made some tools to take queries and spit out hardlinks on the filesystem hosting the content store. This would let me write a quick query in my shell, spit the results to a taxonomy of ephemeral folders, and then access those folders from your usual "naïve" applications.
Then I became addicted to this workflow and realized I wanted to organize all my media this way; which spiraled out of control when I realized I never wanted to deal with paths again for any of my documents.
I'd stress that the idea of content-addressable storage w/ an interface on top is most emphatically not novel, Venti[1] from plan9 was doing it in the early aughts w/ references to prior work from the decades prior, git and many VCS systems are just interfaces into a content-addressable store as well. It's just that hierarchical organization won in popular culture, and as best I can surmise nobody is really interested in replacing it.
The problem one naturally runs into is: hierarchical storage is inextricably linked into our modern operating systems, file systems, shells, protocols, etc. at the most fundamental levels; so the complexity grows enormously w/ every layer I want to subsume. You either deal w/ the friction of the "impedance mismatch" between your storage and operating environment, or you basically resign yourself to building an entire OS where "files" live at one and-only-one path, with a myriad of indexes & manifests to make sense of it all.
Am I likely to succeed in killing the "filing cabinet" metaphor? Probably not. Has the journey been worthwhile? Absolutely.
[1]: http://doc.cat-v.org/plan_9/4th_edition/papers/venti/