les microformateurs

18 October 2008

Emily Lewis : “Parvenir à la Sémantique avec les Microformats, 4ème partie - hCalendar”

Filed under: hcalendar, ressources, traduction — Christophe Ducamp @ 17:53

Microformats

Nous voici de nouveau à plonger dans le monde excitant (au moins pour moi) des microformats. Basé sur ce que j’avais plannifié au début, cet article marque le mi-parcours de la série. A ce stade, j’ai discuté de trois implémentations des microformats sur A Blog Not Limited :

  • Spécifier les relations fondées sur les liens en utilisant l’attribut rel dans la 1ère Partie
  • Donner aux liens un “visage humain” en utilisant le microformat XFN dans la 2ème Partie
  • Décrire les personnes, les sociétés et lieux avec le microformat hCard dans la 3ème Partie

Pas mal. Mais cela ne fait que gratter la surface des microformats.

Aussi, allons droit vers le microformat hCalendar, que j’utilise pour ajouter de la sémantique et de la structure à mon contenu pour les événements et activités basés sur des dates et heures.

Origines : iCalendar

iCalendar (ou iCal) est un standard pour partager des données de calendrier. Plus fréquemment, il est utilisé dans les échanges d’email, bien qu’il ne soit pas seulement limité à ce médium.

Comme la hCard, hCalendar a été introduit de manière à ce que les auteurs web puissent inclure des données iCalendar dans leurs pages web.

hCalendar est une représentation 1:1 du iCalendar, qui permet aux parseurs d’extraire de l’information d’événement provenant d’une page web de manière à ce qu’elle puisse être utilisée dans les programmes de calendriers (parmi d’autres usages).

Note historique : iCalendar est basé sur vCalendar (Virtual Calendar), qui est une application de calendrier en open source pour publier et maintenir des événements et rendez-vous en ligne. vCalendar a été développé avec le format de carte de visite électronique vCard.

Activités Fondées sur Date/Heure

Le microformat hCalendar décrit le type d’information à propos d’évènements (ou tout ce qui est basé sur les date/heure) que vous auriez sur un calendrier, à savoir (mais non limité) :

  • Résumé
  • Date et heure
  • Lieu
  • Description détaillée
  • Récurrence

Les Bases

Tout comme hCard, hCalendar a quelques règles de base :

  • Les propriétés et sous-propriétés sont exprimées sous des valeurs class.
  • Du fait de la relation 1:1 avec iCalendar, les propriétés spécifiées hCalendar sont basées sur les noms de propriétés de iCalendar (à savoir, vevent).
  • Les propriétés et sous-propriétés sont sensibles à la casse.
  • La propriété “racine” ne peut pas être mélangée avec n’importe laquelle de ses propriétés. De ce fait, <p class="vevent summary"> est invalide.

Et même si ce n’est pas une règle, il est important de garder ça à l’esprit : le marquage utilisé importe peu.

Les valeurs de classe (propriétés/sous-propriétés) définissent le microformat hCalendar.

Ceci étant dit, j’encourage vraiment le marquage sémantique (et cela va sans dire valide).

Le Profil

Comme pour tous les microformats, il est recommandé de faire référence au profil hCalendar dans le <head> des pages web qui contiennent le microformat :

<head profile=”http://purl.org/uF/hCalendar/1.0/”>

Le W3C autorise plusieurs valeurs de profils, séparées par des espaces blancs, ainsi vous pouvez lister plusieurs profils si vous choisissez :

<head profile="http://gmpg.org/xfn/11 http://purl.org/uF/hCard/1.0/” http://purl.org/uF/hCalendar/1.0/“>

Cependant, si vous référencez des microformats-non-draft (et hCalendar est non-draft), vous pouvez utiliser à la place l’URL profil combinée, qui couvre tous les microformats non-draft :

<head profile="http://purl.org/uF/2008/03/“>

Si vous faites référence à la fois à des microformats non-draft et draft, vous pouvez utiliser ce profil combiné avec les profils pour les nouveaux/draft microformats.

L’exemple

Ce blog est encore relativement nouveau. Aussi, je n’ai pas eu beaucoup d’opportunités de lister de l’information d’évènement.

En fait, je n’ai qu’un exemple vivant, grâce à un article sur un BarCamp récent à Albuquerque où j’ai utilisé le microformat hCalendar :

  1. <div class=”vevent”>
  2. <p>
    Oui, c'est un billet court, mais marquez ça dans vos agendas :
    <a href="http://barcamp.org/BarCampAlbuquerque"
    class=”url summary”>
    <span class=”category”>BarCamp</span>
    Albuquerque 3</a>
    aura lieu ce week-end.
    </p>
  3. <dl>
  4. <dt>Quand :</dt>
  5. <dd><abbr class=”dtstart”
    title=”2008-09-13T09:00:00″>13</abbr>–
    <abbr class=”dtend” title=”2008-09-14T18:00:00″>14 septembre</abbr>,
    à partir de 9h00 jusqu’à 18h00 les deux jours.</dd>
  6. <dt>Où :</dt>
  7. <dd class=”location vcard”>
    <a class=”fn org url” href=”http://www.chefwhite.com/cjw_cafe.php”>CJW Cafe</a>
    à <a href=”http://maps.google.com/maps” class=”adr”>
    <span class=”street-address”>4801 Alameda
    <abbr title=”Boulevard”>Blvd</abbr>
    <abbr title=”Northeast”>NE</abbr>
    </span>,
    <span class=”locality”>Albuquerque</span>,
    <abbr class=”region” title=”New Mexico”>NM
    </abbr> <span class=”postal-code”>87113
    </span>
    </a>
    </dd>
  8. <dt>Quoi :</dt>
  9. <dd class=”description”>
    Un évènement de
    <abbr class=”duration” title=”P2D”>deux jours</abbr> pour tout ce qui concerne le web — design (visuel, expérience, architecture de l’information), technologie (infrastructure, programmation), social et nouveaux médias, et d’autres trucs simplement vraiment cools.</dd>
  10. </dl>
  11. </div>

Les Parties de la Somme

Décomposons cet exemple avec ses parties.

La Racine : vevent

Vous remarquerez que la propriété racine dans mon exemple est vevent, plutôt que vcalendar. Ceci parce hCalendar a un élément racine optionne du vcalendar, qui n’est obligatoire que si vous décrivez plus d’un calendrier d’événements sur une page donnée.

Pour une page avec un unique calendrier d’événements, la propriété vcalendar est présumée sur la page elle-même.

Le fait que mon exemple soit un événement unique dans un “calendrier,” unique, je place toute mon information d’événement dans <div class="vevent">. Ceci indique que tout le contenu embarqué à l’intérieur décrit un événement unique.

Une fois de plus, l’élément conteneur pourrait être n’importe quoi (<dl>, <ul>, <p>, <span>, etc.) la <div> est simplement appropriée pour mon exemple.

Propriétés Requises : summary & dtstart

Les seules propriétés requises pour hCalendar (autres que la racine vevent) sont summary et dtstart.

summary

La propriété summary décrit un synopsis bref de l’événement. Le contenu embarqué par cette propriété est typiquement ce qui s’affiche dans un programme de calendrier sous le nom ou titre de l’événement.

Ainsi dans mon exemple, “BarCamp Albuquerque 3″ est contenu par summary, aussi c’est l’information qui s’affiche comme le nom/titre dans mon calendrier personnel :

<p>Oui, c'est un billet rapide, mais à marquer dans vos agendas : <a href="http://barcamp.org/BarCampAlbuquerque" class="url summary“><span class=”category”>BarCamp</span> Albuquerque 3</a> c’est ce week-end.</p>

dtstart

La propriété dtstart décrit les date/horaire pour le démarrage de l’événement. Dans mon exemple, “13″:

<dd>
<abbr class=”dtstart”
title=”2008-09-13T09:00:00″>13
</abbr>–<abbr class=”dtend”
title=”2008-09-14T18:00:00″>14 septembre</abbr>,
de 9h00 à 18h00 les deux jours</dd>

Date/Time Design Pattern

Remarquez que l’élément contenant pour dtstart est un <abbr>, là où l’information contenue est est “13″ et la valeur d’attribut title est “2008-09-13T09:00:00″:

<dd><abbr class=”dtstart”
title=”2008-09-13T09:00:00“>13</abbr>
–<abbr class=”dtend” title=”2008-09-14T18:00:00″>14 septembre</abbr>,
de 9h00 à 18h00 les deux jours</dd>

C’est l’approche actuellement recommandée pour définir l’information date/horaire dans un microformat — connue sous le datetime design pattern (qui est une extension du abbr design pattern).

Ce pattern a été développé pour supporter l’un des principes fondamentaux des microformats : designer d’abord pour les humains, ensuite pour les machines. Visant pendant tout ce temps, à fournir une information qui soit à la fois lisible par les humains et par les machines.

La logique est que les machines — tout comme les applications web — utiliseront la valeur title, alors que les navigateurs afficheront pour les humains le contenu embarqué par <abbr>.

Aussi, en tant que partie de la spécification pour utiliser ce “datetime pattern”, l’information date/horaire devrait être spécifiée dans un ISO 8601 :

  • AAAA-MM-JJThh:mm:ss — “A” représente les nombres entiers de l’année, “M” représente les nombres entiers du mois, “J” représente les nombres entiers du jour, “h” représente les nombres entiers des heures, “m” représente les nombres entiers des minutes et “s” représente les nombres entiers des secondes.
  • AAAA-MM-JJThh:mm:ssZ — “Z” est utilisé pour indiquer le GMT.
  • AAAA-MM-JJThh:mm:ss+hh (ou -hh) — les “+hh” et “-hh” indiquent le décalage horaire en heure GMT.

