mf-white

microformats.org wird 7… Alles Gute!

Zur Feier des Tages hat sich Frances Berriman die Mühe gemacht, die letzten 7 Jahre zusammen zu fassen und einen Ausblick auf die kommenden Änderungen zu geben.

Da ich, seit ich bloggen kann, schon über Microformats berichte, will ich den Rückblick nicht weiter kommentieren und nur auf die kommende Weiterentwicklung ein wenig eingehen.

Microformats und HTML5

Seit dem ich das letzte mal über diese Kombination geschrieben habe, hat sich leider nicht viel geändert… Die Microformats Community weigert sich weiterhin auf Microdata oder RDFa „upzugraden“ und hält krampfhaft an den semantischen classes fest. Nichtsdestotrotz macht HTML5 mit <time /> und <data /> dem leidigen Thema abbr-design-pattern bzw. value-class-pattern ein Ende. Statt Meta-Informationen umständlich in HTML-Attributen zu verwurschteln, können Termine und GEO Daten bald sauber dargestellt werden:

<time class="dtstart" datetime="2006-09-23">a Saturday</time>
...
<data class="geo" value="37.386013;-122.082932" >Mountain View</data>Code-Sprache: HTML, XML (xml)

Immerhin! Mehr dazu im microformats-wiki.

Namespaces

Die wohl größten Veränderungen sind aber die geplanten Pseudo-Namespaces welche hauptsächlich das Parsen von Microformats vereinfachen sollen. Microformats waren bisher sehr fehleranfällig, da sie sich die class-Attribute mit CSS und JavaScript zu teilen hatten. Es besteht immer die Gefahr dass rein für CSS genutzte Attribute fälschlicherweise für Microformats genutzt wurden oder dass die semantischen Class-Names einem Re-Design zum Opfer fielen. Die Prefixes ‚h-‚, ‚p-‚, ‚u-‚, ‚dt-‚ und ‚e-‚ sollen das Zukünftig verhindern und ein generisches parsen ermöglichen.

'h-' kennzeichnet einen Microformats-Container

Bisher ist die Microformats Community etwas inkonsequent mit der Benennung ihrer Formate… Mal mit beginnendem „v“, mal mit „h“ und in seltenen Fällen auch ohne oder mit anderem Buchstaben:

  • hCard: class="vcard"
  • hAtom: class="hfeed"
  • adr: class="adr"
  • xFolk: class="xfolkentry"
  • XOXO: class="xoxo"

Mit den Prefixes soll das jetzt alles vereinheitlicht werden:

  • hCard: class="h-card"
  • hAtom: class="h-feed"
  • adr: class="h-adr"

'p-' zeichnet Properties aus

Die mit ‚p-‚ gekennzeichnet Properties sollten, wenn nicht expliziert definiert, als Plain-Text interpretiert werden (kein HTML). Ein klassisches Property ist beispielsweise der Name einer Person:

<div class="h-card">
 <span class="p-fn">Tantek Çelik</span>
</div>Code-Sprache: HTML, XML (xml)

'e-' zeichnet Rich Text aus

Das ‚e-‚ Prefix könnte als Abkürzung für „element tree“, „embedded markup“, oder „encapsulated markup“ stehen und kann im Gegansatz zu den Properties auch HTML-Code beinhalten. In hAtom könnte der entry-content zu e-entry-content und bei der hReview die description zur e-description werden.

'dt-' für DateTime und 'u-' für URL

Aus dtstart wird dt-start und alle URL-Felder bekommen ein vorgestelltes ‚u-‚:

<a class="u-url" href="...">...</a>

<img class="u-photo" src="..." />Code-Sprache: HTML, XML (xml)

Die URL kann in bestimmten Situtionen auch weg fallen, dazu aber im nächsten Beispiel mehr…

Simpel und unabhängig vom Format

Zukünftig soll es auch nicht mehr so umständlich sein Informationen semantisch auszuzeichnen. Will man derzeit einen simplen Link mit einer hCard versehen, muss man ihn wie folgt aufblähen:

<div class="vcard">
 <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
</div>Code-Sprache: HTML, XML (xml)

Nach der Überarbeitung soll folgendes reichen:

<a class="h-card" href="http://tantek.com/">Tantek Çelik</a>Code-Sprache: HTML, XML (xml)

Dabei gilt die Regel: Wenn es sich bei (z.B.) einer vCard um einen Link oder ein Bild handelt, kann man auf ‚u-*‚ und ‚p-name‚ verzichten… so ungefär zumindest 😉

Mehr dazu im Microformats-Wiki: implied properties

