Sunday, July 15, 2007

Tomboy 0.7.2 Released!

This is the first release that I've done myself, so it's extra special to me. ;-) Aside from bug fixes and patches from the community, cool new stuff includes the transition from a custom plugin infrastructure to Mono.Addins, and Boyd's Tasks addin that adds task integration to Tomboy.

Now I just need to get tomboy-sync stabilized, so it can go into the next release...

Tuesday, July 3, 2007

Tomboy Note Synchronization

I got back from Provo on Saturday, after spending three days and about 45 hours hacking on Tomboy note synchronization with Boyd during the last half of Novell's Hack Week. I'm down to about 7 hours of time off left at my real job, but damn was it worth it! For those interested, below is the email I sent to the tomboy-list, peppered with a few related hyperlinks.

Hi Tomboy fans,

As you may have seen on Boyd's blog, I visited Boyd at Novell HQ
in Provo to help work on Tomboy Synchronization during Novell's Hack
. We made awesome progress, and we feel pretty confident that
sync will go into the next stable release. I've broken this update
into the following sections:

1. What is Tomboy synchronization?
2. What can I expect to see in the next release?
3. Technical details
4. What about Conduit, etc?
5. What about note sharing?

1. What is Tomboy synchronization?

With the Tomboy synchronization feature, we aim to solve a very
specific user problem: one person running Tomboy on multiple computers
who wants to keep all their notes in sync. It is very common for a
user to have (for example) a desktop and a laptop, with no obvious way
to move notes back and forth between them. Our solution is providing
100% note data synchronization between these computers.

We know some people are interested in more sophisticated sync
scenarios, like two users syncing a subset of their notes. This is
certainly doable, and the work we've done on sync would allow this to
happen via an external app, but there are currently no plans to add
these advanced sync features to Tomboy 0.8.0.

2. What can I expect to see in the next release?

If you watch Boyd's demo and check out the screen shots, that's a
pretty good indication of what we plan to deliver. You will be able
to synchronize all of your notes via a central shared location. This
location may be an SSH share, a WebDAV share, or *any* mount point on
your local file system.

We will provide extremely simple support for conflict resolution
during sync. Conflicts include modifications to the same note on
different computers, creating different notes with the same title on
different computers, etc. Our current solution here is to prompt the
user to either delete or rename the local version of the note. Any
ideas on how to make this is as brain-dead easy as possible would be
appreciated! :-)

3. Technical details

All syncing is actually done via local mount points. In the cases of
WebDAV and SSH shares, we utilize FUSE filesystems (wdfs and sshfs,
respectively) to mount the shares locally. We then use the same sync
backend to perform filesystem operations for sync. FUSE support is
detected at run time.

We will be writing up more details about our sync implementation as
soon as we get a chance. For now, feel free to play with the code in
the tomboy-sync branch (though of course back up your notes before
trying sync, as it's not bug-free yet).

4. What about Conduit, etc?

Conduit is a cool program that helps you sync between various
different applications and web services. It has support for Tomboy,
allowing you to sync between Tomboy and Evolution, GMail, BackpackIt,
and other apps/services. So why aren't we just throwing out support
behind Conduit (or another sync framework)?

Basically, we felt that Tomboy note synchronization is a must-have
feature for 0.8.0, and Conduit is still new and we haven't had much
time to test it. We wanted our users to have a sync solution that had
no risk of data loss (which can happen when a note moves to an
application or web service that is not aware of Tomboy-specific
features), and we wanted it to work right out of the box.

That being said, Conduit is an awesome project, and the work we have
done (which includes patches from the Conduit team!) will enable
Tomboy to work even better when syncing via Conduit. So our users
will have the option of a more advanced sync solution with Conduit if
that interests them.

5. What about note sharing?

Some of you may be thinking "I only have one computer...I don't care
about sync, I care about sharing my Tomboy notes with my friends!"
Well, this isn't something we're adding natively to 0.8.0, but the
work we've done for synchronization makes sharing a much easier
problem to solve. In fact, we now have support for easily sharing
notes to friends on a local network with Giver, another cool
Hack Week project
. The interaction here is so incredible...I wish my
computer was powerful enough to record a demo of how awesome it is.
You just drag a note to your friend's face in Giver, and when they
accept the note it just pops up as a new note in their Tomboy! It's
super cool.

Well that's everything. We'll send out more updates as sync
progresses. Remember, if you try out the code in the tomboy-sync
branch, BACK UP YOUR NOTES FIRST. We will bring the code over to
Tomboy trunk as soon as we feel comfortable trusting everyone's notes
to it.

We really look forward to hearing any ideas our users or developers
might have for making Tomboy Synchronization really rock! If you're
interested in hacking on this (there is still some work to do), let us
know. We will put up some technical documentation on our sync
implementation as soon as we get a chance to write it. ;-)