Pour dire ça dans des termes un peu plus compréhensibles, 2008-09-30T13:00:00 = 30 septembre 2008, 13h00 (heure locale).

Le caractère “T” dans ces exemples sépare l’information de date de l’information d’horaire.

Si vous n’avez qu’une date, omettez simplement le “T” et l’information horaire le suivant. De même, si vous n’avez qu’un horaire, omettez le “T” et l’information de date le précédant.

Il existe néanmoins et hélas, quelques problèmes d’accessibilité avec ce pattern, problèmes que je décrirai plus tard dans cet article. A cette heure, continuons avec mon exemple.

Le Reste des Propriétés Date/Horaire

Il existe deux autres propriétés date/horaire (et optionnelles) que j’ai ajoutées : dtend et duration.

dtend

La propriété dtend décrit les date/horaire de la fin de l’événement. Dans mon exemple, “14 septembre”:

<dd>
<abbr class="dtstart" title="2008-09-13T09:00:00">13</abbr>
–<abbr class=”dtend”
title=”2008-09-14T18:00:00″>14 septembre</abbr>,
de 9h00 à 18h00 les deux jours</dd>

duration

La propriété duration décrit la durée (en temps) de l’événement.
Dans mon exemple, deux jours :

<dd class="description">Un évènement de <abbr class=”duration” title=”P2D”>deux jours</abbr> pour tout ce qui concerne
le web — design (visuel, expérience, architecture de l’information), technologie (infrastructure, programmation), social et nouveaux médias, et d’autres trucs simplement vraiment cools.</dd>

Tout comme pour l’information de date/horaire, l’information de durée est spécifiée en utilisant le “datetime design pattern”, où l’information “lisible-par-les-machines” est indiquée par la valeur title et l’”information-lisible-par les-humains” est contenue par le <abbr>.

Aussi, la valeur de “duration” title est spécifiée selon ISO 8601, qui indique que la valeur est précédée par un “P” pour indiquer une période de temps.

Cette période de temps peut être exprimée en années (Y), mois (M), semaines (W), jours (D), heures (H), minutes (M) et/ou secondss (S).

Voici quelques exemples pour clarifier cela :

  • P2Y = durée de 2 ans
  • P10D = durée de 10 jours
  • P3H = durée de 3 heures
  • P2W = durée de 2 semaines weeks
  • P12DT8H30M = durée de 12 jours, 8 heures et 30 minutes
Parlons Accessibilité

J’ai rapidement évoqué dans la 3ème Partie qu’il y avait eu récemment quelques discussions sur les problèmes d’accessibilité avec le datetime design pattern.

Le point crucial du problème d’accessibilité est la façon dont les lecteurs d’écran interprètent les valeurs d’attribut title : ils les lisent/parlent.

Aussi, là où le datetime design pattern indique de mettre l’information ISO 8601 de date/horaire lisible par les machines dans le title, un lecteur d’écran déclame littéralement la valeur.

Imaginez entrendre ça à chaque fois que votre lecteur d’écran rencontre <abbr title="2008-09-30"> : “Deux mille huit tiret zéro neuf tiret trente.” Et c’est même encore pire pour les valeurs plus longues avec l’information sur l’horaire.

On peut soutenir que ceci n’est pas “human-friendly” pour ces utilisateurs.

A cette heure, ces problèmes n’ont pas été résolus. Il y a eu queques alternatives proposées, mais la communauté des microformats continue à discuter de la meilleure approche pour avancer afin de résoudre ces problèmes d’accessibilité et de rester cohérente avec l’esprit des microformats.

Pour moi et mon blog personnel, mes référents indiquent que je n’ai pas de visiteurs avec des lecteurs d’écran. Aussi, je ne suis pas préoccupée par l’implémentation du “datetime design pattern” sur ce blog.

Néanmoins, travaillant pour une grande entreprise, le manque d’accessibilité n’est tout simplement pas acceptable (pour moi et mon superviseur direct, même si je suis certaine que les “gros bonnets” pourraient moins s’en soucier).

Je suis désireuse de voir comment vont ces problèmes vont être résolus, de manière à ce que je puisse implémenter correctement l’information date/horaire en microformats et que cela puisse être encore supporté par tous les utilisateurs de lecteurs d’écrans.

Désormais, il est temps de revenir à l’exemple et des propriétés restantes utilisées …

Le Reste du Reste

Mon exemple comprend quatre propriétés supplémentaires (aussi optionnelles) : url, category, location and description.

url

La propriété url décrit un lien (<a>) pour l’événement :

<p>Oui c'est un billet rapide, mais marquez vos agendas : <a href="http://barcamp.org/BarCampAlbuquerqueclass=”url summary”><span class=”category”>BarCamp</span> Albuquerque 3</a> c’est ce week-end.</p>

Vous remarquerez que j’ai ajouté la propriété url à la propriété summary. Ceci tout simplement parce que le contenu embarqué par le <a> était simplement la valeur pour mon summary. D’autres implémentations pourraient être différentes.

category

La propriété category décrit le type d’événement. Dans mon exemple, “BarCamp” :


<p>Oui c'est un billet rapide, mais marquez vos agendas :
<a href="http://barcamp.org/BarCampAlbuquerque" class="url summary">
<span class=”category”>BarCamp</span>
Albuquerque 3</a>
c’est ce week-end.</p>

A la différence des propriétés évoquées plus haut, category peut utiliser un nombre illimité de fois. Quelques exemples communs de valeurs de category sont :

  • Rencontre
  • Expo
  • Vacances
  • Anniversaire
  • Conférence

Dans un certain sens, category est un moyen de “taguer” l’événement. Aussi, si j’avais choisi de marquer mon exemple pour y inclure un lien vers le site principal du BarCamp, j’aurais aussi utilisé microformat rel-tag pour accompagner category :

<p>Vous pourriez vous demander ce qu'est un
<a href="http://barcamp.org/"
class=”category” rel=”tag”>BarCamp</a> ?
</p>

Souvenez-vous, rel-tag ne peut être uniquement utilisé que sur des liens (<a>).

location

La propriété location décrit où aura lieu l’événement.


<dd class=”location vcard”><a class=”fn org url”
href=”http://www.chefwhite.com/cjw_cafe.php”>CJW Cafe
</a> au <a href=”http://maps.google.com/maps” class=”adr”>
<span class=”street-address”>4801 Alameda
<abbr title=”Boulevard”>Bd</abbr>
<abbr title=”Northeast”>NE</abbr>
</span>,
<span class=”locality”>Albuquerque</span>,
<abbr class=”region” title=”New Mexico”>NM</abbr>
<span class=”postal-code”>87113</span></a>
</dd>

Dans mon exemple, je fournis le nom du lieu et son adressse. Néanmoins, ce peut être tout simplement le lieu, ou juste l’adresse ; les deux ne sont pas requis.

description

Pour finir, la propriété description décrit un synopsis plus détaillé de l’évènement que summary :


<dd class=”description”>Un évènement de
<abbr class=”duration” title=”P2D”>deux jours</abbr>
pour tout ce qui concerne le web — design (visuel, expérience, architecture de l’information), technologie (infrastructure, programmation), social et nouveaux médias, et d’autres trucs simplement vraiment cools.
</dd>

Ce Que Je N’ai Pas Ajouté

Il existe plusieurs autres propriétés souvent utilisées pour hCalendar que j’ai choisies simplement de ne pas ajouter à mon exemple :

  • dtstamp indique les date/horaire à laquelle l’information hCalendar a été créée.
  • last-modified indique les date/horaire à laquelle l’information hCalendar a été mise à jour.
  • status indique la confirmation d’événement. Les valeurs autorisées sont “cancelled,” “confirmed” et “tentative.”
  • class indique la classification d’événement. Les valeurs autorisées sont “private,” “public ” et “confidential.”
  • rrule indique la récurrence régulière d’un événement. Si cette propriété est utilisée, elle a une sous-propriété obligatoire de freq pour indiquer la fréquence de la récurrence, qui est spécifiée plus en profondeur par des qualifiants (à savoir, count, interval).
  • rdate indique des événements qui arrivent irrégulièrement. La valeur title renvoie les dates irrégulières (séparées par des virgules).

Et il en existe encore d’autres qui peuvent être utilisées. Regardez les exemples hCalendar sur le wiki pour plus de détails.

hCalendar + hCard

Peut-être que vous avez remarqué que mon marquage hCalendar comprenait des propriétés et sous-propriétés hCard :


<dd class="location vcard“>
<a class=”fn org url”
href=”http://www.chefwhite.com/cjw_cafe.php”>CJW Cafe</a> au
<a href=”http://maps.google.com/maps” class=”adr”>
<span class=”street-address”>4801 Alameda
<abbr title=”Boulevard”>Blvd</abbr>
<abbr title=”Northeast”>NE</abbr></span>,
<span class=”locality”>Albuquerque</span>,
<abbr class=”region” title=”New Mexico”>NM</abbr>
<span class=”postal-code”>87113</span></a>
</dd>

Comme je l’évoquais dans la 3ème Partie, combiner les microformats est facile, et là où cela produire du contenu contextuel, cela ajoute plus de valeur sémantique au contenu (et vous savez ce que j’en pense).

Pour aller plus loin, cela donne à l’utilisateur juste quelques autres types de données qui peuvent être extraites et utilisées, comme une vCard pour son carnet d’adresses.

