Calendar application for GNOME

These are the guidelines in which GNOME Calendar developers base their work.

Check out the latest development version, find out features that you want. If you need or think it's usefull, fill bugs for these features. They will probably be listed here if it fits Calendar's scope.

Calendar team is reduced in size, but very efficient!


Level: easy to medium

A few calendars out there have a sidebar with a list of events, and a date navigator. If it's a good idea and brings real improvements to the workflow of our users, this widget is desired in Calendar.

Design Tasks:

  • Collect visuals and investigate how other calendars implement the sidebar
  • Design the elements and the behavior of Calendar's sidebar
  • (After implementation) Run A/B tests and measure how the sidebar improved or not users' workflow.

Dev Tasks:

  • Implement the sidebar
    • There's a rough prototype available in wip/gbsneto/sidebar branch.
  • Add the UI hooks to show/hide the sidebar

QA Tasks:

  • [ ] It is possible to navigate through dates using the sidebar
  • [ ] The sidebar can be toggled on and off
  • [ ] The sidebar visibility is persistent across reboots
  • [ ] No issues were introduced

Weather Forecast

Level: easy to medium

It would be useful to show weather information for the next 3 days.

Design Tasks:

  • (None)

Dev Tasks:

  • Add libgweather dependency
  • Use libgweather to gather forecast information
  • Show forecast information in Month and Week views

QA Tasks:

  • [ ] Weather forecast is displayed for the following 3 days in Month and Week view
  • [ ] No weather forecast is displayed when offline
  • [ ] No issues were introduced

Compress Non-Work Time in Week View

Level: medium

Non-work time (e.g. between 20pm and 7am) can be left out of the Week view, and reduce the vertical space required to show the Week grid.

When collapsed, these regions are displayed like a single cell, and events are grouped in there as such. Google Calendar has a good reference implementation of this feature.

Design Tasks:

  • (None)

Dev Tasks:

  • Add support to collapsable regions in Week grid
  • Add a GSettings key to store the user settings
  • Show forecast information in Month and Week views

QA Tasks:

  • [ ] Non-work times are treated as a single cell in the Week grid
  • [ ] The collapsed sections can be expanded by clicking on them
  • [ ] Work times are not affected by these changes
  • [ ] No issues were introduced

Timezone Selector

Level: medium to hard

GNOME Calendar can barely deal with timezones, but cannot modify nor display them. This may lead to confusion, and doesn't cover an important use case for calendaring apps.

Design Tasks:

  • Define where the timezone selector will stay.
  • Should we reuse the timezone editor from Evolution? Or design a new one?
  • How should it look like?
    • A map, and the user visually selects a place?
    • No UI at all, only allow the user to type a place?
    • Start and end times of an event can be different (e.g. when you're travelling across timezones, and your flight or train leaves at +0200 and stops at +0400)
    • It should also not clutter the interface

Dev Tasks:

  • Create a new class called *GcalTimeZone*, with utility APIs around it

  • Add the UI hooks to view and select the timezone of a given time

QA Tasks:

  • [ ] Timezones are now visible and editable
  • [ ] Editing a timezone works correctly
  • [ ] The timezones are persistent across reboots
  • [ ] No regressions are introduced

New Animations

Level: hard

The transitions between weeks, months and years in Calendar are plain static right now, and this is not good. The lack of transitions does not give the proper visual feedback and may confuse users.

Thanks to Christian Hergert, author of Builder, there is a new library called Dazzle with many animation utilities. I'm also reworking a few widgets to be more animation-friendly, but someone needs to actually sit down and add them.

Design Tasks:

  • Define which animations should be implemented. My proposal:
    • Week view: scroll horizontally
    • Month view: scroll vertically
    • Year view: scroll vertically
    • Newly-added event runs an "explosion" animation

Dev Tasks:

  • Import libdazzle in Calendar codebase
  • Refactor any code if necessary
  • Add the animations

QA Tasks:

  • [ ] New animations are triggered correctly
  • [ ] No visual glitches were introduced


These are features that will be included in any future releases.

  • Natural language parser (700673)

  • Day view
  • List view
  • Attachments support
  • Attendee support
  • Recurrent events
  • Different timezones for events (700669)

Development roadmap

This roadmap contains things that will improve Calendar's code, but won't have much - if any - effects for the final user. It is important so new contributors don't get scared by Calendar's code and run away.





Replace GdkColor

It is obsolete and should be replaced by GdkRGBA.



Replace libical by GDateTime family

Instead of using a non-GObject library, use GDateTime and get rid of this dependency.


Mostly Done


This will save some code, and will keep Calendar up-to-date with the latest GLib features.

Mostly Done

Unique GcalEvent instances

When creating a GcalEvent, we should have only one per UID.


Code cleanup & refactoring

Calendar has different code styles. That confuses newcomers and developers alike.


Apps/Calendar/Roadmap (last edited 2020-12-12 02:13:18 by JeffFortin)