Tuesday, April 21, 2009

Tomboy Notes on Android: Olivier Bilodeau Releases Tomdroid 0.1.0

During the fall, Olivier showed up on tomboy-list announcing a school project he would be working on: Tomdroid, a Tomboy note reader (and eventually editor) for the Android mobile platform that drives the wonderful G1 phone. After a few months of development, the first "baby-eating" release is available for testing. Olivier mentions a number of nasty little bugs in this first release, but he is already working on fixing them, and people are already starting to poke around with the code and find ways to help.

Tomdroid: Tomboy Notes on Android

Obviously, having access to your Tomboy notes on your mobile phone is a huge win. Even when they are read-only, you can:
  • Access your grocery list without having to call your wife (which only proves that you weren't listening in the first place)
  • Quickly access your notes about obscure system configurations when visiting a client site, instead of googling (ever worked for a client who stood over you shoulder, and wasn't too impressed by your frequent googling?)
  • For me, I often forget to add contacts and calendar events until I am repeatedly burned, but it's pretty common to have that info floating around in my Tomboy notes.
  • And the number one win: you can have the schizophrenic dude next to you on the bus review the draft of your latest blog post (this keeps him busy, making it less likely he will stab you in the face)

See? Tomdroid just saved your life.

As a G1 owner, I'm extremely excited about this project. I downloaded the Android SDK just so I could start playing around with the code. Olivier has communicated extensively with us on tomboy-list and in #tomboy, and one of the really nice things he's done is initial work on an XML schema for the Tomboy note format. This will be extremely useful to maintain, as it is inevitable that Tomboy notes will being to be read and edited via interesting new clients.

If you're looking for a fun (because it's Tomboy-related) and hip (because it's mobile) project to work on, I recommend spending some time with Tomdroid. New projects are always fun, for example you could work on tighter integration with phone features (like phone numbers, contacts, calendar, and web), or you can start playing with note editing (maybe a nerdy markdown editor would be a good fit?).

Ideas for getting your notes onto your G1:
  • Manually copy ~/.tomboy/*.note to your G1 periodically. Verdict: Lame
  • Write Tomboy add-in that hooks into HAL, notices when a G1 is connected, offers to push notes to phone (could be a button that appears in the note toolbar, a libnotify bubble, or even a totally automatic process). Verdict: Instant win, minus the requirement to plug in your phone.
  • Implement Tomboy online service, and corresponding sync functionality in Tomdroid. Verdict: Epic win, may not be ready for a few months.

Pushing your notes to the G1

Those are great ideas. While drafting this post last night I really liked the second one, so here you can download my quick hack job that Gets It Done. Drop Tomdroid.dll into ~/.tomboy/addins, or `make && make install`. Many thanks to James Wilcox for his incredible vision and Aaron Bockover for all the Banshee code I stole to make interacting with HAL devices brain-dead simple. Right now you just get an item in the Tools menu in the note window, but clearly there are better things that could be done. Patches welcome, I'll dump this into git as soon as I get rid of the excess Banshee code I brought in.

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


Anonymous said...

I'm geeked for this too - note taking on the g1 stinks!

Bastien Nocera said...

Hmm, Bluetooth? No wires, near instant sync for the small data. See the BluetoothChooserButton widget for selecting the device to sync to.

Sandy said...

@hadess: Excellent point! I completely forgot that I have a couple of bluetooth devices here (have never used it before). Will have to try that out.

Anonymous said...

I'm not sure Bluetooth would work here. The Android Bluetooth stack is very limited API-wise at the moment, if I'm not mistaken you can pair headsets and that's all.

Olivier said...

Thanks for the plug!

Anonymous said...

warning! Tomdroid is GPLv3. Anti-mono/community. (see Gnote post comments)

Sandy said...

@Anonymous What's wrong with GPLv3 for a totally different client built on a totally different platform?

And, if any code-sharing opportunities somehow presented themselves, I have a fair amount of faith in a copyright holder who regularly posts to the tomboy-list, keeps in contact with the maintainer (me), and attends Tomboy planning meetings.

Warbo said...

Android != G1, it works on my OpenMoko FreeRunner :)

Would be great to use as a TODO list :)

Richard said...

ugh, not more subtle stupidity re: GNote. Why can't you just be flattered that someone's interest in your project sparks a clone? It's attitudes like Tomboy's that make me think of Mono and its ecosystem as second-class citizens in the world of Free Software.

Olivier said...

@Anonymous is GPLv3 anti-mono and anti-communities? First time I hear that.. Here's my licence reasoning: I wanted a GPLv* licence because I didn't want carriers integrating my work with modifications that they would not contribute back. Since this is an end-user app I thought it was important. Then I picked v3 instead of v2 because I can integrate Apache licensed code with no issues (and a lot of Java [Android] code is under the APL). Anyway, I'm the only copyright holder right now and I can re-licence what I've done so far if I want to but I have no reason to do so.

@Warbo give me feedback on how it works on this kind of devices if you have a chance (and screenshots / pictures too). I can think of at least one bug right now on the top of my head: hardcoded notes path to /sdcard/tomdroid/.. oups!

@Richard Sandy has been very helpful and interested in my project. He's giving me a big visibility in the Gnome land. I'm pretty sure he is flattered that someone is doing a mobile flavour of Tomboy. There is a difference between two programs agreeing on file format and some conventions and a complete line-by-line reimplementation in another language targeting the same platform/users. An example of the former being the relationship between Gnome / KDE through freedesktop.org and the former being a reimplementation of Gnome in assembly language because it would be faster (and counter-productive). Yes, ultimately its about choice and gnote has the right to exist and succeed but I also agree with sandy's arguments when he's saying its counter-productive.