16
Aug
07

Conduit Is Online Desktop

After a short hacking hiatus, soul searching, and general uncertainty regarding Conduits place in the Gnome Online Desktop plan, we the Conduit developers have decided to keep doing what we do best; adding awesome features, and making Conduit into the best desktop synchronization service for the free desktop. I invite you all to spot the new features in the image below;

Conduits New Features

Going through the new features one by one;

  • The Network datasink - thats how you tell conduit to share data to other people on the network
  • The chad.local dataprovider - … and thats how you’ll choose to consume other peoples shared data
  • The evo2-sync dataprovider - before long you’ll be able to use opensync plugins in conduit
  • The f-spot dataprovider - before long that will be two-way and networkable, work is ongoing with upstream
  • Always-Up-To-Date is on the horizon (i.e. auto update and sync changed data)
  • iPod photos support - our patches are accepted upstream, so soon we will support those too
  • The facebook dataprovider - just photos so far, but more facebook features will be exposed soon

Other than those Massive New Features, there has been continued bug fixing and some improvements to the DBus interface to make it more Havoc Compliant. Check out the sample below for how to use Conduits DBus interface to synchronize things…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
bus = dbus.SessionBus()
 
#Create an Interface wrapper for the remote object
remote_object = bus.get_object(APPLICATION_DBUS_IFACE,"/")
app = dbus.Interface(remote_object, APPLICATION_DBUS_IFACE)
 
#get a dataprovider
path = app.GetDataProvider("TestSource")
source = dbus.Interface(
bus.get_object(DATAPROVIDER_DBUS_IFACE,path),
DATAPROVIDER_DBUS_IFACE
)
 
#get another
path = app.GetDataProvider("TestSink")
sink = dbus.Interface(
bus.get_object(DATAPROVIDER_DBUS_IFACE,path),
DATAPROVIDER_DBUS_IFACE
)
 
#get a conduit
path = app.BuildConduit(source, sink)
cond = dbus.Interface(
bus.get_object(CONDUIT_DBUS_IFACE,path),
CONDUIT_DBUS_IFACE
)
 
print "Synchronize the conduit"
cond.Sync()

I have written an example which shows how to use Conduit to upload photos to any of our supported photo sites with even fewer lines of code. The DBus API documentation lives at the top of this file. Dont forget that by using a desktop wide sync framework you get all the Conduit bling for free, including

  • Don’t upload duplicates
  • Newer photos replace older ones
  • Asynchronous and all authentication is handled by Conduit

13 Responses to “Conduit Is Online Desktop”


  1. 1 dre August 16, 2007 at 11:14 pm

    You rock!

    Synchronization and a pluggable infrastructure with interfaces is the way to go.

    This store-all-your-settings-and-files-in-a-single-online-service sucks. My files and settings should be under my control (computer) in the first place. Syncing portions of my data with a device or a service is a nice thing to have.

    Thanks a lot,
    dre

  2. 2 Claude August 16, 2007 at 11:19 pm

    Great,
    Hope it’ll be soon in GNOME SVN, so as we can follow i18n status with l10n.gnome.org.

  3. 3 Philip Van Hoof August 16, 2007 at 11:39 pm

    Yes, let’s talk at some conference about synchronizing E-mail data from a desktop to a mobile. This might help people having a kickstart for their E-mail application on their mobile (rather than having to always use IMAP and download all info again).

    There are some tricky pieces to do this with Tinymail, but I’d like to help with that (provide APIs and/or code the implementation for them to make this possible).

    Let me know.

  4. 4 zetotof August 16, 2007 at 11:58 pm

    Awesome!

    I just would like to know if there are planification to collaborate with the gnome-sync project, which does similar things : http://www.genunix.org/wiki/index.php/Gnome_sync_demos . It would be a shame if the two best sync projects didn’t merge.

  5. 5 Pierre S August 17, 2007 at 12:01 am

    Thanks a lot for the new features.
    This software is Actually Useful (TM)

  6. 6 john.stowers August 17, 2007 at 12:14 am

    @Philip,
    I will be at linux.conf.au next year. Unfortunately New Zealand is a long way from most of the other FOSS conferences. I would love to start a dialog with you re tinymail.

    @zetotof,
    We are aware of the gnome-sync project. We support opensync plugins (or will soon) so in may regards we already work with them.

    Thanks all for your comments!

  7. 7 yop August 17, 2007 at 12:18 am

    Rock on !
    Thank you so much for your great work.

  8. 8 bjoern August 17, 2007 at 2:12 am

    Thanks a lot John for your awesome work!
    Wouldn’t it be cool to have telepathy-tubes supoort in conduit? *hint, hint :)*

  9. 9 mike August 17, 2007 at 4:42 am

    Hey, hopefully opensync will deliver EvoPhone support!

    Then Conduit would really kick ass for me :)

  10. 10 michael schurter August 17, 2007 at 5:33 am

    Wow… Conduit really is the answer to how to build an Online Desktop. Very impressive!

    Although hopefully someday your pretty UI will be relegated to a little used Control Panel that you use to setup everything once and then never have to think about again!

  11. 11 Simon August 18, 2007 at 2:46 am

    Hi,

    Do you have any idea why autogen.sh in the latest svn might be giving me this error:

    ————–

    Running glib-gettextize… Ignore non-fatal messages.

    Copying file mkinstalldirs
    Copying file po/Makefile.in.in

    Please add the files
    codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 lcmessage.m4
    progtest.m4
    from the /aclocal directory to your autoconf macro directory
    or directly to your aclocal.m4 file.
    You will also need config.guess and config.sub, which you can get from
    ftp://ftp.gnu.org/pub/gnu/config/.

    Running intltoolize…

    Running aclocal-1.4…

    aclocal: configure.ac: 18: macro `AM_PATH_PYTHON’ not found in library

    ———-

    ta!

  12. 12 Simon August 21, 2007 at 12:15 am

    Ah! Just seen your latest post. Thanks for looking into it :)

  13. 13 Dylan McCall August 21, 2007 at 8:16 am

    Looks awesome. I have always wanted a smooth, easy to use, powerful synchronization tool. At first I was a bit unsure, but at this point Conduit definitely seems to be it. I was initially unsure because I was not certain how much work was being put into open-endedness; making the system accessible through scripts and the like. From the looks of it, you are doing a lot for that!

    Something I would love to see is a way to set up a two-way sync across multiple computers, while only having to set it up once.
    For example, I have a USB key that I am using for syncronizing with Conduit. The dream is to some day have a computer instantly do a two-way sync with the thing the moment I mount it (possible via a script and the d-bus interface, I believe?), but what would be really neat is if I only had to set that up once.

    For example, shove the usb key in, tell Conduit to set it up for quick synchronization, perhaps by putting a hidden file on its root. Conduit (on any computer, out of the box) could recognize a mounted file-system set up like that, and automatically sync as defined via the hidden file.
    I am not 100% positive how well that could be integrated into your existing (and fantastic) interface, but I think it would be quite awesome as an out of the box feature. Maybe as a dataprovider with a magical twist somewhere…

    Sorry, kind of an off topic ramble there. Long story short, I really like what you are doing here. Conduit, even in this early stage, is one of few programs that I trust to do exactly what I expect it to do :)

Leave a Reply