icalendar-implementations: Difference between revisions
m (Reverted edits by VarroLbocc (Talk) to last version by Brian) |
m (→contributors: can't even remember my own username) |
||
(12 intermediate revisions by 6 users not shown) | |||
Line 4: | Line 4: | ||
In addition, please note any quirks or bugs with implementations' handling of iCalendar - we've already discovered some in the development of [[hcalendar|hCalendar]] and proxies like X2V. | In addition, please note any quirks or bugs with implementations' handling of iCalendar - we've already discovered some in the development of [[hcalendar|hCalendar]] and proxies like X2V. | ||
== libraries == | |||
=== libical === | |||
Open source C-based implementation of iCalendar. | |||
* [https://github.com/libical/libical Github] | |||
== Python iCalendar == | |||
Python implementation of iCalendar. | |||
* [https://pypi.python.org/pypi/icalendar/ PyPI] | |||
== services == | == services == | ||
Line 11: | Line 23: | ||
== products == | == products == | ||
=== Apple | === Apple Calendar.app === | ||
Apple | Apple Calendar.app, formerly known as iCal. | ||
* platform: OSX | * platform: OSX | ||
* handles "webcal:" URLs and supports subscribing to events. | * handles "webcal:" URLs and supports subscribing to events. | ||
==== Apple iCal 2.0.5 ==== | |||
Apple iCal.app 2.0.5 build 1069 (AppleiCal205) | |||
===== iCal 2.0.5 notes ===== | |||
* '''Requires dates and date-times without separators.''' Apple iCal 2.0.5 (and probably other versions) appears to require dates without "-" and times without ":" which appears to be consistent with the iCalendar spec due to: | |||
** iCalendar section 4.3.4 Date - "date-value = date-fullyear date-month date-mday" (no separators) | |||
** iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators) | |||
As a result Apple iCal 2.0.5 ignores date and date-time properties (e.g. DTSTART, DTEND, etc.) when date components (year, month, day) are separated by "-" or when time components (hours, minutes, seconds) are separated by ":" (both as allowed by [[ISO8601]] and required by [[RFC3339]]). | |||
However per [[accessibility]] research, dates and times with separators are more readable and accessible, and consequently explicitly allowed by hCalendar. | |||
Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date and date-time properties (e.g. DTSTART, DTEND, etc.) with separators, and remove separators when converting to iCalendar. | |||
* '''Requires date-times with seconds explicitly specified.''' Apple iCal 2.0.5 (and probably other versions) appears to require date-times with the seconds explicitly specified, which appears to be consistent with the iCalendar spec: | |||
** iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators) | |||
However in practice (see [[hcalendar-examples-in-wild]]) hCalendar date-time properties often omit the seconds because when they are "00" for simplicity and easier/quicker readability. | |||
Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date-time properties (e.g. DTSTART, DTEND, etc.) without the seconds explicitly specified, and imply "00" seconds when converting to iCalendar. | |||
* '''Requires floating or UTC date-times.''' Apple iCal 2.0.5 (and probably other versions) appears to require date-times which are either floating (no time zone) or explicitly specified to be UTC and ignores date-times which use timezone offsets, which appears to be consistent with the iCalendar spec: | |||
** iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators) and: <blockquote><p>The form of time with UTC offset MUST NOT be used. For example, the following is NOT VALID for a time value:</p><pre>230000-0800 ;Invalid time format</pre></blockquote> | |||
However, in practice (see [[hcalendar-examples-in-wild]]) hCalendar date-time properties often state the timezone offset in order to make the human visible time consistent with the machine readable time for easier verification (minimize DRY divergence probability). | |||
Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date-time properties (e.g. DTSTART, DTEND, etc.) with an explicit timezone offset, and convert the specified date-time value to a UTC value when converting to iCalendar. | |||
All hCalendar processor requirements above should be documented thoroughly in [[hcalendar-parsing]]. | |||
==== Apple Calendar.app 8.0 (2092.3) ==== | |||
Timezone handling: Calendar.app is incompatible with timezone-aware dates produced by the Python iCalendar implementation which puts quotation marks around TZIDs. See [https://gist.github.com/tommorris/0aca78d680804c04bf1e35318893a34a this gist] for details. | |||
=== KOrganizer === | === KOrganizer === | ||
Line 54: | Line 100: | ||
* UID and DTSTAMP is required for Outlook to import. [[User:GeoffWebb|GeoffWebb]] 14:03, 9 Dec 2005 (PST) | * UID and DTSTAMP is required for Outlook to import. [[User:GeoffWebb|GeoffWebb]] 14:03, 9 Dec 2005 (PST) | ||
===== Potential Security Related Issue w/ Outlook 2003 and Standard Account ===== | |||
I've been all over the web tracing the "Lunar" exception. | |||
I believe I'm come across another lunar permutation. | |||
I have an XP box running Outlook 2003 SP3 with Admin privileges, and I have an XP box running Outlook 2003 SP3 (same build number) running under a standard account. | |||
The .ics will try to import correctly under the Admin account (aka, it will prompt you for acceptance, everything working as expected). HOWEVER, the same .ics file will throw the "lunar" exception on the ~standard~ account. | |||
Here is my environment information just in case you're bumping your head on this issue. | |||
Outlook 2003 with SP3 Build Number : 11.8325.8329 | |||
.ics file contents (aka, "known to work" file contents under the Admin account) | |||
<pre>BEGIN:VCALENDAR | |||
VERSION:2.0 | |||
PRODID:www.testMeiCalendar.net | |||
METHOD:REQUEST | |||
BEGIN:VEVENT | |||
DTSTART:20101231T230000 | |||
DTEND:20110101T010000 | |||
SUMMARY:New Years Eve Reminder | |||
LOCATION:Downtown | |||
DESCRIPTION:Let's get together for New Years Eve | |||
UID:ABCD1234 | |||
SEQUENCE:0 | |||
DTSTAMP:20101125T112600 | |||
END:VEVENT | |||
END:VCALENDAR | |||
</pre> | |||
To be honest, I probably will just abandon trying to use it for this project because of this issue. | |||
But I wanted to report it, so someone doesn't waste a day thinking the issue is the contents of the .ics file. | |||
===== MSOutlook2k3 sample importable iCalendar ===== | ===== MSOutlook2k3 sample importable iCalendar ===== | ||
Line 76: | Line 156: | ||
END:VCALENDAR | END:VCALENDAR | ||
</pre> | </pre> | ||
=== Fantastical === | |||
* Platform: Mac and iOS | |||
* supports importing ICS files and subscribing using webcal (tested using Facebok URL) | |||
* Implemented using libical | |||
== notes == | == notes == | ||
Line 83: | Line 169: | ||
* Tantek Çelik | * Tantek Çelik | ||
* [[DimitriGlazkov|Dimitri Glazkov]] | * [[DimitriGlazkov|Dimitri Glazkov]] | ||
* [[User:TomMorris|Tom Morris]] | |||
== related pages == | == related pages == | ||
{{hcalendar-related-pages}} | {{hcalendar-related-pages}} |
Latest revision as of 18:54, 19 April 2016
iCalendar implementations
This is a list of calendar programs, applications and services that support the iCalendar RFC2445 standard.
In addition, please note any quirks or bugs with implementations' handling of iCalendar - we've already discovered some in the development of hCalendar and proxies like X2V.
libraries
libical
Open source C-based implementation of iCalendar.
Python iCalendar
Python implementation of iCalendar.
services
Google Calendar
- supports subscribing to "webcal:" and "http:" URLs to iCalendar
products
Apple Calendar.app
Apple Calendar.app, formerly known as iCal.
- platform: OSX
- handles "webcal:" URLs and supports subscribing to events.
Apple iCal 2.0.5
Apple iCal.app 2.0.5 build 1069 (AppleiCal205)
iCal 2.0.5 notes
- Requires dates and date-times without separators. Apple iCal 2.0.5 (and probably other versions) appears to require dates without "-" and times without ":" which appears to be consistent with the iCalendar spec due to:
- iCalendar section 4.3.4 Date - "date-value = date-fullyear date-month date-mday" (no separators)
- iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators)
As a result Apple iCal 2.0.5 ignores date and date-time properties (e.g. DTSTART, DTEND, etc.) when date components (year, month, day) are separated by "-" or when time components (hours, minutes, seconds) are separated by ":" (both as allowed by ISO8601 and required by RFC3339).
However per accessibility research, dates and times with separators are more readable and accessible, and consequently explicitly allowed by hCalendar.
Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date and date-time properties (e.g. DTSTART, DTEND, etc.) with separators, and remove separators when converting to iCalendar.
- Requires date-times with seconds explicitly specified. Apple iCal 2.0.5 (and probably other versions) appears to require date-times with the seconds explicitly specified, which appears to be consistent with the iCalendar spec:
- iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators)
However in practice (see hcalendar-examples-in-wild) hCalendar date-time properties often omit the seconds because when they are "00" for simplicity and easier/quicker readability.
Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date-time properties (e.g. DTSTART, DTEND, etc.) without the seconds explicitly specified, and imply "00" seconds when converting to iCalendar.
- Requires floating or UTC date-times. Apple iCal 2.0.5 (and probably other versions) appears to require date-times which are either floating (no time zone) or explicitly specified to be UTC and ignores date-times which use timezone offsets, which appears to be consistent with the iCalendar spec:
- iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators) and:
The form of time with UTC offset MUST NOT be used. For example, the following is NOT VALID for a time value:
230000-0800 ;Invalid time format
- iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators) and:
However, in practice (see hcalendar-examples-in-wild) hCalendar date-time properties often state the timezone offset in order to make the human visible time consistent with the machine readable time for easier verification (minimize DRY divergence probability).
Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date-time properties (e.g. DTSTART, DTEND, etc.) with an explicit timezone offset, and convert the specified date-time value to a UTC value when converting to iCalendar.
All hCalendar processor requirements above should be documented thoroughly in hcalendar-parsing.
Apple Calendar.app 8.0 (2092.3)
Timezone handling: Calendar.app is incompatible with timezone-aware dates produced by the Python iCalendar implementation which puts quotation marks around TZIDs. See this gist for details.
KOrganizer
- platforms: All Linux, *BSD, etc. (Wherever KDE runs)
- supports the "webcal:" protocol, as well as "http:", "ftp:", "fish:", etc.
Evolution
- platform: Fedora Core 3
- supports "webcal:" protocol
Sunbird
- platforms: Windows XP, others?
- supports "webcal:" protocol
Microsoft Outlook
Microsoft Outlook 2007
Microsoft Outlook 2007 (MSOutlook2k7)
- platforms: Windows
- supports importing and subscribing to .ics files, "webcal:" URLs, etc.
Microsoft Outlook 2003
Microsoft Outlook 2003 (MSOutlook2k3)
- platforms: Windows
- supports importing .ics files
MSOutlook2k3 general comments
For importing, MSOutlook2k3 apparently requires VEVENTS to have UID
, DTSTAMP
, and METHOD
properties. (citation/platform/date tested info needed). If any of the three is not present, returns this message:
This error can appear if you have attempted to save a recurring Lunar appointment in iCalendar format. To avoid this error, set the appointment option to Gregorian instead of Lunar.
After some testing, this seems to be the generic message to indicate a problem with event import.
No such restriction is placed on vCalendar 1.0 events. So, if VERSION:1.0
is output instead of VERSION:2.0
, the only required field is DTSTART
.
Note that VERSION
property may be omitted. In this case, value inferred as 1.0
.
- UID and DTSTAMP is required for Outlook to import. GeoffWebb 14:03, 9 Dec 2005 (PST)
Potential Security Related Issue w/ Outlook 2003 and Standard Account
I've been all over the web tracing the "Lunar" exception. I believe I'm come across another lunar permutation. I have an XP box running Outlook 2003 SP3 with Admin privileges, and I have an XP box running Outlook 2003 SP3 (same build number) running under a standard account. The .ics will try to import correctly under the Admin account (aka, it will prompt you for acceptance, everything working as expected). HOWEVER, the same .ics file will throw the "lunar" exception on the ~standard~ account.
Here is my environment information just in case you're bumping your head on this issue.
Outlook 2003 with SP3 Build Number : 11.8325.8329
.ics file contents (aka, "known to work" file contents under the Admin account)
BEGIN:VCALENDAR VERSION:2.0 PRODID:www.testMeiCalendar.net METHOD:REQUEST BEGIN:VEVENT DTSTART:20101231T230000 DTEND:20110101T010000 SUMMARY:New Years Eve Reminder LOCATION:Downtown DESCRIPTION:Let's get together for New Years Eve UID:ABCD1234 SEQUENCE:0 DTSTAMP:20101125T112600 END:VEVENT END:VCALENDAR
To be honest, I probably will just abandon trying to use it for this project because of this issue. But I wanted to report it, so someone doesn't waste a day thinking the issue is the contents of the .ics file.
MSOutlook2k3 sample importable iCalendar
BEGIN:VCALENDAR VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT UID:0 DTSTAMP:20060601T080000 DTSTART:20060601T080000 END:VEVENT END:VCALENDAR
MSOutlook2k3 sample importable vCalendar
BEGIN:VCALENDAR BEGIN:VEVENT DTSTART:20060601T080000 END:VEVENT END:VCALENDAR
Fantastical
- Platform: Mac and iOS
- supports importing ICS files and subscribing using webcal (tested using Facebok URL)
- Implemented using libical
notes
- the "webcal:" URL protocol scheme is non-standard.
contributors
- Tantek Çelik
- Dimitri Glazkov
- Tom Morris
- hCalendar - specification
- hCalendar intro - plain English introduction
- hCalendar authoring - learn how to add hCalendar markup to your existing events.
- hCalendar creator (hCalendar creator feedback) - create your own hCalendar events.
- hCalendar cheatsheet - hCalendar properties
- hCalendar examples in the wild - an on-going list of websites which use hCalendars.
- hCalendar implementations - websites or tools which either generate or parse hCalendars
- hCalendar FAQ - If you have any questions about hCalendar, check here.
- hCalendar parsing - normative details of how to parse hCalendar.
- hCalendar profile - the XMDP profile for hCalendar
- hCalendar singular properties - an explanation of the list of singular properties in hCalendar.
- hCalendar tests - a wiki page with actual embedded hCalendar events to try parsing.
- hCalendar "to do" - jobs to do
- hCalendar advocacy - encourage others to use hCalendar.
- iCalendar implementations
This specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added. These thoughts, issues, and questions are kept in separate pages.
- hCalendar Brainstorming - brainstorms and other explorations relating to hCalendar
- hCalendar issues - issues with the specification