Außerdem kommt mit v2 eine Anleitung wie Microformats auf andere Formate wie JSON gemappt werden sollen. Aus…

<a class="h-card" href="http://benward.me">Ben Ward</a>Code-Sprache: HTML, XML (xml)

wird…

[{
  "type": ["h-card"],
  "properties": {
    "name": ["Frances Berriman"] 
  }
}]Code-Sprache: JSON / JSON mit Kommentaren (json)

Fazit

Ich bin mir noch nicht ganz sicher was ich von den geplanten Änderungen halten soll… die Nutzung der neuen HTML5 Tags und die Vereinfachung und Vereinheitlichung der Formate finde ich gut und notwendig… Auch eine einheitliche Regel, wie Microformats in anderen Formaten abgebildet werden sollen (z.B. JSON) macht durchaus Sinn (warum das Sinn macht, hier)… aber den Pseudo-Namespaces kann ich bisher nichts abgewinnen! Der „Namespace“ sorgt zwar für mehr Qualität beim Parsen der Microformats, aber auf Kosten des semantischen HTMLs.

Microformats sollten weiterhin für schönes, semantisches HTML sorgen und mehr nicht. Geht es um maschinenlesbaren Code, sollte man mit der Zeit gehen und auf Microdata oder RDFa setzen. Ob man seinen Quelltext an Microformats v2 anpasst oder mit Schema.org auszeichnet sollte kaum mehr Aufwand sein.

…Übrigens: Wer noch mehr über die Vorteile von Microdata gegenüber Microformats lesen will, sollte sich die Ausgabe 10 des Webstandards-Magazin durchlesen oder die Reihe „Microdata – wie Microformats bloß besser…“ hier im Blog!

