<story><title>The time has come to replace file systems</title><url>https://didgets.substack.com/p/where-did-i-put-that-file</url></story><parent_chain><item><author>bborud</author><text>What this boils down to is that he thinks a flat namespace (tags) offers advantages over hierarchical namespaces (tree).  They really don&amp;#x27;t.  Once your tag space grows you will start to struggle with naming, and path-like structures (nested namespaces) start to creep back in.  And you are right where you started: paths.&lt;p&gt;The treatment of immutability is too superficial to make any sense of so I don&amp;#x27;t know what the author is imagining. Ted Nelson has evolved some ideas on this for decades that might be worth knowing about. Some of which have kind of come to pass (if you squint and look at how non-destructive editing tools for video and audio work, for instance).  However, very little of Ted&amp;#x27;s thinking has ever been burdened by usable implementation.&lt;p&gt;The concept of having multiple references to the same file already exists.  So what he proposes can be realized with existing file systems just by introducing a different naming scheme and making extensive use of sym-&amp;#x2F;hard-linking.&lt;p&gt;Yes, a lot of file systems will have terrible lookup and traversal performance, but that problem exists in an orthogonal universe and can be solved. Is, indeed solved, in some fileystems if the marketing blurb doesn&amp;#x27;t lie.&lt;p&gt;If you think about how you would realize this using existing filesystems, by organizing them differently, the concept isn&amp;#x27;t as sexy anymore. Because it doesn&amp;#x27;t really involve a lot of new stuff and you start to see the inconvenience of having to cope with both novelty and problems you didn&amp;#x27;t have before.&lt;p&gt;The problems someone like me wants solved in filsystems are entirely different, and aren&amp;#x27;t so much about filesystems as it is about how you make the functionality useful to applications.&lt;p&gt;For instance, there are filesystems that offer snapshot semantics.  Including COW-snapshots. This would be useful whenever applications need to do be able to roll back changes, switch between states, do backups while being live etc.  Yet I know of no language which has snapshot as part of the standard OS interface.  So people generally don&amp;#x27;t write application that take full advantage of what the underlying system offers.</text></item></parent_chain><comment><author>horsawlarway</author><text>Path based file systems take advantage of natural semantics we use for navigation.  There is a wonderful overlap between how you navigate the real world, and how you navigate a hierarchical file system.&lt;p&gt;I have &lt;i&gt;never&lt;/i&gt; (never ever ever) seen a tag based system actually work once you have large amounts of files and tags - Tags are manual, often duplicated with slight name changes or variations, hard to discover, and literally worse than a folder hierarchy for discoverability in almost every way.&lt;p&gt;Tags can be nice to have - but only if I also have a path.  Otherwise they are utterly inferior.</text></comment>
<story><title>The time has come to replace file systems</title><url>https://didgets.substack.com/p/where-did-i-put-that-file</url></story><parent_chain><item><author>bborud</author><text>What this boils down to is that he thinks a flat namespace (tags) offers advantages over hierarchical namespaces (tree).  They really don&amp;#x27;t.  Once your tag space grows you will start to struggle with naming, and path-like structures (nested namespaces) start to creep back in.  And you are right where you started: paths.&lt;p&gt;The treatment of immutability is too superficial to make any sense of so I don&amp;#x27;t know what the author is imagining. Ted Nelson has evolved some ideas on this for decades that might be worth knowing about. Some of which have kind of come to pass (if you squint and look at how non-destructive editing tools for video and audio work, for instance).  However, very little of Ted&amp;#x27;s thinking has ever been burdened by usable implementation.&lt;p&gt;The concept of having multiple references to the same file already exists.  So what he proposes can be realized with existing file systems just by introducing a different naming scheme and making extensive use of sym-&amp;#x2F;hard-linking.&lt;p&gt;Yes, a lot of file systems will have terrible lookup and traversal performance, but that problem exists in an orthogonal universe and can be solved. Is, indeed solved, in some fileystems if the marketing blurb doesn&amp;#x27;t lie.&lt;p&gt;If you think about how you would realize this using existing filesystems, by organizing them differently, the concept isn&amp;#x27;t as sexy anymore. Because it doesn&amp;#x27;t really involve a lot of new stuff and you start to see the inconvenience of having to cope with both novelty and problems you didn&amp;#x27;t have before.&lt;p&gt;The problems someone like me wants solved in filsystems are entirely different, and aren&amp;#x27;t so much about filesystems as it is about how you make the functionality useful to applications.&lt;p&gt;For instance, there are filesystems that offer snapshot semantics.  Including COW-snapshots. This would be useful whenever applications need to do be able to roll back changes, switch between states, do backups while being live etc.  Yet I know of no language which has snapshot as part of the standard OS interface.  So people generally don&amp;#x27;t write application that take full advantage of what the underlying system offers.</text></item></parent_chain><comment><author>TheOtherHobbes</author><text>I&amp;#x27;m not sure any of this really addresses the question - which is &lt;i&gt;how do people really use files.&lt;/i&gt;&lt;p&gt;IME I have a number of live projects which can contain various numbers of source files, images, web links, PDFs and other documents, text files, and so on.&lt;p&gt;Then there are a number of files I access regularly which may not be associated with a project (like favourite music).&lt;p&gt;Then there&amp;#x27;s a mountain of data which is just there in case I ever need it. It includes backups of old projects, documents, music and art I keep because I think it&amp;#x27;s interesting but haven&amp;#x27;t read yet, web links that are filed and then (sadly...) forgotten, and so on.&lt;p&gt;I don&amp;#x27;t know how typical this is, and it doesn&amp;#x27;t matter. Because neither a tag based nor a tree based system address the real issue - which is designing a custom file workflow that collects related references of all kinds, doesn&amp;#x27;t confuse working data with long-term storage, allows off-site backups, allows collaboration, supports versioning on demand, and also makes it easy to find things.&lt;p&gt;I suppose all of that means some kind of process API which does a lot more than file.open() and file.close().&lt;p&gt;It could be built on tags, it could be built on trees, it could be built on some combination. Or on something else entirely.&lt;p&gt;The implementation matters a lot less than a set of available features which streamline common tasks in some fairly standardised and effective way.</text></comment>