Cloud Providers

The overall goal is to allow users to work with their files on different cloud storage providers right from within nautilus without having to go to the cloud providers website or open another app for that.

Improvements by providing a cloud providers integration into nautilus/GNOME:

  • Unified way of accessing synced folders, sharing files
  • Having a cross platform API so client developers will only need to have one implementation instead of one per filebrowser/DE
  • Avoid using a status icon

Working with files on cloud providers includes:

  • Select folder to sync with the cloud provider
  • Sharing with other users, via mail or public link
  • Commenting on files
  • Browse versions
  • Show state of sync process
  • Inform about changes of files

Current state of sync clients

Those actions are at the moment provided by dedicated sync clients. Some of them are using a nautilus plugin to provide file actions in context menu as well as status indicators on file icons.

Actions from file context menu

  • Share file
  • Copy public file link to share
  • Open file on providers web page
  • Move to sync folder

https://bitgrid.net/~jus/gnome-cloudproviders/fileaction-nextcloud-nautilus.png https://bitgrid.net/~jus/gnome-cloudproviders/fileaction-dropbox-nautilus.png https://bitgrid.net/~jus/gnome-cloudproviders/fileaction-dropbox-nautilus2.png

Status indication for files/folder

  • Sync status
  • Sharing status

https://bitgrid.net/~jus/gnome-cloudproviders/statusindicators-dropbox.png https://bitgrid.net/~jus/gnome-cloudproviders/statusindicators-nextcloud.png https://bitgrid.net/~jus/gnome-cloudproviders/statusindicators-nextcloud2.png

Actions/Information from the status icon menu

  • Quit daemon
  • Pause/continue syncing
  • Settings
  • Open folder/provider website
  • Help
  • get more storage
  • Show detailed sync status
  • Show quota
  • Show list about file changes / recent notifications

https://bitgrid.net/~jus/gnome-cloudproviders/statusicon-nextcloud.png https://bitgrid.net/~jus/gnome-cloudproviders/statusicon-dropbox.png https://bitgrid.net/~jus/gnome-cloudproviders/statusicon-googledrive-windows.png https://bitgrid.net/~jus/gnome-cloudproviders/statusicon-dropbox-windows.png

Use cases and workflow

  • User does not have a cloud provider yet and wants to sign up for one straight through the desktop without needing to research online
  • User add an account in goa for a cloud provider, automatically nautilus and the file chooser displays status and some options for this provider.
  • User wants to select a folder and sync with a specific provider
  • User needs feedback about the status of a specific folder, like syncing, synced, error. (currently done by emblens on the folders)
  • User wants to share a specific file or folder with friends (currently done by context menu extension)
  • User wants to favorite a file or see the favorite status (would be good to integrate with Nautilus Bookmarks)
  • User wants to see activities like comments, changes, shares on a file and also comment
  • User wants to restore file from previous version
  • User wants to access additional features not related directly to its integration with the desktop, like buying storage, upgrade to premium, etc.
  • Any legal issues here?

No goals

Integration with other features that are not related to files, like Calendar, Contacts, Mail, Notes, etc. Those should come in a different module. (Not saying to not discuss it, but I bet we will have enough with the files part) Our own implementation of a cloud framework. This can come at a later stage. For example sharing the sync part of Nextcloud and add support for it in gvfs, so we can share code and have all integrated properly.

Implementation draft

CloudProviders is an experimental D-Bus API for displaying information about third party cloud providers. This page describes CloudProviders features, tracks progress, and is a place to collect feedback.

Design

Cloud providers are primarily intended to be shown in GtkPlaceSidebar, which is exposed in file chooser dialogs as well as the Files app. Here they are displayed alongside other online accounts.

https://csorianognome.files.wordpress.com/2015/07/cloud-mockup.png

Code

The cloud providers API can currently be found in the cloud-providers branch.

Features

  • CloudProviderUpdated: notifies DBus that the cloud provider has updated its status/icon/path.

  • GetIcon: sets the cloud provider icon.

  • GetPath: sets the folder where the cloud provider stores its files.

  • GetName: sets the name of the cloud provider.

  • GetStatus: sets one of three states: idle, syncing and error.

  • A GMenuModel can also be exposed through D-Bus.

Open Questions

  • How to expose more than one account/repository per cloud provider? Show each one separately in the sidebar?
    • Yes should be like that. Also one account might also have multiple sync folders. -- JuliusHaertl

  • Should be allow multiple folders synchronized? In case we do, what does the primary button does in the sidebar row of that cloud provider? CarlosSoriano

    • Synchronization is for now scope of the sync clients. We could just show a list of all the synced folders then. -- JuliusHaertl

  • How we do credentials? goa? CarlosSoriano

    • Also, since syncing is in the scope of the clients they should ideally use goa as account backend. -- JuliusHaertl

  • How to communicate the 3rd party client is necessary? How to handle when it's not present?

Comments and Feedback

See also

Design/Whiteboards/CloudProviders (last edited 2017-05-30 19:14:41 by JuliusHaertl)