Endlich denkt beim Thema „Usability“ auch mal jemand an die Entwickler ­čÖé

Google hat ├╝ber die letzten Wochen eine Usability-Studie zu Microdata durchgef├╝hrt und die Spezifikation wurde auch gleich entsprechend der Ergebnisse angepasst.

<address itemscope itemtype="http://microformats.org/profile/hcard">
 <strong itemprop="fn">Alfred Person</strong>
 <span itemprop="adr" itemscope>
  <span itemprop="street-address">1600 Amphitheatre Parkway</span> <br>
  <span itemprop="street-address">Building 43, Second Floor</span> <br>
  <span itemprop="locality">Mountain View</span>,
  <span itemprop="region">CA</span> <span itemprop="postal-code">94043</span>
 </span>
</address>

Die Änderungen:

  • Aus item wird itemscope.
  • Der Typ wird ├╝ber itemtype und nicht mehr ├╝ber item bzw. itemscope angegeben.
  • Das Attribut itemid wurde eingef├╝hrt, um z.B. auf ISBN-Nummer zu verweisen itemid="urn:isbn:0-330-34032-8".

├ťber den neuen HTML-Tag <itemref /> (alternativ: <itemfor />) werde ich im zweiten Teil von „Microdata ÔÇô wie Microformats blo├č besserÔÇŽ“ eingehen (zum ersten Teil).

Jetzt muss ich nur noch meine alten Artikel zu Microdata anpassen… das hat man nun davon, wenn man ├╝ber Drafts berichtet ­čśë

David Recordon stellt auf O’Reilly – Radar zwei der spannendsten Ergebnisse des gestrigen PortableContacts Hackathon (bei Six Apart) vor:

Joseph Smarr and Kevin Marks of Google hacked together a web transformer that integrates Microformats, vCard, and the Portable Contacts API. Given Kevin’s homepage which is full of Microformats, they’ve built an API that extracts his profile information from hCard, uses a public API from Technorati to transform it to vCard, and then exposes it as a Portable Contacts API endpoint. Not only does this work on Kevin’s own page, but his Twitter profile as well which contains basic profile information such as name, homepage, and a short bio.

Ein sch├Ânes Beispiel was man mit semantisch ausgezeichneten Informationen machen kann und dass Microformats eben auch (ohne viel Aufwand und mit ein bisschen Transformation) in h├Âherwertige APIs integriert werden k├Ânnen… also keine hCard wurde umsonst geschrieben ­čÖé

Brian Ellin of JanRain has successfully combined OpenID, XRDS-Simple, OAuth, and the Portable Contacts API to start showing how each of these building blocks should come together. Upon visiting his demo site he logs in using his OpenID. From there, the site discovers that Plaxo hosts his address book and requests access to it via OAuth. Finishing the flow, his demo site uses the Portable Contacts API to access information about his contacts directly from Plaxo. End to end, login with an OpenID and finish by giving the site access to your address book without having to fork over your password.

Dazu brauche ich nicht mehr sagen, als: Implementieren! Sofort und ├╝berall ­čśë

Gestern bin ich auf das Portable Contacts Projekt gesto├čen…

The momentum began building for ‚data portability‘ last year, and we are now at a point where there is strong support for the principle that users should be in control of their data and have the freedom to access it from across the web.

[…]

The goal of Portable Contacts is to make it easier for developers to give their users a secure way to access the address books and friends lists they have built up all over the web.

[…]

…we’re using existing standards wherever possible, including vCard, OpenSocial, XRDS-Simple, OAuth, etc.

…was f├╝r mich nichts anderes als eine Trotzreaktion auf Data Portability ist!

Da spricht man von einheitlichen Standards und Portabilit├Ąt, schafft es aber nicht, gemeinsam an einem Projekt zu arbeiten… Ich sehe kaum Erleichterung darin, statt verschiedener propriet├Ąrer APIs (z.B. Google’s GData Contacts API oder Microsoft’s Live Contacts API) wahrscheinlich mind. genauso viele unterschiedliche standard APIs (Data Portability oder Portable Contacts) implementieren zu m├╝ssen!

…irgendwie ironisch!

Warum sollte nur die Ausgabe ((X)HTML) semantisch anreichern und die Eingabe vernachl├Ąssigen?

Beim spielen mit dem hCard-Mappers und der Firefox-Microformats-API kam mir die Idee, auch Formulare semantisch auszuzeichnen…

In dem Artikel Use the new microformats API in your Firefox 3.0 Extensions beschreibt Rob Crowther wie man mit Hilfe der Firefox-Microformats-API eine hCard speichert um sie zum Ausf├╝llen verschiedener Formulare weiterverwenden zu k├Ânnen.

Das Problem: Das Prinzip funktioniert leider nur bei Formularen die dem festgelegten Aufbau entsprechen. Im Fall des Beispiels w├Ąre das:

