Wednesday, May 27, 2009

Tomboy 0.15.1 Release Brings New Online Note Synchronization Preview

"Red Westie", Copyright Ellery Armstrong, Milk Teeth Photography, Used With Permission

On Monday we released Tomboy 0.15.1, the latest development release on the road to 1.0. It features a lot of the same fixes from 0.14.2, and some other improvements:
  • Preview of new Web Synchronization add-in
  • Work around problems on Windows caused by having multiple GTK+ applications modify PATH
  • Search for phrases by surrounding them with quotes, save the width of the Notebook pane, and other improvements to the search UI
  • Better HIG compliance in synchronization UIs
  • All the same fixes from 0.14.2
  • And much more!

I'd like to talk to you a little bit about this "Web Synchronization" add-in. From a feature perspective, the biggest problem with Tomboy has been how difficult it is to synchronize your notes between multiple computers, and to share your notes with your friends and colleagues. We have note synchronization but it's hard to set up unless you have your own server. You can share notes with Giver, but that has its limitations as well. And how do you view your notes when you're on a device without a Tomboy notes client?

A long time ago I blogged about how great a free "Tomboy Online" web service would be as a fix for these issues, but I never had the time to follow up on it. Until now.

Snowy, Your Tomboy Notes Online

Meet Snowy. Snowy is a project started by Brad Taylor to bring your Tomboy notes online. It's "Tomboy's best friend on the web", as Brad says. Here is what you can expect from Snowy in the coming weeks and months:
  • "Tomboy Online" - a free hosted service (running Snowy), where anybody can create an account for securely synchronizing their notes.
  • Fine-grained privacy settings to let you mark your notes as public, private, or shared with specific friends.
  • Edit your notes directly in your browser!

Editing notes in Snowy

Brad started Snowy in his spare time, and recently our team at Novell had a Hackweek at our disposal. So last week, Brad and I decided to really get this project off the ground. It is still an extremely new project, but we feel it's far enough along to solicit feedback and contributions from the community. Some basic facts about the project:
  • Snowy is AGPL-licensed. I firmly believe that our community needs to step up and start offering competitive AGPL web services. If we want to stay relevant, that is!
  • Snowy is developed in Python on the Django web framework. Most people who expressed an interest in working on this were most familiar with Python for web apps.
  • Snowy is developed in GNOME git. If you watch the commits list, you've no doubt seen the recent activity.
  • Snowy is easy to deploy on your personal server. If you don't want to trust Tomboy Online with your notes, you can still use Snowy to give yourself web access to your notes, or just to provide a more convenient way to synchronize.

Snowy is brand new! I hope in the screenshots you see the potential, but I'm sure you also see how much room there is for improvement.

What works:
  • Tomboy<->Snowy note synchronization
  • Online note-viewing
  • User registration
  • Database administration and other fancy Django stuff

Logging in to Snowy

Where we need help:
  • Authentication review, OAuth
  • HTML/CSS/JS to prettify everything
  • Design and implement all that cool note-sharing stuff
  • Little features like copying a friend's note into your collection, or downloading/emailing/printing any note straight from your browser
  • Security audit
  • Your ideas!

You may be wondering how Snowy and Tomboy communicate for synchronization. I will talk about this more in a future post, but we have designed a REST API for web synchronization. This API is easy to consume from the client end, and easy to implement on the server end. This means we should have no trouble adding sync capabilities to Tomdroid and other Tomboy note clients. It also means that if you don't like Snowy, you can create your own web service that implements the same API, and still use the same web synchronization add-in included in Tomboy.

We still have a lot of work to do to make synchronizing and sharing your Tomboy notes effortless and fun! Outside of Snowy, here are some things we'd like help working on:
  • Automatic background synchronization in Tomboy
  • Web synchronization support in Tomdroid
  • More features in the web synchronization add-in, like:
    • One click to get from your Tomboy note to its Snowy page
    • Control your sharing preferences for a note without opening your browser
    • Easy access to friends' notes

By the way, if you plan on using Tomboy 0.14.x for a long time, you'll be able to use the Web Synchronization add-in, too! When we launch Tomboy Online, downloads will be available for 0.14.x users on all platforms.

Stay tuned for more updates, and a demo server for everybody to play with!

This post brought to you by the Tomboy Blogposter add-in.

Monday, May 18, 2009

Tomboy 0.14.2 Released - 25% Faster Start-Up!

"Running Shep", Copyright Ellery Armstrong, Milk Teeth Photography, Used With Permission

