2009-06-11

Remember The Milk plugin for GNOME Do Updates

After I finished my master thesis, I’ve been working on some changes to the RTM and Ping.FM plugin. With this post I’d like to give an simple update to the RTM plugin, by listing some of the new features that the new version will offer and a few bugs that has been/will be solved. This new version will (hopefully) be shipped with the up coming release of Do (0.8.2).

Changes behind the scene

  • Re-factored internal data structure. The data structure to store tasks/lists are much simplified which allows more features to be added relatively with less efforts.

  • Throttling Control. Added self-control inside RtmNet API to avoid server side throttling. Now we will send request to RTM server with interval no less than 1 second. Thanks to IronCow for the inspiration!

  • Improved synchronization with RTM server. Ensure synchronized content between Do universe (items indexed by Do) and your account in the cloud. If you modified any tasks elsewhere, the changes will be noticed by Do automatically. Obsolete items (deleted/completed) will not be left inside Do universe.

New features and improvements

  • Directly indexed tasks. Now the tasks are first class citizen in Do universe which means they are accessible directly by typing the name of a task.

  • New ways to navigator to tasks. There are 2 new item sources which means in addition to navigating to a task via the list it belongs to, you can also access tasks by their locations or tags.

  • Expandable task item. Each of the task can be expanded (by using “right arrow” key with default key bindings) to show some sub-items related to the task (if it has any). e.g. tags, location, estimated time.

  • Tags/Locations/Notes/Estimated Time support. You can easily add/remove tags, locations, notes and set estimated time now. They are also indexed and shown as sub-items of a task.

    • For adding tags, both hand typing (divided by a comma) and selecting from a existing tag list are supported.

    • For adding notes, you can separate the title and body of a task by either a “|” character or a new line.

    • The location associated with a task can be open in Google maps according to its latitude/longitude information

  • List actions. 3 new actions are added to provide functionality to create, rename and delete a list (except the reserved ones by RTM).

  • 4 meta lists. 4 “smart” list to offer easy access to tasks due today/tomorrow/in 1 week and overdue tasks.

  • Configurable overdue task notification interval. It was annoying before when you were seeing the notifications every 2 minutes once you had overdue tasks, so I add a configuration option in the preferences dialog to let you choose the interval between each notification, the default value is 15 minutes.

Bugs fixed

  • Bug #351564: RTM blocks startup, and crashes when internet is not available

  • Bug #324980: Remember the Milk not connecting with delayed network connection

    Though I think it is ideal that the Universe Manager in Do core will be capable of handling plugin activation depending on the network status, I let RTM try re-connecting during universe update if it has not yet established a connection to RTM server.

  • Bug #314798: after RTM plugin install: Do crashes after first character entered and Bug #370279: RTM plugin does not show the list of tasks

    These 2 bugs are actually connected — the latter is due to a temporary work around (which didn’t really fix the problem) to get rid of the crash in the former bug. The symptom is, when the tasks in an RTM account to be indexed are of large amount (40+), the XML received from RTM server is simply truncated at some random point, so you will either see Do crashes because the unfinished XML causes a parser exception (Bug #314798) or Do indexes no tasks after I only catch the exception which avoid the crash but can not help recovering the task list.

    I am not able to fix this bug for quite while simply because I cannot reproduce it in my system so I didn’t know in what way the XML became invalid, and testing with other users may expose their privacy to me, I cannot complain if no one would like to send me the problematic XML. Fortunately I recently received great help from Arnaud and Knorcedger who have been having this issue and are kindly enough to share their private info with me only to help me debugging. I would like to thank them for their support without which I don’t know when I could figure out where is wrong with the code. So I tried several different way to track down the real reason of the issue, and eventually it turns out it was the slightly-mistyped request URL in the original RtmNet API this plugin uses that causes the big trouble.

About Synchronization

One thing you may notice which behaves not as the same as the old version is that any change you have made to your RTM data (tasks, lists, tags …) will not be seen synchronized immediately inside Do universe. Normally you need to wait 2 minutes (10 minutes if you are using laptop and on battery) before any changes to be reflected inside Do. This is actually a by-product of ensuring better synchronization, because modifying data out of Do’s update cycles (what we use to do) can potentially leave obsolete data permanently inside Do. I suppose most the users can wait that 2 minutes, but in case you just need to access an item you’ve just changed, you can force Do to do a universe update by open the Preferences dialog and close it, then after a second or two, you should see the changes.

Test

You can test this new version by either compiling the code yourself or downloading a pre-compiled DLL file. Please keep in mind this is still a beta software and may still have bugs. So please feel free to let me know by emailing or leaving comments here if there is any problem.

  • Compile from source

    You can compile the source code pulled from this Launchpad branch. It is important to know you need to also have the latest Do compiled from the trunk code and installed. Please refer the wiki page on how to compile and install Do from source.

  • Pre-compiled Binary

    To save you some time, there is a pre-compiled binary DLL file you can use. The download address is: http://dl.getdropbox.com/u/110544/do-plugins/edge/RTM.dll. It has been tested with both GNOME Do 0.8.1.3 and the latest bzr code.

    To use it with Do 0.8.1.3, you need to make sure you clean the old DLL installed in you home folder, the safest steps to do that are:

    1. Open the Preferences dialog and deactivate the Remember The Milk plugin.

    2. Remove the folder “~/.local/share/gnome-do/plugins-0.8.1.3/addins/Do.RememberTheMilk.1.0/” and its content

    3. Remove the file “~/.local/share/gnome-do/plugins-0.8.1.3/addin-db-001/addin-data/global/Do.RememberTheMilk,1.0.maddin

    4. Go to the folder “~/.local/share/gnome-do/plugins-0.8.1.3/addin-db-001/addin-dir-data/” and remove the file whose name contains “Do.RememberTheMilk.1.0

    5. Then you can copy the RTM.dll file into “~/.local/share/gnome-do/plugins-0.8.1.3/”, start Do, you should now have the 1.5 version of Remember The Milk in use.

3 comments:

Andrew said...

This looks great. I will have to revisit this plugin!

(I do work for RTM, but my approval is my own, to be clear. :)

Knorcedger said...

Just awesome! I received the latest update from do-core a couple of days ago, it rocks

Arthur Cruz said...

THANK YOU

I was getting crazy about not having a decent RTM application..
Tasque is not that good and obviously not as practical as this great plugin!

It`s amazing...

Congratz!

Post a Comment