<h1>hCardFormFiller Target Form</h1>
<form action="#" method="post">
    <label>Name: <input type="text" id="name" /></label><br />
    <label>Email: <input type="text" id="email" /></label><br />
    <label>Home page: <input type="text" id="homepage" /></label><br />
    <label>Street Address: <input type="text" id="address1" /></label><br />
    <label>City: <input type="text" id="address2" /></label><br />
    <label>Region: <input type="text" id="city" /></label><br />
    <label>Postcode: <input type="text" id="postcode" /></label><br />
    <input type="submit" />
</form>

Warum nicht gleich das Formular als hCard-From aufbauen?

<form action="#" method="post" id="vcard" >
  <fieldset id="fn">
    <legend>Name</legend>
    <label for="given-name">Vorname:</label>
      <input type="text" id="given-name" />
    <label for="family-name">Nachname:</label>
      <input type="text" id="family-name" />
  </fieldset>
  <label for="email">Email:</label>
    <input type="text" id="email" />
  <label for="url">Homepage:</label>
    <input type="text" id="url" />
  <fieldset id="adr">
    <legend>Adresse</legend>
    <label for="street-address">Stra├če:</label>
      <input type="text" id="street-address" />
    <label for="locality">Stadt:</label>
      <input type="text" id="locality" />
    <label for="region">Region:</label>
      <input type="text" id="region" />
    <label for="postal-code">Postleitzahl:</label>
      <input type="text" id="postal-code" />
  </fieldset>
  <input type="submit" />
</form>

Das Einheitliche Format f├╝r Ein- (Formular) und Ausgabe (Microformats) h├Ątte zur Folge, dass keine aufwendigen Mapper (wie z.B. hCard-Mapper) mehr n├Âtig w├Ąren um ein Formular per hCard auszuf├╝llen…

Sch├Âne neue Welt ­čÖé

Eigentlich bringt das iPhone, mit WLAN und einem (fast) vollwertigen Safari, die besten Voraussetzungen um Microformats zu verarbeiten.

Nach der Frage von Rauno

[…] Wei├čt du von einer M├Âglichkeit, Microformats aus Firefox in den iPhonekalender zu exportieren? […]

und nach Wojteks Kommentar…

[…] I prefer bookmarklets but this will come handy for sure too. […]

habe ich mir ├╝berlegt, es sollte doch m├Âglich sein, Microformats mit einem Bookmarklet direkt auf dem iPhone nutzbar zu machen…

Prinzip ist einfach, Bookmarklet (z.B. von Leftlogic oder Technorati) im normalen Safari Bookmarken, iPhone Safari mit normalem Safari ├╝ber iTunes syncen, das wars… (wem das zu schnell ging kann sich das hier nochmal in Ruhe am Beispiel eines del.icio.us Bookmarklets anschauen.)

Das Bookmarklet funktioniert super:

IMG_0056.JPG

…aber der ┬ž$%!& iPhone Safari kann keine vCard oder iCalendar Dateien verarbeiten!

IMG_0057.JPG

Mach ich irgendwas falsch? Sogar mein popliges Sony Ericsson Handy erkennt vCards und wei├č dass sie ins Adress-Buch geh├Âren!

Naja… Wie schon im Titel erw├Ąhnt: Es k├Ânnte so einfach sein.

(Dickes Danke an Florian (.dean) f├╝rs testen und die Screenshots und an Marco, dessen iPhone ich kurz entf├╝hren durfte)

Vor ungef├Ąhr einem Jahr habe ich schonmal ├╝ber einen Microformats Bluetooth-Export mit Hilfe von Tails-Export geschrieben. Da sich aber nach und nach der Operator als DAS Microformats-Addon f├╝r den Firefox durchgesetzt hat, wurde nat├╝rlich auch das Bluetooth-Script portiert.

Das Mac-Script findet man auf der Seite von Michael Kaply (direkter Link).

ÔÇťSend to Bluetooth DeviceÔÇŁ action for sending ICS and VCF files via Bluetooth. Works with the hCard and hCalendar microformats.

…und seit letztem Monat gibt es auch ein Windows-Script von Thom Shannon (direkter Link).

I’ve modified the Mac only bluetooth user script for operator to work on windows. It’s based on this script, and originally inspired by Johns hack of Tails.

Wer sich viel mit Microformats besch├Ąftigt, ist sicher schon ├Âfters ├╝ber den Begriff RDFa gestolpert. Die Idee, (X)HTML semantischer zu machen, ist bei beiden Formaten gleich, der Unterschied liegt haupts├Ąchlich in der Syntax.
W├Ąhrend Microformats ausschlie├člich auf HTML 4.01 bzw. XHTML 1.0 validen Tags und Attributen basiert:

<div class="vcard">
  <span class="fn">Max Mustermann</span>
  <a class="email" href="mailto:max.mustermann@example.org">
    max.mustermann@example.org
  </a>
</div>

Beispiel hCard

…basiert RDFa auf dem klassischen RDF und mit XHTML 2.0 neu eingef├╝hrten Attributen wie z.B. property und about:

<body xmlns:contact="http://www.w3.org/2001/vcard-rdf/3.0#">
  <span property="contact:fn">Max Mustermann</span>
  <a rel="contact:email" href="mailto:max.mustermann@example.org">
    max.mustermann@example.org
  </a>
</body>

Beispiel vCard RDF in RDFa

