Daniel’s developer notes: How to present infinite recurring event series?

Sunbird and Lightning both have a feature called the “unifinder”. It’s the box at the top if you click the toolbar “Find Events”. Next to the search text field you can select different time ranges to be scanned matching your search (or just present all matching the range if you leave it blank). The drop down box offers several time ranges, such as “All Events”, “Today’s Events”, “Next 7 Days”, …

While the ranges look sensible, they cause me some headache, more specifically the unbounded ranges “All Events” and “All Future Events” w.r.t. infinite recurring events. If you select one of the unbounded ranges (e.g. “All Events”), the current implementation will only show the master items of recurring events, because there’s no finite range to expand into. It shows the events in their condensed (unexpanded) form. While this approach misaligns the UI a bit (the other filters show recurring events in expanded form), it looks like a feasible way at first glance (modulo bugs around it). But there’s yet a further problem with this approach: You could override´single occurrences of a recurring series, e.g. modify the start and end of an occurrence. Those are currently left out.

The latter and the inconsistent UI let me doubt that showing event series in condensed form is really what we want here, moreover because IMO showing expanded occurrences is far more intuitive. Solving the problem, I can imagine two solutions:

  • We simply drop the unbounded ranges (no “All Events”, no “All Future Events”).
  • We dynamically expand the list as the user is scrolling it down, if this feels good.

For the moment, until we have a good solution, I’d vote to remove the unbounded ranges.

