This project studies how today's cloud storage services (CSSes) support collaborative file editing. As a tradeoff for transparency and user-friendliness, they do not ask users to use version control systems; instead, they implement their own heuristics for dealing with conflicts, which however often lead to unexpected and undesired experiences. With measurement study and reverse engineering, we unravel a number of their design and implementation issues as the root causes of undesired experiences.
Driven by the findings, we propose to reconsider the collaboration support of CSSes from a novel perspective of operations without using any locks. To enable this idea, we design intelligent approaches to the inference and transformation of users' editing operations, as well as optimizations to the maintenance of a file's historic versions. We develop an open-source system, UFC2 (User-Friendly Collaborative Cloud), to embody our design, which can avoid most (98%) conflicts with little (2%) time overhead.
We provide the customization code of UFC2 on GitHub.
The code includes the following parts.
|Operation Inference & Transformation||diff_match_patch.py|
|Maintenance of Historic Versions||cdc.py|
|AWS S3 Management||s3connector.py|
We collected real-world collaboration traces (i.e., files during collaboration) under multiple cloud storage platforms. The raw data are anonymized by encrypting the file content and file names. We preserve the metadata (e.g., file type, size, modified time, and conflict) of each file, which can still be used to re-construct our experiment (and other related experiments). We make the anonymized data publicly available at Google Drive (14GB, in archive). The original data will be released once upon our academic paper is published.
ufc2project [AT] gmail.com