The iCal Sync Interface or How to Implement a New Feature

We have just finished the user interface of our new iCal sync feature (or more precisely, support for Leopard’s system wide to-dos) and would like to share some screenshots. The screenshots are taken from a private development version. But before moving to the screenshots let us give you an idea of what it is like to implement a new feature.

Here is a list of steps we usually take when tackling a major new feature. We …

  1. Evaluate all related feature requests.
  2. Decide what will actually go into the new feature. This is a quite complicated step. We try to look at common usage scenarios. We also try to guess what the majority of users would need. Sometimes we postpone features because their implementation would take too long. An example is providing foldable pocket layouts for printing. We’d love to have it, but it didn’t feel right to make everyone wait longer than necessary before a fundamental feature like printing even shows up.
  3. Try to find a unified point of view if the results of step 2 are too varying or divergent.
  4. Try to think of ways how we could clearly communicate the ideas of 3.
  5. Create Photoshop mock-ups of the user interface.
  6. Start with the actual implementation of the interface and test it. If necessary, go back any number of steps and start all over again.
  7. Create the engine or logic that makes the feature work.
  8. Test-drive a functional implementation of the new feature for the first time. Go back any number of steps if necessary and start all over again.
  9. Extensive bug testing and fixing.
  10. Seed the new version and watch for related emails and forum posts. Fix bugs and make notes for future improvements.

With iCal sync we are now ready to move to step 7.

We had two requirements for iCal sync. On one hand, turning it on should be as simple as turning a switch. On the other hand, we wanted to take advantage of the existence of multiple calendars and make it flexible enough for usage with mobile devices and apps like Anxiety or Apple Mail. This requires that users are able to restrict syncing to different parts of Things like Focus lists, to-dos that have certain tags, Areas of Responsibility, or even projects. Obviously having both simplicity and flexibility seems contradictory. Here is how we are doing it.

When you select iCal in Things’ preferences for the first time you will see the simple variant of the dialog.

icalsyncdialog1.jpg

There you have it: the On/Off switch. Well, it is actually a menu and looks like this:

icalsyncdialog2.jpg

The most common requirement is to be able to export either all active to-dos (Next) or the currently pending items for today (Today), and to be able to import new to-dos created in other applications. When selecting either “Today” or “Next” from the sync menu this is exactly what you get.

icalsyncdialog3.jpg

If you need the full power of the underlying engine then choose “Custom” to transform the simple variant of the dialog into the advanced one:

icalsyncdialog4.jpg

The text fields offer auto completion and only accept valid input. It is possible to drag tags, projects, or areas to these fields.

We believe that the advanced variant of the dialog puts an amount of flexibility at your fingertips that compares rather favorably with the competition. However, there are still more feature requests related to iCal which didn’t make it into this version. But never worry, Things will continue to be improved at full speed well beyond the 1.0 release.

If you would like to comment, instead of sending us email, consider to use the comments section of this article or even better the forums. Your feedback will be much more valuable if your fellow users are able to read it too and respond to it.

