[tahoe-dev] down with filesystems! up with the web! -- Re: [tahoe-lafs] #776: users are confused by "tahoe rm"

David-Sarah Hopwood david-sarah at jacaranda.org
Mon Jan 4 03:25:19 UTC 2010

James A. Donald wrote:
> James A. Donald wrote:
>>> Everyone is happy to browse arbitrary 
>>> graphs.  No one likes to manipulate arbitrary graphs.  Engineers are 
>>> barely OK manipulating directed acyclic graphs.  The rest of the 
>>> population are only going to manipulate trees, and if it is not a tree, 
>>> it is a bug.
> David-Sarah Hopwood wrote:
>> A tree-structured filesystem is not implementable under the constraints
>> that apply to a distributed system like Tahoe that supports fine-grained
>> sharing of directories and files. 
> As to whether it is implementable in tahoe, I cannot say, but it is 
> implementable in a system that supports fine grained sharing of 
> directories and files -

I didn't say that it wasn't -- note the restriction to distributed

> for sharing is browsing, rather than manipulation.

"Browsing" is a user interface abstraction. "Sharing" means sharing
references. They're not comparable.

Manipulation (i.e. changing a mutable graph) has the same semantics and
operates on the same structure, whether you do it with a browser interface,
or a CLI interface, or programmatically. If cyclic links are supported
(even if restricted to symlinks), then that structure is a graph,
regardless of what is displayed by the user interface. In the distributed
case where fine-grained sharing is supported, the structure *must* be a
graph, again regardless of user interface.

It is simply incorrect to say that it is easier to manipulate trees than
to manipulate directed graphs. Tree structures are not closed under the
operations of adding or removing child links to another arbitrary node.

Most file browsers show trees for one or both of the following reasons:

a) they're often descended from implementations in which the filesystem
   was a tree. (This is why Vista's file browser breaks when the user
   tries to browse a graph, for instance.)

b) the paths explored by expanding any set of nodes starting from some
   root *is* a tree, even when the filesystem is a graph or when symlinks
   have been followed (and even if the same symlink has been followed
   more than once).

By analogy, consider a maze with a single entrance: the paths explored
from that entrance necessarily form a singly rooted tree (if you revisit
a node without backtracking, that's the same point in space, but not the
same point in the path). This is completely independent of the cycle
structure of the maze. If there are multiple entrances then the paths
explored form a forest.

David-Sarah Hopwood  ⚥  http://davidsarah.livejournal.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 292 bytes
Desc: OpenPGP digital signature
URL: <http://tahoe-lafs.org/pipermail/tahoe-dev/attachments/20100104/1258452e/attachment.asc>

More information about the tahoe-dev mailing list