Browsing shared projects¶
It is desirable to have a "projects shared with me" virtual directory in FUSE and WebDAV. There is an API endpoint for this, but it's not obvious how to present it as a filesystem because the entries' names are not unique.Any solution would need to support the following behavior:
- A project P1, named "new project", is created by user U1 and shared with user U2.
- User U2 opens the "shared projects" virtual directory in WebDAV or FUSE, finds "new project" directory in the listing, and opens it.
- A second project P2, also called "new project", is shared with user U2.
- User U2 saves a new collection C1 in the directory they opened in step 2.
- The new collection C1 is in project P1 -- not P2.
- User U2 opens the "shared projects" virtual directory and discovers that there are now two shared projects named "new project".
- User U2 opens the P2 directory.
- User U1 renames P1 to "project formerly known as new project".
- User U2 saves a new collection C2 in the directory they opened in step 7.
- The new collection C2 is in project P2 -- not P1.
- Project P1 appears in "shared projects" with the name "new project--zzzzz-j7d0g-pppppppppp11111"
- Behavior is very predictable
- Directory listings and file paths are ugly
- "name--uuid" has a slight advantage that it doesn't require shell quoting except when the original name already requires shell quoting (unlike "name (uuid)")
Rejected alternatives:Include project UUID only when name conflicts exist.
- Project P1 appears as "new project" at first
- After step 3, P1 changes its name to "new project (zzzzz-j7d0g-pppppppppp11111)"
- In step 4, U2's "save" operation fails because the "new project" directory no longer exists
- step 4 fails depending on whether P2 happened to exist before step 1
- Expensive to compute
- Feels unpredictable for users
- P2 changes its name in the listing during step 8, and step 9 fails.