Qu'est-ce donc que DOAP

  • DOAP est un vocabulaire RDF.
  • DOAP fait partie du Web Sémantique.
  • DOAP permet de décrire un Projet (Description Of A Project).

Je vais admettre ici que vous avez quelques connaissances sur RDF (au moins ce que c'est et à quoi ça ressemble). Sinon, je vous conseille de lire le paragraphe "Three Minute RDF" de Parsing FOAF with PHP. Pas besoin de connaître grand-chose au Web Sémantique pour comprendre DOAP et son utilité.

Décrire un projet en utilisant DOAP : les briques de base

DOAP définit un vocabulaire RDF, c'est-à-dire un ensemble de prédicats qui permettent de donner des informations autour d'un projet (des métadonnées).

Vous pouvez trouver sur ce blog la liste des propriétés et des classes DOAP traduites en français. Lisez-la en anglais dans l'article d'Edd Dumbill, créateur de DOAP.

Vous choisissez ensuite les propriétés que vous souhaitez utiliser, et utilisez la syntaxe RDF :

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:doap="http://usefulinc.com/ns/doap#">
 <doap:Project>
  <doap:name>DOAP-a-matic</doap:name>
  <doap:homepage rdf:resource="http://www.bonjourlesmouettes.org/doap-a-matic.php" />
...
 </doap:Project>
</rdf:RDF>

Le cas de doap:maintainer, doap:developper, doap:documenter, doap:translator et doap:helper

Là, c'est un peu plus compliqué : on ne peut pas se contenter d'inscrire entre les deux tags le nom de la personne : il faut recourir à la classe Person de FOAF. Ne vous affolez pas, un exemple et ça va passer :

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:doap="http://usefulinc.com/ns/doap#" 
xmlns:foaf="http://xmlns.com/foaf/0.1/">
 <doap:Project>
  <doap:name>DOAP-a-matic</doap:name>
  <doap:homepage rdf:resource="http://www.bonjourlesmouettes.org/doap-a-matic.php" />
  <doap:maintainer>
   <foaf:Person>
    <foaf:name>Vincent Tabard</foaf:name>
...
   </foaf:Person>
  </doap:maintainer>
...
 </doap:Project>
</rdf:RDF>

Vous pouvez ajouter autant d'informations que vous voulez entre les foaf:Person. Allez voir sur FOAF-a-matic pour créer votre FOAF (ne gardez que la partie entre foaf:Person). Je vous conseille de mettre au moins un nom (foaf:name), un e-mail (foaf:mbox ou foaf:mbox_sha1sum pour ne pas divulguer vos informations personnelles) et un lien vers un FOAF plus conséquent (<rdfs:seeAlso rdf:resource="..." />, en n'oubliant pas d'ajouter l'espace de nommage RDFS : xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#").

Ajouter un Repository

Votre projet a certainement un serveur CVS, SVN, BitKeeper ou GNU Arch. Vous pouvez donc l'ajouter à votre DOAP. Nous allons prendre l'exemple de CVS, un des plus connus (utilisé notamment par Sourceforge).

<doap:repository>
 <doap:CVSRepository>
  <doap:anon-root>:pserver:anonymous@cvs.example.org:/cvs/myproj</doap:anon-root>
  <doap:module>sources</doap:module>
  <doap:browse rdf:resource="http://cvs.example.org/viewcvs/myproj/sources/" />
 </doap:CVSRepository>
</doap:repository>

anon-root est la chaîne de connexion qu'il faut fournir à cvs (par exemple cvs -d :pserver:anonymous@cvs.example.org:/cvs/myproj checkout sources). module est le module sur le serveur CVS. browse est l'adresse HTTP où l'on peut consulter le contenu du serveur CVS.

Autre exemple : le serveur SVN de DOAP :

<doap:repository>
 <doap:SVNRepository>
  <doap:location rdf:resource="http://svn.usefulinc.com/svn/repos/trunk/doap/" />
  <doap:browse rdf:resource="http://svn.usefulinc.com/cgi-bin/viewcvs.cgi/trunk/doap/" />
 </doap:SVNRepository>
</doap:repository>

Comment créer un DOAP

Deux méthodes :

  1. Vous utilisez un éditeur de texte :)
  2. Vous utilisez DOAP-a-matic (un service offert par bonjourlesmouettes.org ;)