39 Comments

  1. Ian Beck Apr 25, 2008

    Very cool implementation! I love how it scales, and the natural language describing the interface elements. One comment: you might consider using “Only items contained in one of” or “Only items contained in or or more of” (or something similar) instead of “Only items contained in either of” for the projects filter in the custom section. “Either” implies you have to have two.

  2. James Andrews Apr 25, 2008

    This looks extremely cool and is very well thought out. The custom stuff provides a great level of control, though I can imagine the possibility of the same to do being exported to multiple calendars if the user doesn’t guard against it. Looking forward to trying it out!!

  3. Jeff Thompson Apr 25, 2008

    Looks Fantastic!

  4. Copes Flavio Apr 25, 2008

    I’ve used this tool for 2 months now and I’d like to thank you all guys for this great work! This is one of the best (if not the best) GTD and productivity tool for Mac OS.

    This feature looks great, I’ve used something similar with iGTD but it was too buggy to be useful, so I never used it a lot!

    You make our life simpler, thanks!

  5. Florian Apr 25, 2008

    That is simply awesome!
    Hope to see this feature in a public version of Things soon.

  6. Jürgen Apr 25, 2008

    James, you certainly have a point here. But you might want to look at the fine print at the bottom of the “Custom” pane :).

  7. Miguel Apr 25, 2008

    Just my 2¬¢’s. It would be interesting to have project and selected tags included in the exported task title. Except for that I find the features are the most logical way to implement this, in other words, that’s the way I would have done it.

    On the other hand, I was going thru my weekly review and a thought popped up. What about showing logged tasks as they were disposed in the today view, for each day. It would be nice to be able to have an overall view of what has been achieved each day separately.

    Anyway, good work boys.

  8. Joachim K. Rennstich Apr 25, 2008

    You guys never stop to amaze me. This is really clever and VERY well thought through. I just hope that step 8 and 9 go well, because the iCal engine has many traps. You would really stand out from the crowd if you can get this to work. What is an amazing app keeps getting better and better.

  9. David Wynn Apr 25, 2008

    I’d like to echo the resounding hoorays expressed here. You guys kick butt as developers, and thanks to you Things is a simple, intuitive, yet functional piece of software while continuing to get even better.

    May the engine not sputter once you turn the key.

  10. ZZamboni Apr 25, 2008

    This looks fantastic. iCal syncing is my top wish at the moment, I am really looking forward to trying it out.

  11. Hendrik Apr 25, 2008

    Great to see how much thought you put into the UI design. This looks good.
    One suggestion though: “Nothing” would fit better with the other drop down options than “off”. And it also would make it more obvious what the other options refer to. When I first looked at the options I was confused and assumed they referred to the time of syncing.

  12. James Andrews Apr 25, 2008

    Jürgen – Glad to see you guys had thought of everything! ;)

  13. John C Apr 26, 2008

    I love Things and use it constantly. Of course when Things syncs with iCal it syncs with the system wide todo implementation in Leopard as well. Thus you could have and manage your todo list from a widget or add fields to the item in Bento, for example.

  14. Todd Sieling Apr 26, 2008

    Nice work. You did a great job of covering many possible scenarios.

  15. Simon Clayson Apr 26, 2008

    This looks very impressive, I hope it comes together quickly!

  16. Andreas Apr 26, 2008

    Will the isync only work for Leopard, or does it work with Tigers ical as well?

  17. Abi Apr 26, 2008

    Great work guys. It looks really useful and nice. Any indication as to when this is coming out as an update?

  18. motech Apr 26, 2008

    really looks great,
    but what i am more excited for is multi user things.
    or sync between multiple mac/users . .

    this app is amazing . .
    i use it for bill reminders, and issue tickets tracking per project
    (clients of mine get project folders and in the project we either have outstanding items that need to get done to finish the project, or new issues that have to be resolved at the client, and if they are billable hours or not)

    its really great i just wish i could sync with the rest of my team…

    andddd

    then iphone support!
    but im sure that ll come in june

    thanks again guys,
    always looking forward to blog , twitter ,and app updates !

  19. [...] I’ve been extremely impressed with the early versions of Things. I’m starting to get very excited about their iCal sync feature. [...]

  20. ariquitaun Apr 26, 2008

    looks GREAT, but I wonder what will happen with scheduled events. What I’d like to see implemented is:

    - if I add a scheduled (or recurring) event in Things, the event(s) should appear in the apropriate date(s) in iCal.

    - if I add one of those to iCal, or edit one of the existent events, the events should be added, or edited if that’s the case, in Things.

    This way, I wont pay attention to the program I’m using at the moment to manage the events (iCal or Things), my focus would be in the events themselves. Which I think is the point here.

    I hope I’ve explained it reasonably well, anyway thanks for this great program!

  21. John Apr 27, 2008

    This feature implementation has compelled me to buy this program. I can’t wait to see the final release!

  22. Ryan Apr 28, 2008

    Guys…amazing. This is my number one request. Can’t wait to try it out. Very well thought out, intuitive and clean. Thanks for the work and focus you’re putting into this. Thanks Jürgen + Team.

  23. Carsten Apr 28, 2008

    Great, especially that it’s a true 2-way-sync. No more voicememos on the run!
    Und dann fehlt nur noch die deutsche Lokalisierung :-)
    Thanks, I think I don’t need OmniFocus or Remember the milk anymore

  24. Jürgen Apr 29, 2008

    @Miguel: Yes we plan to add project names and tags to the exported task’s title.

    @Ian, @Hendrik: Thanks for your suggestions, very much appreciated.

    @Andreas: At the moment we are only adding support for Leopard’s system wide to-do service. System wide to-dos provide a much better experience since changes in one app are immediately visible in other participating apps as well. With Tiger sync you have to manually sync to be sure that changes are propagated to other apps. Unfortunately, Mac OS only supports using either Tiger’s slower sync or the instant Leopard system wide to-dos. To support Tiger as well we need to write another completely different Tiger only sync engine. We hope to be able to do this at a later time. No promises though.

    @Abi: Giving a time frame is difficult. I’d say it should not take longer than 2 weeks. But on the other hand, considering the disappointment that has been expressed here and elsewhere about competing app’s implementation, I’d say it is wise to not rush it but to focus on reliability instead.

    @motech: Being able to sync with team members is really important for us as well. But it is no small order. I expect such functionality to be added in a 1.x update. We announced iPhone support on Things’ product page.

    @ariquitaun: Just to clarify, we are syncing with to-dos in iCal not events. Templates for scheduled to-dos or repeating to-dos are not synced. But of course if a scheduled to-do becomes active and is moved to the Today list (you can customize this in Preferences) then it will show up in iCal as well. The same is true for to-dos generated by repeating task templates.

    @Carsten: Die deutsche Lokalisierung kommt mit 1.0 oder kurz danach.

    @everybody: Thanks for your wonderful support!

  25. Patrick Apr 29, 2008

    Congrats on a very cool development ! I am a pretty GTD follower and i have searched for a MAC software (i have recently switched form windows) that can handle my task management and Things seems on the top of my list but the upcoming sync functionality and export possibly into a PDA or iphone/touch will be essential.

    hence, i’d like to understand one thing reg the above illustrations a bit more. i work with a lot of context folders and people “agendas” today and from what i see above the “custom” menu will be for me but can you please clarify that it will not only be for one calendar each time? i hope i’m miss reading the screen shots but i think this is quite essential that potentially all calendar’s could be synched together once set up with what “tag”/folder flow should take place.
    thanks and good luck with the exam !

  26. Jürgen Apr 29, 2008

    Sure Patrick, every iCal calendar can have its own settings. For example, you could have one calendar sync with the entire Today list, another one with all Next items having an “Errand” tag, and another one with an Area of Responsibility. If an item matches the criteria of different calendars, it is only synced with the topmost in the list. The list can be reordered.

  27. Antoine Apr 29, 2008

    Hi, that’s look great… Can’t wait to test it.

  28. Will Croft Apr 29, 2008

    This looks absolutely super!

    Just to clear something up – will you be supporting .Mac sync for the Things library across multiple computers?

    I’m not sure if you’ve said that will be included or if I’m getting the .Mac sync and iCal sync features confused ;)

    Cheers!

  29. Jürgen Apr 30, 2008

    iCal sync and .Mac sync are indeed two completely different things. .Mac sync is very important to us. However, considering that writing an iPhone version of Things also takes up some resources, we might only be able to add .Mac sync in a 1.x update.

  30. Papa-Raboon Apr 30, 2008

    Jurgen, you and your team rock dude. I am so loving Things and it seems to be de-stressing my life a little which is good. I can’t wait to buy the full version.

    I am a registered Xyle Scope user too and use it regularly.

    One thing I wanted to mention with things that I would love to see is the ability to set schedules with a time as well as a date. I know a person shouldn’t be too rigid when scheduling their time but sometimes they might have a meeting to go to or a call to make at a certain time and just being able to set a date and a reminder on another date can be a bit restricting. Do you plan to implement the schedule system to work to an actual date and time rather than just date?

    :-)

  31. [...] by apps like iCal and Google Calendar. Things also falls down in this department, but not for long: iCal integration is coming soon, and it looks very comprehensive. And that’s not all there is to get excited about: Scroll [...]

  32. Taco May 02, 2008

    Gorgeous! Can’t wait to give it a try.

  33. Marlyse Comte May 03, 2008

    Awesome and it takes everything into account which are reasons why I stopped syncing other GTD applications to iCal. This approach finally will make syncing with iCal again useful.

  34. Frank May 04, 2008

    Hi, I’d like to suggest that you add the name of each iCal calendar as a Tag to the imported tasks. Also I’d like to second the need to add the project name to an exported task title – the concrete syntax should be configurable by the user.

  35. Dominique May 05, 2008

    I am also waiting to try iCal synching since I have used iGTD until I switched to leopard. Will there be the ability to define finely which tasks will synch so that only what’s needed in iCal can be exported and synched?

    Also is there a plan to introduce the Context notion for each Task (such as At my Mac, Errands, Phone etc) which are closely related to the GTD method, and (some time) useful?

  36. Johannes May 06, 2008

    I am waiting for a .mac-Sync functionality because I use two Macs. When are you going to implement this feature?

  37. ManfredF May 06, 2008

    How to decide what’s important? Well it seams to be so easy. Do you want to know more about prioritization? If so, I like to re-comment to read “The Magic Funnel” (http://blog.objectmentor.com/articles/2008/04/09/the-magic-funnel)

    You guys are great. I can really sense a team creating a high quality product software and having fun at the same time.

    take care
    Manfred

  38. blepe May 07, 2008

    Für eine deutsche (oder auch andere) Übersetzung lassen sich bestimmt Leute in der Community finden, welche da gerne unterstützend unter die Arme greifen würden… *hiermit anbiet*

  39. Bonobo May 07, 2008

    Guys, it’s high time for an update on your progress… the last ‘daily’ tweet is already 11 days old…

    By the way: Viel Erfolg bei deinen Pruefungen, Werner!