IBM has a big article up today about working with Microformats. I know this is one of those “buzz heavy” items on the interwebs 2.0 these says. Ray Ozzie gives it a lot of play with the new Live Clipboard stuff coming out of MS — which I admit is a hella cool idea. Pat thinks they are really cool, and Calvin has grown Tails into a whole big deal now.

The problem is, however, they are stupid. They are a hack to get around a problem that is going away VERY shortly.

Take the IBM example:

   <div class="vevent">
      <a class="url" href="http://myevent.com">
        <abbr class="dtstart" title="20060501">May 1</abbr> -
        <abbr class="dtend" title="20060502">02, 2006</abbr>

        <span class="summary">My Conference opening</span> - at
        <span class="location">Hollywood, CA</span>
      </a>
      <div class="description">The opening days of the conference</div>

    </div>

Yay, you have an iCal microformat in your page. You can use Trails, now to stick it right into your Google calendar. Neat.

The problem is, this is a serious abuse of HTML. The way you SHOULD have done this is:

<html:div xmlns="http://www.w3.org/2002/12/cal/">
   <vevent>
   <dtstart>20060501</dtstart><html:abbr>May 1</html:abbr>
...

Then present your iCal entry with CSS. Yes, we have waited years and years and years for Microsoft to get off their rears and implement CSS with namespaces, which everyone else has had for years. However, IE7 is around the proverbial corner, and we should finally get the option to embed actual real data into our HTML pages and style it. There is no reason to use semantically incorrect HTML and beat up on the class attribute.

And rather than create a whole new class of software for dealing with this hack — though ROME is going to add Microformat support with the 2.0 version — just use a regular parser and get the actual XML you want right out of the document. Moreover we can get rid of the other stupid hacks we use right now, like putting RDF inside comments for machine readable metadata, or adding tag attributes that don’t conform to the list of acceptable values to the spec.

Please, lets not continue to kludge our way on top of a web that is arcane at this point. It is an XML world. Live in it.