VCards, ICalendar, Microformats, and RSS Rant
The user experience with VCard and ICalendar is completely broken.
In outlook, if you try and forward a contact to someone, you really have to know what you are doing. Trying to simply forward a contact results in an Microsoft Outlook contact being sent rather than a VCard. If the recipient is running Outlook, they can probably import the contact.
Two scenarios are likely though:
- The recipient doesn’t run Outlook. They get a contact they cannot use. The sender and recipient really don’t know whats wrong or the difference between a VCard and a contact. The sender and recipient both get annoyed at the recipients “nonstandard” software and the recipient thinks about switching to Outlook.
- The senders organization, and probably the recipients too, strip VCard attachments at their email gateway, so its impossible to communicate them.
If the sender and recipient are physically nearby and both have bluetooth devices, they might be able to transfer a VCard. Now we have another problem: The vcard sent and received probably don’t have the same information, and who knows what happens if the VCard is an update to the version the recipient already has (along with notes they have made about the sender already).
A similar thing happens with ICalendar although its a little more bizarre; if you want to forward an Outlook event invite as an attachment to recipients along with a note, the obvious thing to do is drag the event from your calendar to a message and send it or post in a public folder. The problem is, nobody can open the event and add it to their calendar. Instead, you have to open the calendar item yourself, and use the action menu to send an ICalender event — even within the same exchange server.
Trying to send the ICalendar to another email recipient typically results in the same attachment-stripping problem at an email gateway.
Information typically gets lost when you try and transfer a VCard. Put a photo in an Outlook VCard (if you can figure out how) and send it as a VCard to a recipient who can receive it. See if the photo is still there.
Suppose you have a skype address, a SIP URI or other VOIP contact info, a MSN Messenger ID, a google talk address, a pronunciation of your name and a map and directions to your office. How do you put those in a VCARD? Would they work?
The VCARD serialization seems overly complicated, especially in trying to embedd images or sounds in them. I think VCard needs both a do-over with modern serializations that work well in XML and a comittment from the main email program vendor Microsoft to make it work very well in Outlook (although I am not sure what commercial reason they would have to support it — most customers would probably never try VCard, and its almost-good-enough for their customers who do use it now).
One of the weirdest things I have seen lately is the HCard Microfomat version. I think its weird because it trys too hard to be a descripitve markup representation of VCARD, instead of a descriptive markup of what a VCARD should be.
The simple solution would be to use the descriptive markup of XML within HTML, sometimes people call this Crufty Tag Salad, though I fail to see the harm in adding descriptive markup into HTML that a browser user-agent can simply apply a CSS class or just ignore. (What! violating the W3 Standard on HTML! How dare I suggest that!).
So instead of embedding a simple description many people could understand into html like this one:
<telephone>
<type>home</type>
<number>+1.415.555.1212</number>
</telephone>
The Microformat version looks overly complicated, using a span/class tuple to represent a an element of descriptive markup:
<span class="tel">
<span class="type">home</span>
<span class="value">+1.415.555.1212</span>
</span>
Some of the Microformats seem to be constructed with what I feel are complicated isomorphisms for simple xml elements by using semantic tuples of span elements and class specifications. Mostly, the Microformats seem on the right track and I think they are a great idea.
The idea of embedding descriptive markup for purposes other than display formating into html is not new. For example, in 2003 I proposed using descriptive markup to embed information necessary for syndating content into HTML documents. The advantage of this is approach is that authors (using XML elements or the span/class isomorphism) don’t need a content management system, a programmer to write a program to syndicate their stuff, or a third party service to set up their web server and code a feed for them. We don’t really need RSS and Atom and HTML. CSS works nicely on XML embedded within HTML.
Technorati Tags: descriptive markup, HTML, CSS, rant, rss, css, atom, html, isomorphism, microformats
