Gestern berichtete ReadWriteWeb über eventuelle Pläne, OAuth nativ in Firefox zu integrieren.

The conversation today took place in the context of a question from Matthew „lilmatt“ Willis, a Flock employee and longtime contributor to Mozilla. Willis wants to know if the Firefox developer community would like OAuth built into Firefox and if so how. He points out that much of the work has already been done, if not multiple times.

Neben Microformats und OpenID wäre OAuth das dritte offene Format welches der Firefox 3 unterstützen würde…

So macht DataPortability Spass 🙂

Add-ons.jpg

Gestern veröffentlichte Vidoop eine erste Version ihrer Identity In The Browser-Extension für den Firefox 3. IDIB ist OpenSource und soll die OpenID-Verarbeitung, speziell in den Punkten Sicherheit und Browser-Redirects, verbessern.

Die derzeitige Version des Addons bietet folgende Möglichkeiten:

  • we help to reduce or eliminate browser-based redirects typically involved in authenticating against identity providers
  • we add security to reduce the potential for phishing/man-in-the-middle attacks

Mit IDIB möchte Vidoop einen Anfang machen, um die Kommunikation zwischen Mozilla und OpenID wieder anzutreiben:

It was almost two years ago when the Firefox 3.0 roadmap was announced and OpenID was mentioned as a new component to the platform. The Mozilla Firefox team looked to members of the OpenID community to step up and provide guidance on what exactly we imagined identity in the browser looking like, but we failed to mobilize and answer their call.

Leider benötigt das Addon einige kleine Erweiterungen (Relying Parties) zum aktuellen OpenID-Standard, die alle im Entwickler-Wiki dokumentiert sind…

(Da Will Norris (der Entwickler des OpenID-Plugins für WordPress) aktuell für Vidoop arbeitet, sollte es aber nicht all zu lange dauern bis eine erste, angepasste Version seinen Plugins erhältlich ist.)

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>Code-Sprache: HTML, XML (xml)

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>Code-Sprache: HTML, XML (xml)

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 🙂

Rob Crowther hat für IBM developerWorks eine großartige Anleitung (mit Beispiel-Code) geschrieben, wie man die Microformats API in Firefox3 Extensions nutzen kann.

The upcoming Firefox 3.0 release has built-in support for microformats in the form of an API that you can access from a Firefox extension. In this tip, you follow a simple example of how to use this API from within your extension code. You take a skeleton Hello World extension and give it the ability to store an hCard from any Web page and then use that stored hCard to populate a Web form.

Die Beispiel-Erweiterung von Crowther nutzt hCard-Informationen um ein (im Beispiel beiliegendes) Profil-Formular auszufüllen.

hcardformfiller.jpg

Ablauf: Zuerst auf ne Seite mit hCard, linken Knopf drücken, dann auf das Fromular und rechten Knopf drücken.

hCardFormFiller für WordPress

Um dem Beispiel etwas mehr Nutzen zu geben, habe ich es testweise für das WordPress Kommentarformular umgeschrieben. Die Einzige notwendige Änderung ist, folgenden Code in der overlay.js:

onToolbarButtonPasteCommand: function(e) {
 if (this.uF.fn) {
   content.document.getElementById('name').value = this.uF.fn;
   content.document.getElementById('email').value = this.uF.email[0].value;
   content.document.getElementById('homepage').value = this.uF.url[0];
   content.document.getElementById('address1').value = this.uF.adr[0]['street-address'];
   content.document.getElementById('address2').value = this.uF.adr[0].locality;
   content.document.getElementById('city').value = this.uF.adr[0].region;
   content.document.getElementById('postcode').value = this.uF.adr[0]['postal-code'];
 }
}Code-Sprache: JavaScript (javascript)

durch folgenden Code:

onToolbarButtonPasteCommand: function(e) {
 if (this.uF.fn) {
   content.document.getElementById('author').value = this.uF.fn;
   content.document.getElementById('email').value = this.uF.email[0].value;
   content.document.getElementById('url').value = this.uF.url[0];
 }
}Code-Sprache: JavaScript (javascript)

zu ersetzen und das war’s. Jetzt könnt ihr mit einer hCard bewaffnet losziehen und WordPress Blogs zuspammen 🙂

Wer das Addon mal ausprobieren möchte kann sich den angepassten hCardFormFiller for WordPress runterladen… den original Code findet man hier.

Nachdem die Microformats kein UI spendiert bekommen haben, gibt es vielleicht demnächst einige Addons die diese Lücke füllen werden.

Interessante Links:

Jetzt wo der Release Candidate 1 von Firefox 3 erhältlich ist, fragen sich einige wo denn die „versprochenen“ Microformats sind. Michael Kaply, der Macher von Operator (und meines Wissens auch der Mann hinter der Firefox-Microformats-API) versucht diese Frage in seinem Weblog zu beantworten:

The answer is that there is a microformats API in Firefox 3, but unfortunately there is nothing available in the UI for this release.[…]

The primary reason that microformats aren’t exposed in the Firefox UI is that there was never any agreement as to how to expose them.

Da hatte ich damals ja gar nicht so unrecht:

Ich bin mir nicht 100%ig sicher, aber ich glaub es wird nur eine API für das Parsen von Microformats gestellt, da es das Operator Plugin ja auch für Firefox 3 gibt.
Wie das mit den oben genannten Selektoren aussieht weiß ich auch nicht.

Wer sich für das Thema Firefox, Microformats und die Zukunft von Operator interessiert, sollte sich einfach mal Kaplys kompletten Artikel durchlesen.

Michael Kaply plant einige interessante neue Features für Operator (Firefox Microformats-Addon).

Um User-Skripte vor der Installation nicht erst herunterladen zu müssen, sollen die Skripte von JS auf XML umgestellt werden. Als Basis für das XML-Modell wurde das, von Microsoft spezifizierte, OpenService Format angedacht.

So könnte ein Script z.B. aussehen:

<?xml version="1.0" encoding="utf-8"?>
<openServiceDescription
  xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0">
  <display>
    <name>Find with MapQuest</name>
    <icon>http://www.mapquest.com/favicon.ico</icon>
  </display>
  <homepageUrl>http://www.mapquest.com</homepageUrl>
  <activity category="Map">
    <activityAction context="hCard.adr">
      <execute method="get"
        action="http://www.mapquest.com/maps/map.adp?searchtype=address">
        <parameter name="address" value="{street-address}"/>
        <parameter name="city" value="{locality}"/>
        <parameter name="state" value="{region}"/>
        <parameter name="zipcode" value="{postal-code}"/>
        <parameter name="country" value="{country-name}"/>
      </execute>
    </activityAction>
  </activity>
</openServiceDescription>Code-Sprache: HTML, XML (xml)

Weitere Gedanken zu der „OpenService extension for microformats contexts“ oder „Automatic Discovery“ findet ihr im Microformats Wiki

Nachdem sich Benjamin Nowack gestern (via twitter) noch gefragt hat ob es möglich ist, einem Firefox-HTML-Validator RDFa beizubringen…

wondering if the FF HTML Validator extension could be hacked to support RDFa. Basic QA is a bit too complicated with only the w3.org checker

…hat er ihn heute auf seiner Webseite veröffentlicht 🙂

Benjamin Nowacks angepasster Validator basiert auf der HTML Validator Extension for Firefox von Marc Gueury und funktioniert leider vorerst nur unter Windows.

Zum Download

Weitere sehr interessante Projekte von Herrn Nowack die man sich auch unbedingt anschauen sollte:

  • ARC – Easy RDF and SPARQL for LAMP systems
  • SPARQLBot – Your Semantic Web Command Line