Factor/GSoC/2010/Support more calendars


Doug Coleman



Skills required

  • Willingness to learn Factor
  • Interest in calendars and world cultures
  • Generalizing existing code into a protocol

Existing work

Factor's current calendar library supports the Gregorian calendar and conversion between it and the Julian calendar.

Technical details

Not everyone in the world uses the Gregorian calendar for every facet of their life. In particular, support for Buddhist, Hebrew, Islamic, and Japanese calendars would be a good start in making the calendar library more useful. By implementing a generic calendar protocol, one could convert between the calendars and use dates in other formats than the Western-centric one Factor currently supports.

Calendar protocol

A calendar/localization protocol should support:

  • converting between days on different calendars
  • adding durations to calendar dates
  • localization, such as taking into account if Monday or Sunday is the first day of the week
  • formatting of various dates as expected by followers of the calendars
  • displaying the calendar in a format familiar to people who would use it

Additional features

The student can identify use cases for calendars and add code to cover these use cases. For instance, one major use of calendars is to remember holidays. There is currently a library that can calculate American holidays, but the student can figure out a way to generalize this to new calendars and holidays.

Benefit to the student

  • Learning about calendars
  • Implementing protocols and generalizing code in Factor

Benefit to the community

A well-written calendar library would make it easier to write applications based around calendars, such as daily planners, email clients, and web applications.



This revision created on Mon, 1 Mar 2010 08:42:00 by erg