Browsing shared projects » History » Version 1
Tom Clegg, 02/20/2019 06:35 PM
1 | 1 | Tom Clegg | h1. Browsing shared projects |
---|---|---|---|
2 | |||
3 | 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. |
||
4 | |||
5 | Any solution would need to support the following behavior: |
||
6 | # A project P1, named "new project", is created by user U1 and shared with user U2. |
||
7 | # User U2 opens the "shared projects" virtual directory in WebDAV or FUSE, finds "new project" directory in the listing, and opens it. |
||
8 | # A second project P2, also called "new project", is shared with user U2. |
||
9 | # User U2 saves a new collection C1 in the directory they opened in step 2. |
||
10 | # The new collection C1 is in project P1 -- not P2. |
||
11 | # User U2 opens the "shared projects" virtual directory and discovers that there are now two shared projects named "new project". |
||
12 | # User U2 opens the P2 directory. |
||
13 | # User U1 renames P1 to "project formerly known as new project". |
||
14 | # User U2 saves a new collection C2 in the directory they opened in step 7. |
||
15 | # The new collection C2 is in project P2 -- not P1. |
||
16 | |||
17 | Option 1: Include project UUID in every entry. |
||
18 | * Project P1 appears in "shared projects" with the name "new project (zzzzz-j7d0g-pppppppppp11111)" |
||
19 | * Behavior is very predictable |
||
20 | * Directory listings and file paths are ugly |
||
21 | |||
22 | Option 2: Include project UUID only when name conflicts exist. |
||
23 | * Project P1 appears as "new project" at first |
||
24 | * After step 3, P1 changes its name to "new project (zzzzz-j7d0g-pppppppppp11111)" |
||
25 | * In step 4, U2's "save" operation fails because the "new project" directory no longer exists |
||
26 | |||
27 | Option 3: Include project UUID only when name conflicts exist, and even then, not for the oldest project |
||
28 | * step 4 fails depending on whether P2 happened to exist before step 1 |
||
29 | |||
30 | Option 4: Include project UUID only when name conflicts exist, and even then, not for the project that first became visible to U1 |
||
31 | * Expensive to compute |
||
32 | * Feels unpredictable for users |
||
33 | * P2 changes its name in the listing during step 8, and step 9 fails. |