Dans cet exemple, la propriété location du hCalendar fait sens pour être aussi marquée avec vcard. Même si je n’ai fait que rajouter la ville, j’aurais pu encore ajouter les propriétés/sous-propriétés de hCard.

Langage Naturel

J’ai parlé aussi d’utiliser les microformats en langage naturel (dans le flux de phrases normales) dans la 3ème Partie, et hCalendar ne fait pas exception à ce concept.

Vous remarquerez que dans cet exemple, quelques informations du hCalendar sont directement dans le flux de mon contenu.

J’aurais pu mettre toute l’information du hCalendar dans des phrases naturelles plutôt que de “découper” quelques-uns des détails dans des <dl> :

  1. <div class=”vevent”>

  2. <p>Oui, c'est un billet rapide, mais à marquer dans vos calendries :
    <a href="http://barcamp.org/BarCampAlbuquerque"
    class=”url summary”>
    <span class=”category”>BarCamp</span> Albuquerque 3</a> c’est ce week-end,
    <abbr class=”dtstart” title=”2008-09-13T09:00:00″>13
    </abbr>–
    <abbr class=”dtend”
    title=”2008-09-14T18:00:00″>14 septembre</abbr>, de 9h00 à 18h00
    <abbr class=”duration” title=”P2D”>les deux jours</abbr>.
    </p>
  3. <p class=”description”>Ce BarCamp de l’année traitera de tout ce qui concerne le web : design (visuel, expérience, architecture de l’information), technologies (infrastructure, programmation), social et nouveaux medias, et d’autres trucs qui sont tout simplement vraiment cools.</p>

  4. <p class=”location vcard”>
    <a class=”fn org url” href=”http://www.chefwhite.com/cjw_cafe.php”>CJW Cafe</a>
    (sur <a href=”http://maps.google.com/maps” class=”adr”>
    <span class=”street-address”>4801 Alameda
    <abbr title=”Boulevard”>Blvd</abbr>
    <abbr title=”Northeast”>NE</abbr>
    </span>, <span class=”locality”>Albuquerque</span>,
    <abbr class=”region” title=”New Mexico”>NM</abbr>
    <span class=”postal-code”>87113
    </span>
    </a>) sera notre hôte pour l’événement.
    </p>
  5. </div>

Ajouter à votre Calendrier

Aussi sur l’article BarCamp Albuquerque 3, je fournis un lien aux utilisateurs pour qu’ils puissent ajouter l’événement à leurs programmes de calendrier :

Télécharger le fichier événement .ics du BarCamp Albuquerque 3

Ce lien pourrait être une URL directe vers n’importe quel fichier iCalendar (à savoir, .ics, .ical, .ifb, .icalendar) avec votre information d’événement. En ce qui me concerne, j’ai utilisé le Service de Fils d’Evénements de Technorati.

En utilisant la technologie de Technorati, vous faites précéder simplement l’URL de la page où réside votre microformat avec http://feeds.technorati.com/events/, et puis utilisez l’URL résultante comme la valeur href de votre lien (<a>) :

<a href="http://feeds.technorati.com/events/http://www.ablognotlimited.com/articles/barcampalbuquerque-around-the-corner
title=”Télécharger le fichier .ics “>
Ajoutez à votre calendrier</a>

Quand un utilisateur sélectionne ce lien, le fichier .ics est créé dynamiquement et il peut le télécharger ::

Télécharger le fichier .ics

Les Apparences Comptent

Je l’ai répété plusieurs fois : le marquage importe peu (bien qu’il devrait idéalement être valide et sémantique).

Et même si les valeurs class (propriétés/sous-propriétés) sont essentielles pour le microformat, la CSS que vous utilisez pour styliser votre information hCalendar est uniquement dédiée à la présentation (pas pour dire que ce n’est pas important).

Je recommanderais néanmoins d’utiliser les valeurs class qui sont requises par hCalendar dans votre CSS, plutôt que d’ajouter de nouvelles classes pour le style. Ceci vous donne simplement une CSS plus maigre.

Pour un exemple sur la façon dont vous pouvez styliser un calendrier d’événements, jetez un oeil au superbe travail de Jeremy Keith qu’il a produit pour des calendriers en cascade.

Pour finir, vous pouvez produire tout ce que votre coeur désire. La présentation de votre hCalendar ne se limite qu’à vos talents en CSS.

Pourquoi s’en Soucier ? Les Avantages, Bien Sûr

Bien qu’ayant déjà traité des avantages dans cette série d’articles, ils valent toujours la peine d’être répétés, … essentiellement parce que les microformats sont si simples à mettre en oeuvre et qu’ils offrent tant de potentiels.

Je souhaiterais que plus de personnes les connaissent et les utilisent. Cela aiderait à accroître le nombre d’outils et d’applications qui les utilisent.

Une Fois de Plus : Sémantique

Oui, la sémantique. Vous devez croire que c’est mon concept favori. Oui, vous auriez raison.

Les microformats prennent les standards existants, comme les éléments XHTML, et ajoutent encore même plus de valeur sémantique au contenu qu’ils contiennent. Ceci aide de mon point de vue les auteurs web à créer de meilleurs sites qui deviennen t plus utilisables et accessibles tant pour les humains que pour les machines (comme les moteurs de recherche).

Pour aller plus loin, le fait d’adopter la sémantique (même sans microformats, mais dans le marquage en lui-même) fait partie du support des standards ; des moyens standardisés de développer des sites. Ceci profite non seulement aux utilisateurs (et ceci concerne aussi les machines), mais assi aux designers/développeurs et aux équipes. Cela profite à tous.

Et, une fois de plus, ces approches posent une fondation (sémantiquement riche) pour Le Web Sémantique, tout en nous permettant simultanément de tirer profit du web et des technologies d’aujourd’hui.

Cool Shit

Je comprends tout à fait que la sémantique et les standards relèvent pour certains de discussions philosophiques. En fin de compte, soit vous “captez” ou non.

Si vous êtes dans le dernier camp, considérez quelques-uns des outils plutôt cools et utiles disponibles aujourd’hui qui savent tirer profil du microformat hCalendar.

Extensions Navigateur

Il existe tout un paquet d’outils navigateurs qui extraient l’information hCalendar provenant d’une page web de façon à pouvoir l’exporter et l’utiliser dans des applications qui supportent iCalendar.

  • L’extension Operator pour Firefox extrait l’information hCalendar et vous permet de l’ajouter dans votre application préférée de gestion de calendrier (elle fait de même avec l’information hCard pour votre carnet d’adresses) :
    exemple de hCalendar avec Operator pour Firefox
  • Aussi pour Firefox, l’extension Tails Export détecte l’information hCalendar (tout comme pour hCard) et l’extrait pour l’exporter dans votre application de calendrier :

    exemple de hCalendar avec Tails Export pour  Firefox
  • Le plugin microformats pour Safari fonctionne comme les extensions Firefox, en extrayant pour vous l’information hCalendar (et hCard) afin de l’ajouter à votre programme de calendrier.
  • Le bookmarklet microformats extrait lui aussi l’information hCalendar que vous pouvez exporter dans votre application de calendrier :

exemple de bookmarklet microformats

Autres Services
  • X2V de Brian Suda est une feuille de style XSLT qui extrait l’information hCalendar provenant d’une page web pour créer un fichier iCalendar .ics.
  • Technorati offre un moteur de recherche de microformats qui indexe l’information microformatée (hCalendar, hCard et hReview) provenant d’URLs proposées et rend cette information disponible pour la recherche.
  • Elias Torres a créé un script Greasemonkey hCalendar + Google Calendar Reminders qui identifier l’information hCalendar sur une page web et fournit une icône pour ajouter cet événement à votre Calendrier Google.
  • Un autre script GreaseMonkey de Les Orchard vous permet de modifier les champs de formulaire texte de Firefox pour devenir des générateurs hCalendar : Magic Microformat Forms.

Il existe encore plein d’implémentations hCalendar que je n’ai pas mentionnées.

Pression Par les Pairs

Si ces ressources ne vous ont pas fait tourner la tête, alors peut-être qu’un peu de pression par les pairs le fera. Bon nombre de services leaders aujourd’hui utilisent hCalendar (et d’autres microformats) :

  • Le site d’événement de Yahoo, Upcoming utilise hCalendar, de façon à ce que pendant que les utilisateurs naviguent dans les événements, ils puissent aussi les importer dans leurs applications de gestion de calendrier.
  • MapQuest Local supporte aussi hCalendar, tout comme les microformats hCard et celui de géolocalisation.
  • TripIt utilise le marquage hCalendar pour ses itinéraires.
  • Last.fm utilise hCalendar pour ses annonces de concerts.
  • Le géant du réseau social, Facebook, utilise hCalendar pour l’information d’événements.

Et il existe encore plus d’exemples hCalendar dans la jungle

Bon, vous savez que vous voulez y aller. Essayez tout simplement. Croyez-moi, vous aimerez.

Outils pour une Production Plus Facile

