Design and research for cloud drive integration. This covers both functionality provided by GNOME and available 3rd party solutions.
Background / Scope
Cloud drives that are of interest:
- Google Drive
Google Drive is unique in that it provides both storage for files and Google Docs - which aren't files.
- Google Drive and Nextcloud appear as remote locations when they're added through online accounts
- Each drive is remote only - there's no local cache or syncing
- Google Docs are shown as files; if you click them, they open in the browser
- Well-known Linux backup tool
- Can use Google Drive or Nextcloud for storage
- Backups aren't saved in a format that can be easily browsed - uses incremental tarballs to allow restoring from different points in time
Backup and Sync from Google
- Configure which local directories are synced
- Status icon shows list of recent/in-progress sync operations
- Google Docs items are shown as files in the file browser; clicking them opens them in the web browser
Third party Google Drive apps
Insync - a 3rd party Google Drive synchronisation app, with a wide range of features. It's proprietary and costs a one time fee of $30.
OverGrive - another 3rd party sync client. Proprietary and costs $4.99 per Google account.
ODrive - simple open source sync app, which is available through Flathub.
Rclone - a command line tool that allows syncing to a wide variety of cloud drives. There are a number of graphical apps that use it, including RcloneBrowser, which is available for some distributions.
Synchronisation client. Shows notifications when things are synced, allows configuration of what's synced.
Dropbox Desktop Client
The Linux version of the Dropbox app is fairly basic compared to the one on Windows and Mac, but it works: it does sync, and you can configure what gets synced. You also get notifications when something changes.
Google Drive vs. the others
Most cloud drives are restricted to files, and the primary UI for interacting with content is the file manager (on the desktop - mobile is different). For example, while Dropbox has a web interface it doesn't feel like something you can do serious work with. The expectation is that you're interacting with files locally.
Google Drive is different: on the desktop the primary UI is the web interface. This is obviously influenced by the fact that Google Drive doesn't just contain files - and the web interface is able to do a better job of working with Google Docs than the file browser is. (It also helps that the web interface works very well.) The fact that the desktop client is called "backup and sync" is instructive: it is a utility that can be used for a particular feature, rather than being the primary desktop interface for Google Drive.
Desktop vs. mobile
It is striking that cloud drive mobile apps generally take a different approach to desktop apps: desktop apps tend to sync everything, whereas mobile apps tend to do more limited caching. The reasons for this:
- Desktops tend to have more storage capacity.
- Desktop bandwidth is generally a binary of on/off rather than operating within limits like mobile.
- Desktops tend to be where files are created and are where large collections of pre-existing files might be found. Sync is a fairly good workflow for adding files to a cloud drive.
Syncing vs. caching
Good if you don't want to store everything locally (such as if files originate on the remote and are large and/or many)
It works if have plenty of disk space
File access is likely to be slower than syncing
File access is likely to be faster than caching
Adding files to a cloud drive could be a bit awkward?
Good if you want to add prexisting files to a cloud drive and keep a copy locally
Can fail you in an offline situation
Good for offline working, since you don't need to worry about making sure you have up to date local copies
Risk of files being empty placeholders or being out of date
Consistent with how filesystems work - people learn to expect files to be there and be up to date
Of course you could cache by default but allow the user to selectively sync if they'd prefer, and that's how some mobile apps work...
Cloud Providers Whiteboard - design page for cloud drive integration in Files
csync - bidirectional file synchroniser command line tool. Used by the ownCloud/Nextcloud desktop clients.
drive - simple Google Drive command line tool