I just came from a morning-long presentation on microformats, by André Luís and I must confess I was not very impressed at all. Not by André, who’s a great guy who obviously knows his stuff and managed to make a clear presentation and still fend off some hard questions.
I was less-than-impressed by the microformats idea itself.
For a while, I couldn’t quite put my finger on what was really wrong with microformats and then it hit me.
Microformats reminds me of the mid-90s when people started using tables to build layouts in HTML. We looked at boring block-based webpages and felt frustrated that we could not get the simplest two column layout out of HTML. And then, we noticed tables and how you could hide the borders and place stuff inside the cells thus creating all sorts of different page layouts.
That’s what we did for years on the web until, of course, CSS-based layouts became the norm. As it turned out, using tables to build layouts was just plain wrong, but it was the only way webdesigners and developers found, at the time, to do it.
It was a hack.
Years later, we’ll still fighting for people to leave that behind and build their content and presentation separately and to stop using tables for anything other than displaying tabular data.
Microformats seem to be doing exactly the same thing. Using pre-existing HTML elements and trying to give them some sort of other meaning in order to create semantic value for the content. It all seems very slapdash and confusing.
Now that everyone’s used to use classes to declare CSS properties, you can have certain kinds of special class names that mean something in a microformat context. But the values aren’t reserved, so you’re never quite sure.
You’re also never quite sure of what might happen later on, when someone decides to change property values or names around. I think that maybe, some time from now, people will be going around telling us not to use classes and links to try to define relationships and meaning in content.
On the other hand, I think there’s a huge barrier in what comes to user generated content. People just do not have the patience to tag their content silly with meaningful semantic markers. You have to build them specific, unobtrusive, backend tools to markup their content for them.
Like WYSIWYG editors write your HTML for you, you’d need something that would write microformats for the users, invisibly. But that’s almost impossible.
If you have the intelligence to ‘read’ what the user’s writing and automagically tag stuff, then you have that intelligente to build a crawler that can interpret human-written text and have no need for microformats in the first place.
While I can clearly see the need for something like microformats to exist to face that lack of intelligence, I don’t think the current implementation is simple or practical for anything other than coders playing code-masturbation.
Users, common, everyday users, don’t care. And in the end, that’s who we’re always working for.