Aussi, si j’ai pu parvenir à vous “vendre” les microformats, vous pourriez être ravi(e) de savoir qu’il existe quelques outils qui vous faciliteront la vie pour les implémenter (à l’inverse du codage à la main, sans mentionner le fait de se rappeler de toutes les propriétés/sous-propriétés) :

  • Le hCalendar Creator est un formulaire qui génère du marquage hCalendar et les propriétés/sous-propriétés que vous lui proposez. Copiez et collez. Ne pourrait pas être plus simple.
  • Pour Textpattern, vous disposez du plugin pnh_mf et de JMC_Event_Manager pour ajouter du contenu microformaté à votre site/blog Textpattern.
  • WordPress a aussi quelques plugins qui aident les auteurs web à ajouter des microformats à leurs blogs/sites WordPress : Structured Blogging (aussi disponible pour MovableType) et WP-Microformats.
  • Grâce à WaSP, il existe une extension microformats pour Dreamweaver conçue pour DW 8, MX et au-dessus.
  • Le Conference Schedule Creator vous aide à créer un programme complet de conférence avec tous les événements marqués avec hCalendar.

A venir en 5ème Partie

Voilà c’est tout ce que j’ai pour hCalendar (est-ce assez ?).

La prochaine fois, dans Parvenir à la Sémantique avec les Microformats, 5ème Partie, je vous emmènerai en détail sur le microformat hAtom pour le contenu syndiqué comme les billets de blogs.

D’ici là …

Share the Love

Note : Cette traduction s’inscrit dans la poursuite de travaux visant à mieux faire connaître les microformats. L’article original d’Emily Lewis a été publié le 1er octobre dernier sur son blog personnel. Seul le lien original fait référence. Vous pouvez aider à raffiner cet article en éditant directement le code posé sur la page miroir de mon wiki-personnel. Merci d’avance. xtof

21 September 2008

Emily Lewis : “Parvenir à la Sémantique avec les Microformats, 2ème partie - XFN”

Filed under: microformats, ressources, traduction — Christophe Ducamp @ 8:06

Dans la première partie de cette série, j’ai expliqué différentes implémentations du microformat rel sur A Blog Not Limited. Tout en expliquant rel-me, j’ai rapidement abordé le microformat XFN.

Il est maintenant temps de passer un peu plus de temps sur ce microformat très cool, qui fût en outre l’un des premiers.

Mettre un Visage Humain sur les Liens

Créé par le GMPG, le XHTML Friends Network est un moyen étonnamment simple et décentralisé de représenter les relations humaines en utilisant l’attribut rel dans les liens(<a>).

Le concept est identique à ce que je décrivais dans la Première Partie pour les relations fondées sur les liens :


<a href="http://twitter.com/emilylewis"
rel=”me”>Twitter</a>

Dans cet exemple, l’ajout du rel="me" indique que le lien de destination (href) fait référence à une page à mon propos (ou une page dont je suis responsable).

Le microformat XFN prend cette référence “humaine” pour les relations fondées sur les liens bien plus profondément que ce que j’ai déjà discuté.

Nous Sommes Tous Connectés

XFN pousse le concept du rel-me au delà de l’identification personnelle de l’individu pour aller vers les relations sociales entretenues par une personne. Vous ajoutez simplement plusieurs valeurs qui décrivent ces relations à l’attribut rel d’un lien.

Par exemple, je fais souvent référence dans mes articles de blog à mon ami et patron, Ian  :


<a href="http://www.iso-100.com/"
rel=”met colleague co-worker friend”>
Ian Pitts</a>

Dans cet exemple, j’ai ajouté rel="met colleague co-worker friend au lien faisant référence à son blog personnel. Les valeurs rel indiquent que :

  • J’ai rencontré (met) Ian en personne.
  • Ian est un confrère (colleague), ce qui veut dire que le considère comme un pair avec des intérêts et talents similaires.
  • Ian est mon boss et par conséquent un collègue (co-worker).
  • Je considère Ian comme mon ami (friend) (il a de la chance, non ?).
Comment Sommes Nous Connectés

La spécification XFN fournit des valeurs de relation qui sont volontairement simplifiées.

Amitié/Familiarité

Seule une valeur peut être utilisée dans cette liste :

  • friend : varie selon les définitions personnelles. C’est fondamentalement le plus haut niveau d”intimité” dans la catégorie de familiarité.
  • acquaintance : induit une familiarité mutuelle.
  • contact : quelqu’un avec lequel vous avez l’information de contact.
Physique

met indique quelqu’un que vous avez rencontré en personne. Peut exister indépendamment de toutes les autres valeurs.

Professionnel

Une ou plusieurs de ces valeurs peuvent être utilisées :

  • colleague : quelqu’un avec des intérêts et/ou compétences similaires aux vôtres ; un pair.
  • co-worker : quelqu’un avec qui vous partagez un employeur.
Géographique

Seule une de ces valeurs peut être utilisée :

  • co-resident : quelqu’un avec lequel vous partagez une adresse de rue.
  • neighbor : une référence géographique plus étendue, généralement quelqu’un qui vit près de chez vous mais pas dans la même rue.
Familial

Seule une de ces valeurs peut être utilisée :

  • child : quelqu’un dont vous êtes le parent, que ce soit biologique ou adoptif.
  • parent : quelqu’un qui vous a enfanté, que ce soit biologique ou adoptif.
  • sibling : quelqu’un avec qui vous partagez un parent, une fois de plus biologique ou adoptif, tout comme à travers le mariage.
  • spouse : quelqu’un avec lequel(le) (ou sentez que vous êtes) marié(e), que ce soit légal ou non.
  • kin : tout proche de vous, que ce soit par le sans, le mariage ou l’adoption.
Romantique

N’importe laquelle ou toutes ces valeurs peuvent être utilisées :

  • muse : quelqu’un qui vous inspire.
  • crush : quelqu’un vers lequel vous êtes attiré(e), mais dont les sentiments peuvent ne pas être réciproques ou même savoir que vous existez.
  • date : quelqu’un avec qui vous sortez régulièrement.
  • sweetheart : une personne avec laquelle vous êtes intime sur le plan émotionnel et/ou physiquement, et vers laquelle vous êtes engagé(e).

Du fait de ma propre confusion quand j’ai commencé cette tentative, j’ai pressenti que cela pouvait valoir la peine d’expliquer la valeur muse. Même si elle existe dans la catégorie romantique, c’est parti d’une perspective comparative en relation avec le rationnel. L’inspiration n’est pas rationnelle, de ce fait elle est romantique.

J’insère fréquemment des liens vers quelques-uns de mes héros de l’industrie (Jeffrey Zeldman, Eric Meyer et Jason Santa Maria, pour n’en nommer que quelques-uns). Et pour tous, j’insère rel="muse".

En aucune façon, ceci n’indique une relation romantique. J’admire tout simplement (et profondément) leurs travaux et les suit souvent pour de l’inspiration.

Et juste un aparté personnel : j’ai trouvé les descriptions de ces valeurs romantiques extrêmement drôles et amusantes.

Identité Personnelle

me indique un lien vers vous-même à un endroit différent (href).

C’est l’unique “relation” qui existe d’elle-même et reste exclusive de toutes les autres valeurs de relation.

J’espère que c’est évident, mais au cas où ce n’est pas considéré simplement que même si vous pressentez que vous êtes un ami de vous-même, déclarer la valeur friend est redondant. Tout comme met et toutes les autres. Vous n’avez tout simplement pas besoin d’elles et elles ne sont pas valides.

Délibérément Simple = Efficace

Même moi, en tant que personne très pointue sur le détail, je peux apprécier la simplicité et l’efficacité de ces valeurs. Plutôt que de débattre pour savoir si quelqu’un est, par exemple, un superviseur ou un subordonné, j’accepte simplement que co-worker soit une valeur plus large qui englobe les deux.

Cela vaut la peine de mentionner qu’il n’existe pas d’ordre spécifique qui ait besoin d’être suivi quand vous utilisez ces valeurs.

En outre, la réciprocité dans ces valeurs n’est pas obligatoire. Ainsi, si vous faites référence à une personne en tant que friend et qu’elle fait référence à vous en tant qu’acquaintance, ce n’est pas un problème (à moins que vous ne souffriez extrêmement d’un manque d’estime de vous-même et le preniez personnellement).

Spécifier un Profil

En plus de déclarer les valeurs rel sur les liens vers quiconque que vous connaissez, le GMPG recommande que vous laissiez aussi les navigateurs et moteurs de recherche savoir que vos pages supportent XFN en spécifiant le profil XFN dans l’en-tête <head> des pages avec des liens de relation XFN.

En ce qui me concerne, j’ai choisi de déclarer le profil de toutes mes pages par que mon <head> est maintenu dans un fichier global include. Ceci me facilite la maintenance, en outre, au minimum le rel="me" apparaît sur toutes mes pages (dans les liens du pied de page vers mes pages profil Flickr, Delicious, iLike et Twitter ) :

<head profile=”http://gmpg.org/xfn/11″>

Dites-le au Monde

Le GMPG recommande aussi de faire savoir aux gens que votre site est “XFN-friendly”. Ils fournissent même un petit marqueur que vous pouvez ajouter sur votre site :

XFN Friendly

Personnellement, je ne suis pas très fan des boutons et badges. Je préfère une esthétique plus discrète. Mais je supporte vraiment l’effort, ainsi j’ai ajouté un lien XFN dans mon pied de page :


<a href="http://gmpg.org/xfn"
title="XHTML Friends Network Friendly">XFN</a>

lien XFN dans le pied de page A Blog Not Limited

Faites que ce soit Plus Facile pour Vous

