Aug 16, 2007

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...

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