Open standards for contact details and calendar events

vCard and iCal icons

Hello, I’d like to draw your collective attention to two challenges for open standards:

  1. exchange of calendar events
  2. exchange of contact information

The date of the next bank holiday is one of the top needs answered by GOV.UK. I like how this page clearly presents information to a human, but also makes the same information available in a machine-friendly form. A link to an iCalendar file on the page makes it easy for a user to add upcoming bank holidays to their calendar application on their laptop, phone, tablet or in the cloud.

That iCalendar file is fetched approximately 20,000 times each day. This may sound like a relatively small number given the bank holidays page is visited more than 800,000 time a day 900,000 per-month or 30,000 times a day and a calendar application will request the file periodically, but masks the real number of users with services such as Yahoo!, Google, Apple iCloud and Microsoft Live calendars fetching the file once on behalf of a potentially much larger number of subscribers. Either way I think we can safely say people like being able to add events to their calendar.

Similarly GOV.UK has many pages which contain contact information, such as the address of the British Embassy in Washington. Resources such as this page could also provide the postal address in a standard format such as vCard which would allow people to add it to their address book, especially as the address is already presented on the page using the hCard microformat.

It seems likely there may soon be better ways of identifying the address of a location, such as using a persistent resolvable identifier possibly discovered as a result of the Open Data Institute's Open Address Initiative. In the meantime we need a standard format for exchanging contact information which systems can easily present, consume and match so we can build services which are consistent, not uniform.

Whilst iCalendar and vCARD are supported by a number of different applications and are IETF standards (RFC 5545 and RFC 6350 respectively) before selecting these as open standards the board needs evidence of how wide a reach these formats have amongst applications, and experiences of issues or known limitations of using the formats and of other open standards in this area. This is where you can help by contributing your experiences. I’m particularly keen to hear about difficulties converting address information between records held in databases and government specifications for representing structured addresses to and from vCards.

Update: the deadline has been extended for both challenges which are now open for responses until the 5 August 2014.


  1. Comment by Andy Mabbett posted on

    It's gone 11pm on the 28th as I type; I'll try to find time to respond tomorrow, having only just been alerted to the two "challenges", on Twitter. But maybe, given the paucity of responses, the deadline should be extended?

    You might want to check the hCards on the Washington page, BTW - they're invalid.

  2. Comment by David Durant posted on

    I don't see an alternative to iCal and vCard but something to perhaps note is that different email clients (Outlook, Mac Mail, Gmail, etc) respond to attached .ics (iCalendar) files in different ways. Some show an in-app option to add the event to your calendar and some don't.

    See :

    There doesn't appear to be any standard for this yet. It's not a flaw in iCalendar but instead how it's use is interpreted by the various email implementations.

  3. Comment by Jeremy Keith posted on

    Paul, I'd like to suggest the successors to hCard and hCalendar: h-card and h-event. They're quite a bit easier to grok and have a straightforward name-spacing convention to their class names (p- for properties u- for URLs, dt- for dates):

    There are plenty of parsers out there (in many languages) that will convert h-card to vcard and h-event to iCalendar.

    For the bank holiday page you link to, it would be a matter of adding a class value of "h-event" to the existing div with a class of "highlighted-event" (so it would become "highlighted-event h-event"), adding a class of "p-name" to the span that says "Summer Bank Holiday" and using the time element (with a class of "dt-start") to the em with the string "25 August" (adding a datetime value of "2014-08-25").

    That's a hugely valuable page, by the way: I was getting confused about the Scottish holiday on August 4th and was planning on making a long weekend of it. Now I know better.


Leave a comment

We only ask for your email address so we know you're a real person