Même si ajouter simplement un attribut et quelques valeurs aux hyperliens ne constitue qu’un tout petit effort, il existe quelques outils disponibles qui rendent le XFN plus facile à implémenter :

  • Créateur XFN 1,1 est une application web qui crée des liens avec les valeurs XFN propres et est disponible en plusieurs langues.
  • MT Blogroll 2.12 Manual est un plugin pour Movable Type qui vous permet de définir les relations XFN pour les liens dans la blogroll.
  • XFN Link Creator est un autre wizard qui crée des liens avec des valeurs XFN. Il vous permet aussi de spécifier le balisage du contenant, tout comme les valeurs title pour les liens.
  • WordPress Links Manager est configuré pour vous permettre de définir les relations XFN pour les liens de blogroll.
  • WP Microformatted Blogroll 0.2 est un plugin WordPress qui produit des liens microformatés annotés sur votre blog.
  • rel-lint est un bookmarklet JavaScript qui vérifie les valeurs XFN connues et marque celles qu’il ne reconnaît pas.

Le Web Sémantique

Je sais que je l’ai déjà dit encore et encore (et ce n’est pas près de se terminer) : la sémantique est l’un des bénéfices de base des microformats, et XFN n’y fait pas exception.

L’usage ajoute de la structure et du sens au contenu, le rendant à la fois lisible par les humains – tout comme par les machines. Et même encore mieux, il le fait en utilisant des standards existants pour le marquage et les données. Brillant !

Les microformats nous emmènent vers un pas plus proche du Web Sémantique visionné par Tim Berners-Lee.

Le Web Social

Tout comme la sémantique seule me donne raison d’implémenter les microformats sur ce blog, je réalise que ce ne peut être suffisant pour certaines personnes. Pour ces personnes, je soupçonne que les aspects “sociaux” de XFN peuvent être plus importants.

Recherche Sociale

Rubhub est un moteur de recherche sociale où vous pouvez proposer votre site, et il est indexé et comparé à d’autres sites dans l’index rubhub pour identifier n’importe quelles relations sociales.

Une fois indexé, vous pouvez voir les résultats sociaux de votre site, y compris les autres sites liés à votre identité (via rel="me") et les sites des personnes qui vous référencent (y compris comment elles vous référencent).

Visualisations

XFN Graph crée des diagrammes en étoile sur la manière dont les sites se relient les uns aux autres, fournissant une représentation visuelle des relations sociales entres les auteurs de site/blog. A partir de ça, vous pouvez voir comment les personnes se connectent aux autres et trouver de nouvelles personnes qui partagent des intérêts similaires aux vôtres.

Connectivité

En utilisant XFN, l’API Social Graph de Google facilite le fait de trouver des amis dans de nouveaux endroits sur le web.

Son application de démo My Connections, par exemple, vous montre comment vous êtes connecté(e) à d’autres personnes. Voici un aperçu des résultats provenant de A Blog Not Limited”

API Social Graph My Connections pour A Blog Not Limited

Listes d’Amis

Il existe beaucoup de sites, particulièrement les sites de réseaux sociaux, qui supportent le marquage XFN sur les listes d’amis/contacts. Tant Twitter et LinkedIn, par exemple, ajoutent rel="contact" à leurs listes de liens des “suiveurs” et des contacts.

Pour aller un cran plus loin, plusieurs sites publient des listes d’amis hCard+XFN, qui peuvent être utilisées pour importer/s’abonner à d’autres sites qui supportent hCard+XFN. (Je couvrirai le microformat hCard en détail dans la partie 3 de cette série.)

Ceci pose les fondations pour permettre aux utilisateurs de modifier l’information de réseau social sur un site et faire que les autres sites soient automatiquement mis à jour.

Consolidation d’Identité

Comme je l’évoquais dans la Partie 1, XFN est essentiel pour la consolidation d’identité.

Sites de Réseaux Sociaux

Par exemple, beaucoup de sites de réseaux sociaux associent rel="me" aux liens vers les pages de profil, que ce soit Flickr, Twitter, LinkedIn et d’autres encore. Ainsi, là où n’importe quelle page réclame l’autre, l’identité divisée est consolidée.

ClaimID

Il existe aussi des services de consolidation d’identité qui utilisent XFN. claimID, par exemple, vous permet de régler manuellement un profil avec toutes vos identités en ligne consolidées sur une page, chacune d’entre elle pouvant être annoté avec rel="me". Voici un aperçu de mon profil claimID avec des liens qui englobent le microformat rel-me :

profil d'emily sur claimid

Un avantage supplémentaire de régler un profil claimID est que cela vous offre une OpenID.

OpenID est un système ouvert, décentralisé et libre pour l’identité digitale centrée sur l’utilisateur. Elle utilise les technologies web existantes pour transformer les identités digitales existantes (telles qu’un blog, un flux de photos, etc.) en un compte qui peut être utilisé sur des sites supportant les connexions OpenID. Ceci n’a bien sûr pas de rapport avec la discussion XFN, mais c’est vraiment cool.

Plaxo

Il existe aussi le Graphe Social Ouvert de Plaxo, qui comprent un crawler qui démarre par une URL que vous saisissez et cherche les liens rel="me". Il balaye ensuite ces liens, jusqu’à ce qu’il ne trouve plus de liens à suivre.

Il cherche aussi les liens bidirectionnels pour établir une “déclaration vérifiée” que c’est bien la même personne dans les deux endroits (href). Voici un aperçu des résultats du crawler pour A Blog not limited :

Plaxo Open Social Graph results for A Blog Not Limited

Le carnet d’adresses en ligne de Plaxo et le service de réseau social supporte aussi XFN en ajoutant automatiquement rel="me" à n’importe lesquels des sites personnels que vous ajoutez à votre profil. Chacun des liens “Emily on the Web” provenant de mon profil Plaxo a le microformat rel-me annoté :

Emily's Plaxo profile

Même l’API Social Graph de Google comprend une application de démonstration, Site Connectivity, qui vous montre votre identité consolidée en listant les sites qu’elle sait de vous, tout comme ceux qu’elle pense pouvoir être de vous. Voici un aperçu des résultats que j’ai obtenus pour A Blog Not Limited :

Social Graph API Site Connectivity for A Blog Not Limited

Un peu de Style

Aussi abordé dans la Partie 1, vous pouvez utiliser les sélecteurs d’attribut CSS pour ne styliser que les liens comportant des valeurs spécifiques rel.

Par exemple, mettons que vous vouliez tirer profit des icônes microformats XFN, vous utiliseriez des sélecteurs d’attribut pour déclarer :


a[rel~="friend"]:before {content: url(xfn-friend.png);}

Dans les navigateurs supportant la spécification CSS 2.1 (qui ne doivent pas être cette merde de navigateur IE6), ceci pourrait s’afficher comme suit :

exemple de lien ami XFN

A venir en Partie 3

Ceci clôture mon billet sur XFN. Parvenir A la Sémantique avec les Microformats, 3ème Partie traitera du microformat hCard.

Restez branché …

Note : Cette traduction s’inscrit dans la poursuite de travaux visant à mieux faire connaître les microformats. L’article original d’Emily Lewis a été publié le 17 septembre dernier sur son blog personnel. Seul le lien original fait référence. Vous pouvez m’aider à raffiner cet article en éditant directement le code posé sur la page miroir de mon wiki-personnel. Merci d’avance. xtof

1 May 2008

C’est quoi les Monkeyformats ?

Filed under: implémentation, microformats, ressources, traduction — Christophe Ducamp @ 0:59

Ce ne serait pas élégant si les navigateurs intelligents pouvaient reconnaître les adresses, les dates et autres données structurées figurant sur les pages web ? Et ce même quand les données ne sont pas structurées ? (tout comme le fait l’application Mail d’Apple qui reconnaît les dates et les heures en fournissant à l’utilisateur lambda une interface pour faire des choses simples comme savoir les ajouter à son agenda)…

Et bien disons qu’avec les monkeyformats d’Albert de Klein, on fait juste là un (grand) pas en avant. Amusez-vous par exemple à extraire les hCards sur les Pages Jaunes : essayé à l’instant sur une simple requête “Aston Martin” à Paris et ça fonctionne !. Bravo et merci Albert. - xtof

P.S. Ce qui suit en-dessous est une traduction en cours publiée sous FairUse de la page monkeyformats.org, seul lien de référence.

monkeyformats

Albert de Klein : C’est quoi les Monkeyformats ?

Les Monkeyformats sont des scripts utilisateurs Greasemonkey qui ajoutent un balisage sémantique dans le navigateur Firefox aux sites web ne supportant pas encore les Microformats. Vous pouvez alors exécuter des actions sur ces Microformats avec Operator ou toute autre extension similaire.

Vidéo Monkeyformats

Pourquoi avons-nous besoin des Monkeyformats ?

L’adaptation des microformats peut utiliser un boost dans le monde car cela fait du Web un plus bel endroit. Les Monkeyformats permettent aux utilisateurs d’expérimenter les avantages des microformats sur des sites qu’ils utilisent tous les jours mais qui manquent à cette heure de balisage sémantique, et sans les contraindre à attendre que ces sites les ajoutent. Même si nous n’en sommes encore qu’aux prémisses, il existe déjà plusieurs monkeyformats disponibles qui ajoutent des microformats à quelques répertoires téléphoniques nationaux en Europe, aux services de billetteries, etc.

Exemple de Monkeyformat

hCard

Directory Pays Installation Auteur
Yellow Pages (Nouveau !) US Installer Albert de Klein
Pagine Bianchi Italie Installer Albert de Klein
British Telecom Royaume-Uni Installer Thom Shannon
Das Telefonbuch Allemagne Installer Albert de Klein
De Telefoongids Pays-Bas Installer Albert de Klein
Pages Jaunes France Installer Albert de Klein

hCalendar

