Showing posts with label giver. Show all posts
Showing posts with label giver. Show all posts

Monday, January 26, 2009

Tomboy 0.13.3, Tomboy 0.12.2, Tasque 0.1.8, and Giver!

There have been some very important Tomboy and Tasque releases in the past month or so that I have neglected to share. I think it's true that Twitter removes a lot of the motivation to blog. Here are the takeaway points:

Shiki-Colors Theme (click for larger version)

So what else is going on? Tomboy 0.13.3 features some fixes that cut down my memory usage by 25% (with ~200 notes). It should also speed up start-up time if you have a big note collection. One user with 621 notes reported a change from 11 seconds to 4 seconds when he upgraded! The fixes were almost all related to extra work done on a per-note basis, so the memory and performance wins are most significant on these large note collections.

That being said, there is a lot more work to do on memory and performance. Ruben Vermeersch blogged about adapting Federico's timeline tracing tools to chart Tomboy start-up performance. This is going to be extremely helpful in figuring out where we're slowing things down. And as for memory usage, I have only fixed the low-hanging fruit; there are more wins to be had! If this is an area of computer science that you find fun, all help is welcome. :-)

Tomboy Startup (click for full-size graph)

My day job of working on the Mono Accessibility team has kept me pretty busy, and it's been hard lately to find time to work on Tomboy and Tasque. Sure, my team understands when I take a few hours every couple of weeks to prepare a Tomboy release, but that doesn't provide enough time for big feature work or difficult bug fixes. For example, we knew about the problems with Tasque and RememberTheMilk.com for a month before we were able to fix it and get a release out. Fortunately, Novell has its cool "ITO" (Innovation Time On) program. I accumulate 4 hours of ITO every week; that's basically the equivalent of 10% time! As I used up all of my regular time off with hospital visits last year, I scheduled four days of ITO during the week of Christmas. I was able to use that time to review a ton of outstanding patches for Tasque, fix the bugs in the RTM and SQLite backends, and make it easy to build on Windows and Mac OS X. This is also when I did all of the memory fixes for Tomboy. So a big thanks to Novell for supporting me in this work.

Lastly, I'm really excited about Ankit Jain's work on Giver. I never worked on Giver, unless you count the moral support I lent during that first Hackweek. :-) But I am amazed at how many people are asking for updates, Windows and Mac versions, etc. As somebody who works from home, Giver isn't that useful to me, but apparently it is very popular and more people are learning about it every day. With Ankit's help, this project may not be so dead after all. You can help him out by testing his Windows builds, trying latest SVN, filing issues, and hanging out in #giver on GIMPNet.

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
Week
. 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. ;-)

Best,
Sandy