A quick update on my work for GNOME during GSoC. The initial work from Carlos has been split into a library handling the cloud provider management called libcloudproviders and a patch for GTK+ to add cloud providers to the GtkPlacesSidebar.
I did quite some refactoring of the code. One big change is that is now uses native DBus signals to react to changes of the cloud providers. That way each provider can notify individually about changes. It is now also possible for cloud providers to expose multiple synced directories (e.g. if a user has set up more that one accounts) to the API.
A cloud provider sync client needs to register a DBus name and implement org.freedesktop.DBus.ObjectManager. The ObjectManager will take care of announcing all individual accounts added to the bus. For every account an individual DBus object that implements our new org.freedesktop.CloudProvider1 interface is required. In case sync clients want to provide a menu with custom actions regarding to their sync client, they also need to implement org.gtk.Menus as well as org.gtk.Actions. For a example implementation on the the cloud provider side you can check out the test program.
At the moment the CloudProvider DBus interface supports 4 methods to provide information about the cloud provider accounts. That could of course still be extended to provide information about quota or sync progress. That will be done when the surrounding code is finished.
The next step is to wrap the cloud provider and object manager setup to a simple C API so that clients can make use of it without deep knowledge of gdbus as well as writing a small daemon that will take care about registering and managing cloud providers.