Event listing Country Installation Auteur
Ticketmaster.co.uk Royaume-Uni Installer Albert de Klein
Lippupalvelu.fi Finlande Installer Albert de Klein
Billettservice.no Norvège Installer Albert de Klein
Ticnet.se Suède Installer Albert de Klein
Billetnet.dk Danemark Installer Albert de Klein
Ticketmaster.nl Pays-Bas Installer Albert de Klein

Comment puis-je utiliser ces Monkeyformats ?

Tout d’abord, vous devez installer à la fois l’extension Greasemonkey et l’extension Operator dans votre navigateur Firefox. Puis vous pouvez essayer quelques-uns des scripts utilisateurs provenant du répertoire Monkeyformat en les installant et en visitant les sites web pour lesquels ces microformats ont été écrits. Dans la plupart des cas, les signaux d’Operator devraient s’allumer dans la barre d’adresses après que vous ayez éxécuté une recherche indiquant que les microformats ont été ajoutés à la page. Puis vous pouvez par exemple envoyer ces hCards dans votre carnet d’adresses ou sur votre téléphone mobile.

Comment je crée mes propres microformats ?

Si vous voulez créer vos propres microformats, jetez un coup d’oeil aux scripts utilisateurs dans le repository. La plupart d’entre eux utilisent une combinaison de requêtes Xpath et de remplacements d’Expressions Régulières pour appliquer les microformats aux pages. Pour quelques sites c’est relativement facile d’appliquer les classes des microformats car tous les éléments sont en place et vous n’avez qu’à ajouter les classes appropriées. Dans la plupart des cas, vous devrez ajouter des éléments supplémentaires autour des adresses, des codes postaux ou des localités parce qu’ils ne sont pas entourés par des éléments à cette heure pour s’appliquer aux classes. Parfois, vous devrez même ajouter quelques éléments imbriqués pour rendre possible la structure des microformats.

Si vous créez des monkeyformats, partagez les S.V.P. avec d’autres dans le repository Userscripts.org. N’oubliez pas d’ajouter le tag monkeyformats pour faciliter la recherche.

Qu’est-ce que Greasemonkey ?

Greasemonkey est une extension pour le navigateur Firefox qui peut modifier l’apparence des sites web grâce à Javascript du côté client.

Qu’est-ce qu’Operator ?

Operator est une extension pour Firefox qui vous permet d’exécuter des actions sur les Microformats grâce à JavaScript.

C’est quoi les Microformats?

Les microformats sont un ensemble divers de spécifications qui vous permettent d’ajouter un balisage sémantique dans les pages HTML en utilisant des attributs de classes pré-définis.

Pour en savoir plus

Le concept complet des Monkeyformats est vraiment tout nouveau. Pour le moment, (et si vous savez lire le néerlandais) vous pourriez aussi jeter un oeil sur l’article que j’ai écrit pour Naar Voren, un magazine hollandais pour les travailleurs du web, dans lequel j’ai présenté le concept des Monkeyformats pour quelque information plus approfondie.

Amusez-vous avec le Web Sémantique !

Albert de Klein

6 April 2008

Les Microformats au WASP café

Filed under: microformats, événements — Christophe Ducamp @ 8:31

A vos agendas !

WASP Café : Atelier Web Sémantique

Ce sera le jeudi 17 avril 2008 de 19h30 à 21:00

Où ?

IESA 5, rue Saint-Augustin - 75002 Paris (GPS : 48° 52′ 8” N, 2° 20′ 16” E)

L’atelier sera animé par David Larlet et Frédéric de Villamil.

Ils nous feront découvrir ce que peuvent apporter ces outils (, , etc) et nous feront pénétrer dans l’univers du web sémantique.

Inscrivez-vous pour participer !

Microformats : Combler les Lacunes du HTML

Filed under: microformats, ressources, traduction — Christophe Ducamp @ 7:38

Traduction en cours d’un article paru dans SitePoint - Seul le lien original fait référence

Microformats - Combler les Lacunes du HTML

Dans cette référence, les sujets portent sur les standards (ou pour utiliser les termes du W3C, les “recommandations”) qui s’appliquent aux éléments et attributs du HTML/XHTML. Si vous les avez tous lus (dans ce cas, vous méritez une étoile d’or), il pourrait vous arriver de temps à autre de vous dire, “bon c’est bien fichu, mais comment puis-je baliser une adresse, comme celle où j’habite ?”. Ou peut-être que vous vous êtes posé la question “Comment devrai-je baliser quelque chose comme la date d’un évènement ?”. Si vous avez réfléchi à cela, alors vous avez déjà fait progresser mon scénario d’application des microformats. Mais qu’est-ce que les microformats et pourquoi devriez-vous vous y intéresser ?

Dans les saveurs actuelles du HTML et du XHTML, il existe un bon nombre d’éléments qui, dans l’environnement actuel, apparaissent comme étant complètement hors de propos. Par exemple, quand vous vous retrouvez à utiliser les éléments xmp ou tt. Je ne l’ai jamais fait. Également s’agissant des éléments semblant superflus et ayant été forgés par quelques scientifiques pour qui leur utilisation était limité en pratique, il semble vraiment qu’il y ait quelques omissions dans les spécifications (et par specs, je veux dire bien sûr “recommandations” - néanmoins la plupart des personnes normales font référence à elles en tant que specs !). L’exemple de l’adresse que j’ai éludé au-dessus est l’une de ces omissions.

Maintenant, pour ceux qui prêtent encore attention - et pour ceux qui ont dévoré les contenus de cette référence du début à la fin - on peut tout de même progresser à ce stade : “Ah, mais il existe un élément pour les adresses. Il s’appelle ‘address‘.” Mais hélas, vous faites fausse route. Un rapide retour à la référence pour address révélera que cet élément n’est pas utilisé pour baliser un endroit physique, mais qu’il est en fait réservé pour identifier la personne à contacter concernant une page Web et que par conséquent, il peut inclure une adresse e-mail ou un numéro de téléphone ou quelque chose de cet acabit. Si l’élément address est utilisé pour baliser un endroit (numéro, rue, localité, etc), il est en fait mal utilisé. Mais alors que devriez-vous faire ?

Entrez dans les Microformats.

L’idée derrière les Microformats est de combler ces lacunes existantes dans les standards actuels, tout en utilisant - et ceci est assez difficile - uniquement du HTML/XHTML standard et valide. Comment cela peut-il être possible ? En ajoutant à ces éléments standards un ensemble défini de valeurs d’attribut qui sont basées sur un standard pré-existant. Ainsi, si vous voulez par exemple baliser les informations de contact de quelqu’un, vous pouvez utiliser hCard, le microformat conçu à cette effet, qui est fondé sur le format plus ancien et standardisé de la vcard (l’usage de hCard sera entièrement décrit d’ici peu). Les différentes parties des informations de contact - nom de famille, prénom, localité, rue, etc. - sont toutes identifiées par un attribut de classe qui peut être appliqué à n’importe quel élément HTML ; vous pouvez aussi faire usage de ces noms de classe pour modifier le style.

Ce n’est pas dévoiler un secret très bien conservé que d’avancer que le mécanisme du Consortium du World Wide Web Consortium (W3C) peut vraiment s’enrayer, ce qui est très frustrant pour des développeurs Web, programmeurs et designers du monde entier. Néanmoins, avec les microformats c’est une autre histoire. Bien entendu, les ’standards’ pour les Microformats sont également révisés et validés par les pairs, mais cela se produit bien plus rapidement. Dans l’intervalle de temps durant lequel CSS3 a été discuté et mis à disposition par le W3C, pour ne garder à cette heure qu’une recommandation dans les travaux, la totalité du concept des microformats était né, et plusieurs standards définis, avec bien plus de microformats en discussion et approchant de leur version finale.

Pour le dire vite, si un mécanisme pour marquer le HTML pour un objectif spécifique doit être accepté (et, on l’espère, utilisé) comme un microformat, il a besoin de satisfaire tous ces points :

  • Le Microformat doit résoudre un problème (et non pas créer quelque schéma fantaisiste pour baliser quelque chose qui existe déjà ou ne le garantit vraiment pas).
  • Il devrait démarrer aussi simplement que possible.
  • Il devrait être conçu d’abord pour les humains, ensuite pour les machines.
  • Il devrait réutiliser des standards existants et largement adoptés (par ex. IETF).
  • Pour finir, il devrait encourager des développements/services décentralisés (par exemple les services d’agrégation).

Pour vous donner une idée sur la manière dont les microformats peuvent offrir un avantage à l’utilisateur, prenons un exemple du vrai monde chez Google.

Google Maps et hCard

Quand Google a ajouté du contenu microformaté à ses résultats de recherche, ç’aurait été tout sauf invisible pour la plupart des utilisateurs réguliers que quelque chose de nouveau ait été ajouté. Cela a probablement pris très peu de temps à leurs développeurs d’ajouter les attributs de classe supplémentaires aux résultats de recherche, aussi cela n’aura pas été un effort inutile. Mais pour bon nombre de personnes - moi y compris - ajouter le microformat hCard a offert une excellente nouvelle fonctionnalité. Pour que cette fonctionnalité opère, cela requiert l’ajout d’une barre d’outils dans le navigateur qui peut alors détecter la présence de microformats sur une page. Personnellement j’ai essayé l’extension Tails (pour Firefox) et aussi l’extension Operator (aussi pour Firefox). En supposant que vous ayez ajouté ces barres d’outils, voici ce à quoi vous pouvez vous attendre au moment d’utiliser Google Maps pour chercher des restaurants locaux avec l’extension Operator :

  • Recherche Google Maps pour une Maison du Curry dans votre quartier
  • Les résultats apparaissent sur la carte avec des pointeurs que vous pouvez cliquer et aussi une liste en bas sur le côté gauche. (Normalement c’est là où votre interaction s’arrête et vous pouvez produire une note des détails du restaurant avant de téléphoner pour réserver une table.)
  • Operator vous notifie de la présence de Microformats en affichant l’une des icônes de la barre d’outils (qui était précédemment grisée)
  • Le fait de cliquer sur l’icône mise en valeur révèle la liste des Maisons du Curry trouvées, et vous pouvez ensuite exporter chacune d’elles individuellement - ou toutes en une fois - vers le carnet d’adresses de votre ordinateur.
  • Si votre téléphone mobile est couplé à votre ordinateur via Bluetooth – quelque chose que beaucoup de gens font pour synchroniser leurs contacts et agendas - vous pouvez alors mettre rapidement tous ces contacts sur votre téléphone mobile.

