Genesis – A Graphical Frontend for SyncEvolution
Sunday, December 2, 2007 1:44:26 PM
I have recently started to use SyncEvolution. This is a commandline driven SyncML client that allows you to synchronize your Evolution data (appointments, addresses, tasks) with a SyncML server like Scheduleworld. I like this concept, because it is based on open standards and free software, and I think this is a better approach than the proprientary client APIs that, for example, Google provides.
Now it's relatively easy to set up and use syncevolution. You have to edit some config files, but they are well documented and easy to understand. And you have to execute a simple command to perform the actual synchronization. Plus, you get detailed information about the actual process. But I mostly don't need that much information (except in the case of failure), and I don't want to open up a terminal every time I sync my data. So I decided to write a simple, small GUI in PyGTK.
The result of this decision were some hours of coding with ups and downs (python-notify really could need some documentation, and it definitely has its rough edges) and a tiny PyGTK app called Genesis that sits in the notification area and allows you to sync with one single mouseclick. Here are some impressions of what it looks like:
This is the tray icon and the menu. You can start the sync either by choosing the menu entry or simply by clicking on the tray icon.

When the synchronization was successful, the performed transactions are shown in a popup bubble. (During the synchronization, the arrows spin around the globe to give you some visual feedback about the transaction being performed in the backgroud).

When a transaction failed, you have the possibility to take a look at the error log. (To prevent unneccessary failures due to a broken internet connection (e.g., when you are on WLAN and lost the connetion), Genesis asks NetworkManager for a connection before actually calling syncevolution.)

The error log is then displayed in a separate window.

For now, the most important functions are in place and working (at least for me). You don't even have to install anything, just execute genesis.py (or add it to your session). But of course I'd like to get your feedback, suggestions, bug reports – and of course patches. You can get the files from the launchpad project page.
P.S.: Maybe it would be a good next step to add a configuration dialog, so that you don't have to touch the config files manually. But since this definitely would be a bigger task, and since it now works for me, I'm not too keen on adding that. So if you are willing to contribute this, grab the code and go ahead... :-)
P.P.S.: You might wonder why I choose this name. The first reason is that I don't like the obvious choices like "PySyncEvolution" or "SyncEvolutionGTK". Second, religious names seem to be quite famous among GNOME developers (think of epiphany or revelation), and Genesis is somewhat related to Evolution (as its counterpart, if you want). Third, it starts with G, which isn't bad for a GNOME application... :-)








Anonymous # Sunday, December 2, 2007 6:07:42 PM
Frederik Elwertfreedo # Sunday, December 2, 2007 8:33:40 PM
I agree that a configuration editor would be nice to have. I have it on my agenda, but I can't promise when I will find the time to implement it.
For the other two points, those were easy ones and are now fixed in trunk.
Anonymous # Sunday, December 2, 2007 11:40:52 PM
Frederik Elwertfreedo # Monday, December 3, 2007 4:22:44 PM
I thought about the misuse thing, and I'm still not really sure about it. Sure, it were practical considerations in first place (a StatusIcon is quite easy to handle, and I didn't want to dive into libnotify and GNOME applets at once), and I had converting into a panel applet on my TODO list. But I'm not really sure, since the icon does in fact notify you:
* about a sync taking place (animated icon)
* about the results of a sync (popup bubble)
So its informational value is, I think, no less that that of, say, the NetworManager icon.
And in deed, there might be more information that onc could show with the icon:
* watching evolution files and show when they changed
* report about automatic syncs (if one should decide to implement them)
I think you idea to look if syncing is needed is quite nice, and I thought about it, too. But I'm not really sure if it will add much benefit in the end, since I quite reliably know when I modified my calendar... ;-)
For now, I added i18n support and a German translation. If anyone wants to add a translation, just take the .pot from the po/ directory and send me your .po files. And if there are any features that you consider more valuable than me, don't hesitate to send me your patches... ;-)
Anonymous # Tuesday, December 4, 2007 11:37:43 PM
Anonymous # Tuesday, December 4, 2007 11:58:50 PM
Frederik Elwertfreedo # Wednesday, December 5, 2007 12:00:37 PM
https://launchpad.net/genesis-sync/+download
There still isn't any installer or distribution package, not even a setup.py, so you have to execute src/genesis.py directly.
Anonymous # Monday, February 18, 2008 12:18:03 AM
Frederik Elwertfreedo # Monday, February 18, 2008 12:50:09 PM
Once there's a deb package, dependencies won't be a problem any more, I hope. (If anyone wants to guide me through the packaging process, I'd be very thankful.)
Anonymous # Saturday, April 5, 2008 4:50:46 PM
Frederik Elwertfreedo # Sunday, April 6, 2008 12:31:12 AM
Currently I'm quite busy moving to a new location and starting a new job, but once I find the time I'll finish the currently stalled work on Genesis. This will involve a proper install script, and hopefully support for syncevolution's new config layout. And then I'll have a look into the python-evolution stuff, since this might become relevant for me too, when I upgrade to Ubuntu Hardy.
Anonymous # Monday, April 7, 2008 6:13:10 AM
Anonymous # Monday, April 7, 2008 7:59:17 AM
Frederik Elwertfreedo # Monday, April 7, 2008 9:34:58 PM
Unfortunately, I don't have too much free time to work on Genesis for the next month or so. But I'll have a look into your patch and the problem you encountered.
Currently, I'm planing to release a new version of Genesis with an autostart feature. This requires a properly Genesis, so I was working on a proper install script anyway. So you effort comes just in time. But mine was a distutils based setup.py, not autotools based. I don't now about each to say which suites better, so I might as well go with your build system.
The next step would then be a new development branch incorporating the changes coming with syncevolution 0.8. But the current branch needs some love before I would start that.
By the way, the bugtracker on Launchpad is now enabled for Genesis. I just didn't realise that it wasn't by default. Feel free to use it.
Anonymous # Wednesday, April 30, 2008 10:17:52 AM
Anonymous # Wednesday, April 30, 2008 10:25:23 AM
Anonymous # Wednesday, April 30, 2008 1:23:28 PM
Anonymous # Thursday, January 22, 2009 9:27:44 PM
Frederik Elwertfreedo # Thursday, January 22, 2009 10:03:49 PM
If you can't solve the problem that way, you can use the Answers section on Launchpad for further assistance: https://answers.launchpad.net/genesis-sync
Anonymous # Tuesday, December 1, 2009 12:30:33 AM