L'utilisation de DOAP-a-matic est assez simple : remplissez les champs que vous souhaitez voir figurer dans votre DOAP, ignorez les autres, soumettez le formulaire, et voilà !

Si vous choisissez d'utiliser un éditeur de texte, n'oubliez pas de valider votre fichier en utilisant le RDF Validator du W3C !

Comment lier mon projet et son DOAP

Il faut inclure un lien dans la page d'accueil de votre projet, en insérant entre les balises <head></head>] :

<link rel="meta" type="application/rdf+xml" title="DOAP" href="..." />

en n'oubliant pas de remplacer les points de suspension par l'URL de votre DOAP.

Quel est l'intérêt de DOAP ?

DOAP permet :

  • de faciliter la gestion d'un projet (gestion des développeurs, gestion des emplacements physiques).
  • de faciliter la recherche d'un projet (Web Sémantique) : il devient beaucoup plus facile de rechercher une information dans la masse de données du Web, puisque les données ont un format prévisible.
  • de faciliter la tâche des personnes qui souhaitent utiliser un projet.

Nous allons nous attarder sur ce dernier point. Quelle est l'utilité de DOAP pour un non-développeur ? Tout simplement faciliter le téléchargement et la compilation d'un projet, bref toutes les étapes rébarbatives avant de profiter d'un projet. Comment cela ? Imaginez un programme (nommons-le GimmeDOAP), qui vous permette d'automatiser la récupération des sources du projet, en n'ayant que l'adresse de la page d'accueil du projet...

$ ./gimmedoap.pl http://alexandria.sourceforge.net/
...
$ ls
alexandria gimmedoap.pl

Et voilà. Avec une seule commande, vous récupérez tout le contenu du serveur CVS du projet Alexandria. C'est truqué, ça n'existe pas ? Si, si. C'est même téléchargeable sur mon serveur (version 0.3, encore en test, vos remarques et vos commentaires --> balbinus@bonjourlesmouettes.org, c'est un "aperçu technologique" fonctionnel, comme on dit chez Mozilla). Comment ça marche ?

  1. Récupération de la page d'accueil du projet par la ligne de commande.
  2. Récupération du contenu de la page d'accueil (wget).
  3. Recherche d'un @@<link rel="meta" title="DOAP" type="application/rdf+xml" href="..." /> dans le code, récupération de l'URL du DOAP.
  4. Récupération du contenu du DOAP (wget).
  5. Extraction du <CVSRepository> ou <SVNRepository> (GimmeDOAP ignore les espaces de nommage, et trouvera ce qu'il cherche quelque soit l'espace de nommage).
  6. Appel de cvs ou svn, pour récupérer les fichiers.

Certains projets possédant un DOAP n'ont pas inclus de lien dans leur page. Vous pouvez également donner directement l'URL d'un fichier DOAP à GimmeDOAP :

$ ./gimmedoap.pl -doap http://svn.usefulinc.com/svn/repos/trunk/doap/examples/doap-doap.rdf
...
$ ls
doap gimmedoap.pl

On vient donc de récupérer le contenu du serveur SVN public de DOAP.

Poussons plus loin. Ne pourrait-on pas imaginer un système qui fasse tout, du début jusqu'à la fin, et que l'on n'ait plus qu'à lancer le programme ? Bien sûr que si.

$ ./configure
...
$ make
...
$ make install
...

Ceci est le prototype d'une installation *nix classique. Je ne vais pas la détailler ici, mais sachez que cela suffit généralement pour installer un logiciel. Beaucoup de sites vous expliquent le principe. Cela ne serait donc pas très compliqué. De toutes façons, ce principe existe déjà avec apt-get et rpm.