Il y a peu de temps, j’ai fait tout ce qui est décrit au-dessus à des fins de démonstration (une démonstration en ligne est disponible sur http://www.youtube.com/watch?v=Kjp4BaJOd0M), et il était possible de chercher les établissements et d’obtenir tous leurs numéros de téléphone et adresses sur mon téléphone en moins de 60 secondes. Je ne serai plus jamais à court de Maison du Curry si je devais me retrouver dans un cas de besoin urgent de Poulet Tikka Masal sans accès à un annuaire téléphonique ou à l’Internet, je peux d’ailleurs remercier les microformats d’avoir rendu cela possible.

Un autre outil qui vaut la peine d’être mentionné à ce stade est Optimus (http://microformatique.com/optimus/) qui n’est pas une extension navigateur mais un service basé sur le Web. Il fournit un mécanisme pour transformer le contenu sur une page qui a été balisé sous un Microformat vers un autre format, actuellement XML ou JSON. Ce serait un job supplémentaire d’ajouter un lien vers votre site Web dans une section qui est utilisé sur tout le site (par exemple un fichier inclus dans l’en-tête ou le pied de page) et de ce fait fournir des formats alternatifs pour tous vos contenus microformatés. Comme le dit la ligne savoureuse du site Web : “Maintenant votre site Web pourrait vraiment être votre API avec la beauté des microformats et la puissance d’Optimus.”

Microformats – Constamment en évolution

Du fait de la nature d’émergence rapide des Microformats (rapidité relative comparée au W3C, au moins !), il n’est pas possible de décrire tous les microformats disponibles. Le temps que ceci s’imprime, la liste aura probablement évoluée. Néanmoins cela vaut la peine de jeter un oeil sur quelques microformats spécifiques et sans surprise il s’avère que ce sont ceux qui existent depuis le plus longtemps du fait qu’ils aient été les premiers à être définis et qu’ils ont été les plus utiles pour l’implémentation. Pour une liste complète des microformats, allez sur le http://microformats.org/wiki. Si vous souhaitez vous impliquer dans la discussion et aider à former de nouveaux microformats, vous pouvez rejoindre la liste de discussion sur http://microformateurs.org/discussion/.

Les Microformats décrits par cette référence sont :

Pour démarrer, nous jetterons un oeil à la hCard – l’un des meilleurs exemples de Microformats paru du fait de son potentiel d’usages.

Dans cette partie :

  • hCalendar
    fournit un mécanisme pour baliser les évènements (date, heure, lieu, etc.)
  • hCard
    fournit un mécanisme pour baliser les informations de contact
  • hreview
    standardise une méthode pour les revues critiques de produit, service
  • XFN
    identifie la relation sociale des liens entre les pages Web
  • rel- Microformats
    fournit une relation supplémentaire concernant la destination du lien

2 April 2008

La dernière quinzaine en microformats - du 17 au 31 mars

Filed under: cettesemaineenmicroformats, microformats — Christophe Ducamp @ 15:10

‘Cette semaine en Microformats’ est un résumé de l’activité des microformats provenant des listes de diffusion, du wiki, des évènements et du plus grand web.

Sur le wiki

  • De nouveaux profils ont été produits pour plus de microformats. Ceux-ci peuvent être posés en option dans l’élément head d’une page pour indiquer l’utilisation d’un microformat particulier.
  • Nous avons réorganisé la todo liste sur le wiki, ainsi il devrait être plus clair de voir sur ce que nous sommes tous en train de travailler. 

Sur la Liste de discussion µf

Sur la liste de discussion µf-New

  • Les travaux en cours sur hListing sont en train de reprendre — Ouverts à tous ceux intéressés pour baliser des petites annonces et listes de produits

Sur le web

Ce bulletin a été assemblé avec les contributions de Frances Berriman, Toby Inkster, Tantek Çelik et Gerald Bauer. Pour contribuer au prochain numéro, modifiez svp la page wiki :”this-week-2008-03-31″. Merci d’avance !

6 January 2008

Tantek Çelik : “Construire du contenu textuel ouvert sur le HTML”

Filed under: microformats, microformats.org, ressources, traduction — Christophe Ducamp @ 21:56

Le Web est de loin le médium le plus victorieux dans l’histoire pour la publication et le partage de contenu ouvert. Concentrer les efforts pour promouvoir et permettre le contenu ouvert sur le Web d’abord et avant tout (plutôt que disons, des entrepôts de données propriétaires et des bases de données institutionnelles) a l’effet le plus fort pour habiliter le contenu ouvert en général.

Le contenu textuel sur le Web est dominé par le HTML (y compris le XHTML bien sûr) du fait de sa diffusion large et sa facilité de publication. Plus nous sommes capables d’utiliser le HTML comme un transporteur commun de morceaux d’informations de plus haute fidélité, plus nous hissons et enrichissons la publication et le partage de contenu textuel.

De ce fait, les microformats sont développés en ligne avec les pratiques et principes du “bon vieux pur HTML sémantique” (), ce qui veut dire, comme des extensions sémantiques valides vers le HTML. Le HTML sémantique en lui-même permet le partage de contenu ouvert avec des titres, des paragraphes et listes, etc. Les microformats se construisent sur cette fondation, plutôt qu’en réinventant (par ex. réutilise le HTML pour les listes et les listes imbriquées pour les structures, plutôt que d’inventer de nouvelles balises ou vocabulaire) et ne s’étendent seulement que pour de la sémantique communément publiée sur le HTML, comme celle de , des , des , du , etc.

Ces extensions peuvent être utilisées pour publier des documents contenant juste un type d’information pour une consommation par des applications spécifiques-par-domaine (par exemple une liste de contacts pour les carnets d’adresses, ou une liste d’évènements pour les outils de gestion d’agenda), ou beaucoup de types inter-mixés et imbriqués, embarqués dans un plus grand document qui les relie tous ensemble dans un contexte ayant du sens comme dans le cas d’un curriculum-vitae, signifiant que cet ensemble serait perdu si chaque type de donnée avait été isolé, retiré de son contexte et publié dans son propre silo de format pour un objectif spécifique.

Que ce soit de simples assemblages ou des documents composés, en construisant sur le HTML, tous ces usages fonctionnent bien non seulement pour eux-mêmes, mais embarqués et mélangés avec du contenu web existant, d’une façon qui soit bien comprise par les auteurs web, tout comme par les navigateurs et moteurs de recherche. Ceci contraste profondément avec les . Pour finir, c’est cette étendue très large, pour le contenu existant, les auteurs, les applications, les services de recherche et une variété de terminaux, qui rend le contenu textuel construit sur le HTML même plus ouvert vu d’une perspective pratique.

Traduction en cours. Source microformats.org - Seul le lien original fait référence. Vous pouvez aider à raffiner le contenu en éditant le code posé sur la page-miroir de mon wiki de travail. Merci.- xtof

Tantek Çelik : “Le Contenu ouvert dépend des standards ouverts”

Filed under: microformats, microformats.org, traduction — Christophe Ducamp @ 21:40

Creative Commons (CC) a ouvert la voie à une large prise de conscience du besoin et de la valeur de la publication et du partage du contenu ouvert. En fournissant un ensemble de licences qui laisse les auteurs clairement choisir comment et sous quelles conditions produire leurs contenus librement disponibles, CC l’a aussi facilité.

Le contenu ouvert est dépendant des formats utilisés pour le publier sur la façon dont il est vraiment “open”. Le contenu ouvert publié dans un format propriétaire supporté uniquement par une application propriétaire d’un vendeur-unique est uniquement aussi ouvert que le vendeur-unique choisit de le faire. Par exemple, le contenu ouvert publié dans et publié dans son par défaut n’est pas “ouvert” pour les utilisateurs Macintosh (même les convertisseurs ont des problèmes). Un tel contenu ouvert est en fait maintenu en otage par l’unique application (et l’unique famille de plateforme qui la fait tourner) qui supporte ce format. En outre, si le vendeur unique dans ce cas choisit d’arrêter de supporter cette application unique, le contenu ouvert dans ce format devient alors du contenu mort. Plus à venir là-dessus dans un futur billet sur la “longévité de la donnée“.

Le contenu est le plus facilement et en toute confiance, largement partagé quand les formats utilisés par de tels contenus sont aussi ouverts que possible. Vraiment, les formats ouverts encouragent la quantité maximum de documentation (des billets de blogs syndiqués jusqu’aux livres publiés professionnellement), et implémentations inter-opérables de tels formats (allant de l’open source jusqu’aux propriétaires à buts lucratifs). J’encourage tout le monde à développer des standards ouverts pour les rendre aussi ouverts que possible, en adoptant les mêmes étapes que nous avons prises avec les microformats, et de ce fait permettant un meilleur contenu ouvert et la qui en découle.

Note : Ceci est une traduction d’un billet de Tantek publié le 3 janvier dernier sur le blog des microformats. Seul le lien original fait référence. Vous pouvez aider à raffiner cette première ébauche de traduction en éditant directement le code HTML sur la page miroir du wiki. Merci d’avance. xtof.

30 December 2007

Tantek Çelik : “Faire que les standards ouverts soient aussi ouverts que possible - licence domaine public exigée pour toutes les contributions sur le wiki des microformats”

Filed under: communauté, microformats, microformats.org, traduction — Christophe Ducamp @ 13:43

Aujourd’hui nous changeons le microformats wiki pour exiger que toutes les contributions soient placées dans le domaine public.Ceci veut dire que toute page créée, ou tout contenu ajouté sur le wiki microformats soit désormais placé dans le domaine public pour une réutilisation maximale.

Nous prenons ces mesures pour faire que les standards ouverts soient aussi ouverts que possible.

Il y a 5 mois de ça, Rohit Khare présentait la déclaration Bénévole de Domaine Public sur le wiki microformats qui a rapidement été adoptée par tous les administrateurs et la majorité des contributeurs actifs. Le résultat final est que, la plupart des contenus sur le wiki microformats, y compris plusieurs microformats en eux-mêmes ont déjà été placés dans le domaine public.

Que pouvez-vous faire immédiatement pour aider ?

  1. Utilisez et soutenez l’utilisation inter-opérable et l’implémentation de standards ouverts qui soient aussi ouverts que possible (y compris les microformats).
  2. Si vous êtes membre de la communauté des microformats, éditez votre page utilisateur pour y inclure le gabarit Creative Commons Public Domain Declaration (CC-PD declaration) afin de placer explicitement toutes vos contributions passées dans le domaine public. Si votre page utilisateur a déjà la déclaration bénévole de domaine public, mettez-la à jour pour utiliser la déclaration CC-PD.
  3. Encouragez les autres contributeurs microformats à ajouter aussi la déclaration CC-PD à leurs pages utilisateurs.

Avancer

Notre objectif est de placer tout le wiki microformats.org dans le domaine public. Pour faire ainsi, nous prendrons les mesures suivantes :

  1. Nous encourageons tous ceux qui ont contribué sur les microformats à placer explicitement leurs contributions passées dans le domaine public comme c’est indiqué au-dessus. Nous allons donner aux gens un mois (jusqu’à la fin du mois de janvier 2008) pour faire ainsi parce que nous aimerions conserver autant de contributions que possible. Ceux qui ne veulent pas publier leurs contributions posées sur le wiki microformats dans le domaine public peuvent simplement retirer leurs contributions, ou indiquer cette préférence-là sur leurs pages utilisateurs. Les auteurs prendront soin de jeter un oeil à leurs historiques de pages et retireront les contributions passées des utilisateurs qui ont indiqué cette préférence.
  2. A compter du 1er février, les éditeurs et auteurs initiaux des pages devraient commencer à nettoyer les pages du wiki microformats.org créées avant aujourd’hui des contenus de domaine non-public,
    et ensuite les proposer à la révision. Après les avoir révisées, un des admins ajoutera le gabarit Creative Commons Licence Domaine Public (licence CC-PD) au bas de la page.
  3. Quand toutes les pages seront nouvelles ou nettoyées, les administrateurs retireront le texte de la licence CC-PD au pied de page global du wiki, indiquant de ce fait que tous les contenus du wiki sont dans le domaine public.

Inspiration

Nous en sommes là du fait de l’énorme travail que d’autres ont produit avant nous. Les blocs de construction suivants et les bons exemples qui suivent ont tous contribué et inspiré les mesures que nous avons prises aujourd’hui :

En adoptant le fait que le développement de standards ouverts soit dans le domaine public, nous espérons que d’autres corps de standards ouverts et que les communautés qui choisissent d’appeler leurs efforts “ouverts” soient encouragés pour faire de même par l’exemple que nous installons ici aujourd’hui.

L’importance du développement ouvert de standards pour les formats de données ne peut pas être surestimée. Les billets suivants développent plus en profondeur la façon dont les standards ouverts sont essentiels pour le contenu ouvert, la et la longévité des données.

Tantek Çelik

Contexte et Historique en Rapport

Note :Traduction en cours d’un billet de Tantek publié le 29 décembre dernier sur le blog des microformats. Seul le lien original fait référence. Vous pouvez aider à raffiner cette première ébauche de traduction en éditant directement le code HTML sur la page miroir du wiki. Merci d’avance. xtof.

3 November 2007

Comment générer une vCard avec hCard ?

Filed under: hcard, microformats, ressources, traduction — Christophe Ducamp @ 15:00

Une question de Cyril posée il y a quelques jours sur Twitter :

Est ce je peux générer une vcard avec les microformats ?

Naturellement oui et merci de ton intérêt pour les microformats mon cher Cyril. hCard utilise une représentation 1:1 des propriétés et valeurs du standard vCard en XHTML sémantique. Bonne occasion pour te formuler une réponse sous forme de traduction d’un billet publié initialement le 27 janvier 2006 par Jesse Skinner. En espérant que ces quelques mots pourront t’éclairer précisément pour insérer une hCard sur ton blog. Cette traduction est naturellement publiée sous fair-use et comme d’habitude, seul le lien original fait référence. (Pour raffiner le contenu, les microfomateurs sont invités à commenter et/ou se rendre directement sur la page-miroir du wiki pour éditer/corriger directement le contenu.) — xtof.

hCard

Pour continuer ma discussion sur les microformats, jetons un coup d’oeil à la hCard.
Le microformat hCard est un moyen d’identifier de l’information de contact dans le HTML. Les gens peuvent utiliser des outils pour regarder à l’intérieur du HTML et extraire cette information sous une vCard. La vCard est un standard pour une carte de visite électronique. Il existe un bon nombre de valeurs que vous pourriez attendre (nom, numéro de téléphone, organisation, etc.) hCard sait prendre ces étiquettes et les utiliser comme des noms de classes autour des données dans le HTML.

Voici les valeurs les plus communes que vous pouvez utiliser dans hCard (pour la liste complète, regardez le wiki) :

  • fn (formated name ou nom formaté)
  • nickname (pseudo)
  • url
  • email
  • tel (téléphone)
  • adr (adresse)
  • org (organisation)
  • etc…

Chaque hCard démarre à l’intérieur d’un bloc qui a class="vcard". Ainsi une hCard très simple pourrait ressembler à cela :


<div class="vcard">
<span class="fn">Christophe Ducamp</span>
<a class="url"
href="http://claimid.com/xtof">http://claimid.com/xtof</a>
</div>

Quelques-uns de ces types ont des sous-propriétés. Par exemple la valeur tel contient type et ‘value‘. De cette façon vous pouvez spécifier des numéros de téléphone domicile et professionnel. Le type ‘adr a beaucoup de sous-propriétés ((post-office-box, extended-address, street-address, locality, region, postal-code, country-name, type, value). Une adresse pourrait ressembler à cela :


<div class="vcard">
<div class="fn">Christophe Ducamp</div>
<div class="adr">
<span class="locality">Paris</span>,
<span class="country-name">France</span>
</div>
</div>

Les noms de classes n’ont pas à signifier quoi que ce soit dans votre page. Néanmoins, vous pouvez toujours en tirer profit pour styliser votre information de contact. Vous pourriez aussi les styliser dans votre Feuille de Style Utilisateur de votre navigateur, ainsi vous pourriez les trouver pendant que vous surfez sur le web.

Le standard hCard est très flexible. Peu importe sur quels tags vous placez les classes. Cela ne doit certainement pas être obligatoirement entouré entre des balises div. Vous pourriez simplement marquer votre information de contact comme ça vous chante, et puis emballer les données dans des tags span pour assembler les données ensemble. Par exemple, elle peut figurer dans un texte normal à l’intérieur d’un paragraphe :


<p class="vcard">
Mon nom est <span class="fn">Christophe Ducamp</span>.
Je vis à
<span class="adr"><span class="locality">Paris</span>,
<span class="country-name">France</span></span>.
Je travaille pour la
<span class="org">Caisse Nationale des Caisses d'Epargne</span>.
J'anime un blog pour le groupe des microformateurs sur
<a class="url" href="http://microformateurs.org/">
http://microformateurs.org/</a>.
</p>

Il existe déjà beaucoup d’outils et encore plus à venir. Si vous ne voulez pas installer un plugin navigateur, ou si vous vous voulez donner à tous les visiteurs de votre site un moyen de télécharger votre hCard sous une vCard, X2V est un service qui fait tout simplement ça. Faites simplement un lien vers :

http://suda.co.uk/projects/X2V/get-vcard.php?uri=[URL avec une hCard]

Par exemple, cliquez ici pour télécharger une vCard de cette simple hCard :

Mon nom est Christophe Ducamp. Je vis à Paris, France. Je travaille pour la Caisse Nationale des Caisses d’Epargne. J’anime un blog pour le groupe des microformateurs sur http://microformateurs.org/.

hCard, comme d’autres microformats est merveilleusement simple et déjà incroyablement puissant. Vous pouvez commencer dès maintenant avec très peu de travail, sans attendre que le standard soit massivement utilisé. Dès qu’il y aura plus de personnes en quête de hCards (et de votre information de contact), votre site web leur facilitera les choses.

Next Page »

Powered by WordPress