Last week we released Tomboy 0.14.2, a new stable release with a lot of fixes cherry-picked from the development branch. We remedied a couple of crashes, squashed some weird errors and behavior, and we even improved memory usage and start-up performance. Here are the highlights:
  • Start Tomboy in 25% less time
  • Fix random start-up crash on distros like Ubuntu 9.04
  • Recognize presence of FUSE when built into kernel (not as module)
  • Fix error when opening New Note Template on Ubuntu 9.04
  • Stop seeing "this/that/other" as a file link (whoops!)
  • Don't crash when opening invalid or improperly-formatted notes
  • Better error-reporting on Windows
  • Updated cross-platform documentation
  • Updated translations

This start-up performance fix was also in 0.15.0, but I didn't realize how significant it was until after I'd already announced it. We found that this simple fix saved us around 25% on Tomboy start-up. On my system, start-up time was cut from 4 seconds to 3 seconds (these are warm starts, I did not have time to test cold starts).

These traces were created using Ruben's patch and Federico's graphing tool. You can click them to see the full graphs (note that apps run slower with tracing turned on). Compare the numbers for setting up our AddinManager in 0.14.1...

...versus the new numbers for 0.14.2...

The funny thing is, all I did was change a couple of lines in our Mono.Addins initialization code to reflect the latest recommendations of the maintainer.

This "free" boost isn't even part of the low-hanging fruit I keep talking about when it comes to Tomboy performance optimizations. I'm working on another fix that should cut down on memory consumption, too, and you should expect performance improvements in every release this cycle. If you would like to help us set up an automated way to track memory usage and start-up time in Tomboy, that would be an awesome contribution. :-)

Following the GNOME schedule, our next development release, Tomboy 0.15.1, is scheduled for May 25. Stay tuned for some exciting announcements!

This post brought to you by the Tomboy Blogposter add-in.

Wednesday, May 6, 2009

Tomboy 0.15.0 Development Release Brings New Features and Fixes, Even For 0.14.x Users!

I'm very pleased to announce Tomboy 0.15.0, our first development release on the road to Tomboy 1.0. A few of the improvements in 0.15.0 are:
  • New NoteDirectoryWatcher add-in supports editing of your note files in other programs (think Dropbox).
  • The first of many improvements to start-up time, by not rebuilding the add-in registry every time Tomboy starts. This also fixes start-up bugs on a few distributions, including Windows.
  • Random start-up crash in GConf fixed.
  • Many improvements to the printing add-in.
  • Better note and URL auto-linking.
  • Console output on Windows command prompts now works correctly, for better error reporting.

See our NEWS file for information on some usability improvements, better GMime support, Mono.Addins upgrade on Windows, and more.

Please visit our download page for source tarballs, Windows installers, and Mac disk images. Note that the Windows installer is still a work-in-progress, and for now you should always uninstall the previous version of Tomboy before installing a new one.

NoteDirectoryWatcher Add-in Available for 0.14.x Users on Linux, Windows, and Mac!

NoteDirectoryWatcher in Action

For years, users in various situations have tried setting up ad-hoc note synchronization solutions by syncing their ~/.tomboy directory between computers. This has never been supported, and because Tomboy would not notice outside changes to note files while it was running, could easily lead to data loss and confusion. Thanks to Mike Fletcher, we are one step closer to supporting this group of users. With this add-in enabled, if another process modifies your note files, Tomboy will notice the change and update appropriately (after a short delay).

The great thing about add-ins is that we can make this feature available for download to all of our 0.14.x users. Source is in git, but you can download this cross-platform binary, drop it in ~/.tomboy/addins/ , enable it in your preferences and try it out! As this is our first release of this feature, bugs are expected, so please report any problems you experience. :-)

Please remember that sharing your ~/.tomboy is still not recommended, because it contains a bunch of add-in metadata that should not be shared unless you have identical set-ups on each system. In an upcoming version of Tomboy, we will be getting rid of ~/.tomboy and following the FreeDesktop XDG specification, so note data and add-in configuration will be stored separately. If you care about our migration from ~/.tomboy to XDG directories, please read my proposal on the bug and leave your comments.

Upcoming Releases

"Droplet", Copyright Ellery Armstrong, Milk Teeth Photography, Used With Permission

Some of the fixes in 0.15.0 will be coming to our next 0.14.x maintenance release: 0.14.2. Expect news about this in a few days.

Our next development release, 0.15.1, should include some new features in note synchronization, better Windows support when multiple GTK+ apps are installed, and the typical assortment of fixes and improvements. We are planning to have a bug day soon where we'll milestone a lot of our outstanding bugs. I'll let you know when we have a date. :-)

Lastly, after the last Tomboy planning meeting, we developed a roadmap for our next stable release, which, pending a few specific improvements, will be versioned 1.0. I'll be writing more about this in the future, but for now, feel free to check it out, and if you are interested in helping, toss your name in there!

This post brought to you by the Tomboy Blogposter add-in.