Eine gute Einf├╝hrung in das Thema RDFa bietet das Video von Manu Sporny:

Rein Technisch gesehen ist RDFa, durch die Nutzung von Namespaces und die bessere Skalierbarkeit durch URIs, definitiv der bessere Standard. Ich denke trotzdem nicht dass RDFa die Microformats in n├Ąherer Zukunft abl├Âsen wird, da RDFa nur unter XHTML 2.0 m├Âglich ist und (meines Wissens) im Konkurrenz-Format (X)HTML 5.0 nicht angedacht wird. Es ist deshalb notwendig beide Formate weiter voranzutreiben und so weit wie m├Âglich auf einem einheitlichen Standard, wie z.B. der vCard im oben beschriebenen Beispiel, aufzubauen. W├Ąhrend der ├ťbergangsphase ist es so relativ einfach mit GRDDL zwischen den beiden Formaten zu transformieren.

In seinem Artikel „RDFa vs microformats“ beschreibt Evan Prodromou die f├╝r ihn notwendigen Schritte f├╝r die Zukunft von RDFa:

  1. RDFa gets acknowledged and embraced by microformats.org as the future of semantic-data-in-XHTML
  2. The RDFa group makes an effort to encompass existing microformats with a minimum of changes
  3. microformats.org leaders join in on the RDFa authorship process
  4. microformats.org becomes a focus for developing real-world RDFa vocabularies

Mal schauen wie es wirklich kommt und was sich in Zukunft durchsetzen wird…

Wer sich f├╝r das Thema interessiert, kann ja mal Semantic Radar f├╝r Firefox ausprobieren. Semantic Radar macht (├Ąhnlich wie Operator f├╝r Microformats) RDF und RDFa Inhalte in Webseiten sichtbar.

OpenID Logo„OpenID ist ein dezentrales System zur Identifizierung“ (WikiPedia).
OpenID bietet die M├Âglichkeit, Login Daten an zentraler Stelle anzugeben und diese als Authentifizierung f├╝r andere Webseiten zu verwenden. Simple Registration Extension (kurz SREG) ist eine Erweiterung zu der OpenID Authentifizierung, der einen simplen Profil-„Austausch“ erlaubt.
SREG ist, wie der Name schon sagt, „nur“ ein Simples Format, deshalb wurde eine Erweiterung mit dem Namen Attribute Exchange (AX), welches wesentlich mehr Informationen beinhaltet, entwickelt.

Chris Messina stellt sich in seinem Artikel „hCard for OpenID Simple Registration and Attribute Exchange“ die Frage warum bei der Definition der ersten AX-Typen (genauso wie bei SREG) versucht wird, Profil-Daten neu zu definieren, anstatt auf bestehende Standards wie die vCard (RFC2426) zur├╝ck zu greifen. Er argumentiert sein Anliegen mit der weiten Verbreitung der vCard und seines XHTML Pendants der hCard:

Most importantly, however, hcard and vcard is already widely supported in existing applications like Outlook, Mail.app and just about every mobile phone on the planet and in just about any other application that exchanges profile data.

Continue reading

vCard ExplorerDer vCard Explorer ist ein kleines Tool (leider nur f├╝r den Mac) zum Anzeigen von vCards und hCards, ohne sie direkt in das Adressbuch importieren zu m├╝ssen.

Weitere Features:

  • Durchsuchen der aktuell ge├Âffneten URL in Safari nach einer hCard
  • Kein Importieren der vCards in das Adressbuch n├Âtig f├╝r die Darstellung.
  • Anzeigen der Adresse in Google maps
  • Importm├Âglichkeiten von vCard und hCard in das Apple Adressbuch

Einige Screenshots und einen Screencast findet man auf der offiziellen Homepage.

Here are some code snippets to use the gorgeous X2V microformats XSLT files from Brian Suda with PHP 5 and libxslt (PHP 5 includes the XSL extension by default).

hCard to vCard:

To parse a XML or XHTML document, it has to be valid. To tidy the XML file, you can use a service from the W3C:

$xml_string_tidy = file_get_contents("http://cgi.w3.org/cgi-bin/tidy?docAddr=".urlencode($uri));

Then you have to create the HTML DOM…

@$document = new DOMDocument();
@$document->loadHTML($xml_string_tidy);

and the XSLT DOM…

$stylesheet = new DOMDocument();
$stylesheet->load('hcard2vcard.xsl');

Create a new XSLT Processor, load the Stylesheet…

$processor = new XsltProcessor();
$processor->importStylesheet($stylesheet);

and run the transformation.

$result = $processor->transformToDoc($document);
$str = $result->saveXML();

Now $str contains the transformed code.
To send the vCard header with PHP, try

header("Content-Disposition: attachment; filename=contact.vcf");
header("Content-Type: text/x-vcard; charset=UTF-8 name=contact.vcf");
echo $str;

If you want to use the vCard extension .vcf instead of .php you have to add something like that to your .htaccess file

RewriteEngine On
RewriteBase /
RewriteRule ^contact.vcf /hcard2vcard.php [L,QSA]

I hope it works ­čÖé