I hope there are more options that we could consider, and would like to hear your feedback on this topic…


  1. How about replacing ‘All Future Events’ with ‘Events in the next Year’ and ‘All Events’ with ‘Events this year and last year’?

  2. Instead of removing unbounded ranges (I use the “future events” a lot, so I may not be objective…), maybe just an option like “For recurring events, show the next 5|10|20|50 events” ? And maybe an other one for past events (in the spirit of the multiweek view option) ?
    I mean, what’s the point having more than a hundred events in the unifinder ?? or in an other way of asking questions, who really looks across a hundred events to find what they want ?? Maybe it’s a bad guess (or maybe i misuse it…), but I think the unifinder is not useful when it’s full of crap…
    So, IMO, a first try would be to define an arbitrary higher limit and let people decide how many events they’d like to see.

  3. Maybe change “All future Events” to “All future Non Recurring Events” and likewise “All Events” to “All Non Recurring Events”. That is easy. I would even vote on changing “All Events” to “All Past Events”.
    Then, maybe have a “Show Recurring Events” as a separate category? You could put a bound on this or show a single entry with the repeat interval (which may be hard if there are exceptions to the interval).
    I don’t know how everyone else uses this, but my recurring events are things like changing backup tapes, monthly reports etc. I don’t really want them cluttering up the other list, but it would be nice to be able enumerate them in concise way.

  4. Benjamin Kraus

    I agree with _Tof_… an option to select how many instances of a recurring event/task to show makes the most sense to me (it can be part of the UI next to the drop-down menu, or stored away in the preferences menu).
    I suppose another possibility would be to let the user decide whether to show “one master event/task” or “x future/past events/tasks”.
    I’d also like to point out that this issue also effects how recurring tasks are shown on the task list, as per bug 350174 [1].
    [1] https://bugzilla.mozilla.org/show_bug.cgi?id=350174

  5. Sorry, but I disagree with the suggestion to show the next n occurences. First, it sounds like “we hit a hard problem and don’t know how to fix. Let’s make it the users problem!”
    Second, the number of occurences I want to see depend on the item. For example, I don’t want to see the next 10 birthdays of everybody. But I do want to see the next 10 weekly meetings. The limit is more time-bound than number-bound.
    So my suggestion would be to show the next year. But unbound items should not be hidden. Thus, for each unbound item, a (visually different) line should be added, saying that there is more of this item.

  6. Hi all,
    Why not show only the master items, but with a plus sign (+) on recurring events? That way, one could expand only the recurring events they want, and only if one wants to.
    IMHO, this would yield a cleaner overview while allowing user to edit single occurrences of a recurring event.
    In the case of infinite recurrencies, Calendar could show just what fits and allow scrolling.
    Note: this seems easy to use in my mind. But I’m not a programmer, so if this is a PITA to implement pls just forgive me… ;P
    Keep up!

  7. Ricardo Palomares

    Just another option, similar to the _Tof_ suggests: for “All Future Events” show just the _next_ occurrence of the recurring event, with some kind of UI sign that denotes the event is recurring. For “All Events”, show the master or first occurrence.
    Even with Michael’s example about 10 next birthdays vs. 10 weekly meetings, the list may get too long, so I would just show one occurrence.

  8. My workarounds:
    1.All infinite repeating events are on a separate calendar. I uncheck the calendar but leave “show alarms” checked. Unifinder is thus uncluttered. I turn the calendar “on” only if I need to edit something.
    2.Use ReminderFox for repeating tasks.
    IMHO the developers, bless them all, could spend their limited time on more pressing bugs & RFE’s.

  9. I like the transparent filling-in-while-scrolling option the most so far, but I have another suggestion that might be easier to implement and faster:
    My suggestion would be to fill in all recurring events as far as there are non-recurring events in the calendars. I’m sympathetic to the backup argument, but some recurring items are very important to know about and see every instance for when planning/viewing upcoming events.
    After this point, there should be one final entry for each recurring event, with a link that says “Show more instances” that does exactly that (maybe another five at a time and then another link to repeat).
    This way, all recurring and non-recurring events are interspersed (no events are missed), and the user can trivially extend the recurring events out as far as desired.
    I don’t anything about your software implementation, but it seems (1) finite/tractable and (2) very intuitive from a user standpoint.
    Thanks for your consideration.

  10. It would be good to put infinite recurring events in a second column, or frame, beside the actual one.
    So we could keep track of all of them in a single view.

  11. Why not just showing the (infinite) recurring event closest to the actual date with a “next” and “last” button and a slightly different design in the event list (maybe with an option to “show x events”)?
    Best solution for that would be an entry design within the same space as a non recurring event in the list.

  12. What about a combination of Tof’s and Michael’s suggestions. ‘Show Limited Future Events’ and in the preferences you set a range on that limit eg 1 year(s)/month. This leaves it flexible for people who use sunbird for large or small timespans.

  13. I’m with Michiel on this one. Show the next year (next 365 days), but don’t hide unbound items. Instead add a (visually different) line for each unbound item, saying that there is more of this item.

  14. I am in favor of removing the unbound ranges, and add “Show Next Year”, too, showing recurring items in expanded form, also because sorting by data is confusing otherwise. Timely ranges make more sense from a user’s POV IMHO, instead of having a number of occurrences; people think timely when using a calendar…
    Moreover I think it makes sense to couple the minimonth on the left to the unifinder, e.g. make the selected date the start of the unifinder range. That way, users could step back in time and search their items using the unifinder.
    I didn’t get mvl’s post about hiding unbound items: If we show items in expanded form, then nothing is hidden. The items occur properly sorted in the list as they do in the calendar grid (i.e. expanded, side by side with overridden instances and non-recurring ones).

  15. ‘All Future events’ should at least show the next occurrence of repeating events, preferably with a marker to show it repeats.
    It would be good to have a custom option to select the Next/Previous n days/weeks/months/years/events/occurrences from today/selected date. That should satisfy everyone’s needs and could even be fitted onto the bar, replacing the current drop-down list.

  16. Why don’t you show all the ocurrences before the last non recurring event, and only one ocurrence with a (+) after the last non recurring event?
    – Event 1 , Day 1
    – Repetitive Event A , Day 3
    – Event 2 , Day 5
    – Repetitive Event A , Day 10
    – Repetitive Event A , Day 17
    – Event 3 , Day 21
    – Repetitive Event A(+) , Day 24 and …

  17. daniel: with ‘hiding unbound events’ I mean this: for unbound events, it’s impossible to show all occurences. But if the user selected ‘all events’, you are basically hiding some occurences from the user. He doesn’t see them, while they do exist.
    Oh, and thanks Daniel, for putting this up. It’s exactly what I was talking about :)
    I though about the idea to show all occurences until the last non-unbound one, but that has a problem: if you accidentally add an item way into the future, the unifinder now has to show tons of events, and might slow down quite a bit. If some remote calendar adds that item, there isn’t much you can do. Basically some mild form of DOS. So, I don’t think it’s the way to go.

  18. 1) Please consider that we should be able to find any event with the Unifinder IMO, even if it only recurs every four years.
    Thus, in addition to an option to show the “Next/Previous 12 Months”, somehow we should be able to SEARCH all events even if we can’t SHOW all events.
    Maybe there could be a special entry in the drop-down list for this (e.g. “Search All Events”) that isn’t based on dates and doesn’t show any results until you type the search string.
    For a recurring event, it could show the parent item and all exceptions, but only if they match the search string. You could visually group the exceptions under the parent.
    2) Not directly related, the problem with using this blog is that people’s comments aren’t part of the RSS feed. Because of this, I would prefer that these discussions happened in the newsgroups.

  19. Onlinedispatcher

    Let us look at solutions of other companies, like in Palm Desktop:
    There, only the first (the master) occurence is shown. However, if you change one single occurence, then the master item is shown and the changed item is shown.
    I would suggest a solution as “Ricardo Palomares” and “Zackbuffo” stated:
    – Only show the occurence closest to the actual date
    – with an UI sign to signal recurrence

  20. Please don’t get rid of “All Events”! I use it all of the time. If a customer contact me and says that I performed for them a couple of years ago, I can have them on screen as soon as I know their name. I can’t think of any other way to do this.
    I’ve never had any problem with the way it works at the moment. Please don’t just remove the feature because it would be a bit neater or something. Usability is everything surely.

  21. Please don’t get rid of “All Events”! I use it all of the time. If a customer contact me and says that I performed for them a couple of years ago, I can have them on screen as soon as I know their name. I can’t think of any other way to do this.
    I’ve never had any problem with the way it works at the moment. Please don’t just remove the feature because it would be a bit neater or something. Usability is everything surely.

  22. I’d like to commend the comments by Will and Juan Rey (info below) – their suggestions handle a mix of non-recurring, quick-recurring and slow-recurring tasks clearly.
    I suggest also adding a “show more” button, or similar, to allow easier looking at dates future. I think it would not need to persist any state.
    Posted by: Will | August 5, 2008 5:37 PM
    Posted by: Juan Rey | August 6, 2008 12:46 PM

  23. Simply a combination of all of them:
    1) give more options:
    -All events (past and future)
    -All events (future)
    2) Limit user defined
    – e.g. ten events etc.
    3) Or just give another drop down menu, if you use “all events”
    -past / future
    -year (plus input field)