11 Kommentare zu “Microformats: The next generation

  1. Wie aus „Ben Ward“ im HTML „Frances Berriman“ im JSON wird kann ich zwar nicht nachvollziehen 😉 aber ansonsten finde ich die Neuerungen ganz praktisch. Die Namespaces finde ich zwar auch unschön aber wichtig um interoperablen Code zu haben. Problematisch ist, dass der Prefix den Inhaltstyp beschreibt, ich hätte mir da etwas nachvollziehbareres gewünscht, da das nicht immer aus dem Inhalt zu erschließen ist. (Wo darf man nur plain text, wo rich text, benutzen?)

    • Wie aus „Ben Ward“ im HTML „Frances Berriman“ im JSON wird kann ich zwar nicht nachvollziehen 😉

      Das ist die Magie der Microformats 🙂

      Zu den Prefixes: Für Parser sind die Prefixes sicher ein Segen (interpretier alles was mit ‚*-‚ beginnt) aber wie du schon sagst sollten sie wirklich nicht vom Typ abhängig sein. Manche Prefixes wie ‚dt-‚ oder ‚u-‚ sind überflüssig, da sie schon über die HTML-Tags (‚<time />‚ oder ‚<a />‚) definiert sind und bei ‚p-‚ oder ‚e-‚ ist es schwer einen Unterschied zu definieren.

      Eigentlich hätten zwei Prefixes ausgereicht: ‚h-‚ für den Container und ‚p-‚ für die Properties (bei Microdata itemscope und itemprop).

      Aber auch mit der Variante gibt man, meiner Meinung nach, den semantischen Code zu Gunsten einer besseren Maschinenlesbarkeit auf, die immer noch höchst fehleranfällig ist.

  2. Zweierlei:

    1. html und css teilen sich die class Namen? Na und? Wenn man konsequent vorgeht und im html nur semantische Bezeichner verwendet (keinerlei Präsentations-Auszeichnungen im html, also auch keine Präsentations-orientierten class Namen), dann bedeutet das weder für die Semantik noch für die Klassen einen Verlust oder eine Einschränkung. Und verwenden kann man diese Klassen im css immer noch, ebenfalls ohne Einschränkung. Es ist einfach eine Frage der Konsequenz.

    2. Das mit den Namespaces ist interessant. Aber dafür *- zu verwenden finde ich nicht gut. Wie Namespace Prefixes auszusehen haben, dafür gibt es Spezifikationen beim w3c. Ansonsten fügen Namespaces zwar Aufwand hinzu, aber es lohnt sich. Der Gewinn an Flexibilität und Eindeutigkeit gleicht den Mehraufwand mehr als aus.

    • Im Punkt „1.“ sind wir einer Meinung! Ich schätze Microformats sehr, da sie für schönes und beschreibendes HTML sorgen. Worauf ich hinaus wollte ist, dass Microformats immer noch ein Nischenprodukt sind und eine relativ kleine Entwicklergemeinde von deren Existenz weiß, was dazu führt dass Microformats immer wieder durch Re-Designs zerstört werden, weil classes im Zuge von CSS Änderungen umbenannt werden oder neu JS-Funktionalität hinzu kommt. Es ist meiner Meinung nach einfacher jemandem zu erklären die itemprop oder property Attribute stehen zu lassen, als ihm zu erklären dass die Klassen die er für sein CSS nutzt auch für Google interessant sind.

      Bei Punkt „2.“ muss ich dir widersprechen, weil die Namespaces genau das kaputt machen was Microformats gerade ausmachen. Bisher kann jeder mit Begriffen wie description, note, entry-title oder name etwas Anfangen, ob er Micorformats kennt oder nicht. Mit der Einführung der Namespaces sieht das anders aus, vor allem weil der Prfix für den Daten-Typ steht.

      Ich bin der Meinung, dass man Microformats mit den Prefixes krampfhaft zu etwas machen will, was Microdata und RDFa viel besser leisten können und damit das kaputt macht was Microformas sind… schönes Plain Old Semantic HTML.

  3. Zu 1.: Naja, wer sich erst mal durchgerungen hat, semantisches statt präsentationsorientiertes Markup zu schreiben, wer also z.B. dafür zu Microformats greift, der wird vermutlich auch eher bereit sein, die Klassennamen weiterhin auch bei einem Redesign ordentlich zu wählen. Aber das ist natürlich nur eine Vermutung von mir 🙂

    Zu 2.: Ich verstehe Deine Argumentation. Da ist auch was dran. Der Mehraufwand wirkt zunächst tatsächlich abschreckend. Wobei hier m.M.n. vor Allem die Vielzahl der Präfixe abschreckend ist. Weniger wäre hier deutlich mehr. Aber ich denke immer noch, dass die Vorteile die durchaus vorhandenen Nachteile aufwiegen könnten. Aber natürlich ist auch dies eine persönliche Vermutung.

    Zu den Alternativen: RDFa finde ich recht ordentlich. Bei Microdata sehe ich noch nicht so recht klar. Was soll z.B. dieses „itemscope“? Ist das ein Attribut? Dann fehlt hier der Wert. Ohne Wert ist es wertlos (im Sinne des Wortes, und im anderen Sinn auch). Auch, für die entsprechende Meta-Information ein neues Attribut (itemprop) zu erfinden finde ich nicht so das Gelbe vom Ei. Der Inhalt des class Attributs soll den Inhalt des html-Containers (näher) klassifizieren. Daher heisst es ja auch „class“. Es ist nur konsequent, dafür auch genau dieses Attribut zu verwenden.

    Und nur als Ergänzung: Natürlich sollte die erste Wahl zur Klassifizierung eines Inhalts immer das passende html-Element sein. Daher bringt hier html5 wirklich Nützliches. Auch, dass man jetzt endlich meta-Informationen nicht nur im Header, also gültig für die gesamte Seite, sondern auch für einen Teilbereich der Seite einfügen kann, ist sehr sehr nützlich. Das war überfällig. Und Vieles von dem, was jetzt endlich realisiert wurde, macht Einiges von dem, was bisher Microformats und Ähnliche leisteten, obsolet. Kann man getrost begraben. Deswegen werden Microformats, RDFa und Dergleichen nicht gleich überflüssig. Aber ich denke, das hast Du ja so oder so ähnlich hier auch schon geschrieben.

    Und was den Blick in die Glaskugel (Zukunft) angeht: Das kann man getrost unterschiedlich interpretieren. Wir werden sehen.

  4. „Die Prefixes ‘h-‘, ‘p-‘, ‘u-‘, ‘dt-‘ und ‘e-‘ sollen das Zukünftig verhindern und ein generisches parsen ermöglichen.“

    Mit Verlaub – na ist ja jetzt richtiger Bullshit! Jetzt werden auf 5 Ebenen Namespaces in Anspruch genommen. Was das jetzt verbessert ist ja nun wirklich die Frage!

  5. Ich habe jetzt noch mal einige Zeit darüber nachgedacht und neige nun eher dazu, Dir zuzustimmen: Namespaces bei Microformats sind eher hinderlich. Die nötige Flexibilität erreicht man ggf. über RDFa und/oder Microdata.

    Ich teste übrigens gerade viele verschiedene HTML Versionen von Blogs auf Microformats. Die sind gar nicht mal so selten. Und bislang ausschließlich ohne Prefix. Also „plain old“. Hat sich vielleicht doch mehr durchgesetzt, als Du derzeit vermutest.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert