ubuntu_webdev-fr AT listes.ubuntu-fr.org
Objet : Liste de discussion autour des sites webs *buntu-fr.org
Archives de la liste
- From: Olivier Fraysse <olive AT picapo.net>
- To: ubuntu_webdev-fr AT listes.ubuntu-fr.org
- Subject: [[U_webdev-fr] ] Stage de développement Ubuntu-fr de cet été
- Date: Mon, 17 Oct 2011 11:17:53 +0200
Je fais suivre ici un mail de snip, à propos du stage de devweb ubuntu-fr effectué cet été.
-------- Original Message --------
Date: Mon, 17 Oct 2011 08:24:32 +0200
From: Snip
<snip AT ubuntu-party.org>
To:
admins AT ubuntu-fr.org
Cet été, un stage d'un mois a été effectué par deux étudiants en
informatique, pour le compte d'Ubuntu-fr. Ce stage avait pour
principal objet de développer de nouvelles briques logiciels pour le
site ubuntu-fr.org.
Nous (Link Mauve et moi) étions encadré par Olive et Quesh d'Ubuntu-fr.
Avec beaucoup de retard, nous vous présentons donc le travail effectué
durant ce stage.
Nous avions prévu de faire pleins de bonnes choses :
-- Un backend d’identification des utilisateurs ;
-- Création d'un SSO (Single sign-on) pour les sites ubuntu-fr, avec
notamment de l'OpenID ;
-- Une carte des utilisateurs ;
-- Une réécriture du planet, en remplacant Dotclear par un module Drupal ;
-- Script pour générer les pages de la doc en HTML pour permettre son
indexation par Lucene ou autre (pour Seeks) ;
-- Vidéos Ubuntu Party, l’encodage ayant déjà été effectué, juste
découpage et rajout des écrans titre.
Mais nous n'avons, évidemment, pas terminé ce que nous espérions
faire, principalement parce que la todo list était plutôt énorme par
rapport au temps disponible (un mois).
Nous avons utilisé redmine comme gestionnaire de tâches (au début :D).
Vous pourrez trouver des traces de notre travail dessus :
http://todo.ubuntu-party.org/projects/picapouf (il faut se connecter).
Une grande partie de nos essais ont été réalisés sur une machine
virtuelle sous Ubuntu 10.04 que nous avons mis en place au début du
stage : http://ubuntu-fr.kofuke.org/ .
Ce qui a été fait :
-- Le planet a migré vers Drupal (de Dotclear à Drupal version 7). Il
utilise maintenant le même Drupal que le www (et donc le même thème)
avec une base de données différente. La forme des anciennes URLs de la
pagination aurait due être conservé, mais ça n'a pas été le cas à la
mise en prod. Ce qui ne semble pas avoir vraiment dérangé les moteurs
de recherche.
-- En R&D, un script PHP qui génère les pages de la doc en html +
metadonnées a été ébauché pour une indexation par Apache Lucene/Solr.
(pas encore publié/versionné)
-- Et les bases sont posées pour « id » et les cartes d'utilisateur.
*** DbUsers ***
DbUsers est la base de données des utilisateurs. Elle n'est accessible
que par l'intermédiaire de l'API (écrite en JS). Cette API est
accessible en HTTP (donc en PHP, Python ou n'importe quel autre
langage). Il y a un système de hooks : des scripts seront donc
exécutés lors d'actions précises.
Nous avons utilisé :
-- nodejs et db-mysql, pour la communication avec la base de données
et la création d’un serveur HTTP pour exposer l’API ;
-- MySql pour stocker les informations. C'est ce qui est utilisé dans
le reste de l'infrastructure de Ubuntu-fr. Ce choix peut être changé
puisqu'aucune fonction spécifique à MySQL n'est exploitée. DbUsers
expose une API proche d’une base NoSQL, d’autres backends pourraient
être ajoutés dans le futur.
Plus de détails sur DbUsers :
http://ubuntu-fr.kofuke.org/DOCUMENTATION/dbusers.txt
*** Une première application : « id ». ***
Le nom a été choisi après de nombreuses propositions et c'est donc «
id » que nous avons choisi et ce pour plusieurs raisons. Il est court,
simple à prononcer (qu'on le prononce à la française ou à l'anglaise)
et fait référence à un mot français (identité, ou identifiant) à la
différence de « me ».
Cette interface Web est là pour permettre aux utilisateurs de se
connecter et de modifier les informations les concernant. C'est de
l'HTML / PHP classique qui fait juste appel à quelques fonctions pour
utiliser l'API (au lieu d'aller interroger une base de données MySQL
directement).
Nous avons utilisé :
-- Fat-Free Framework http://fatfree.sourceforge.net/ pour la partie
web (public). Nous avons utilisé la version 1.4.4, la version 2 est
sortie juste après. Pourquoi ? Léger, simple et sympa. Dépendance :
PHP 5.3.
-- Lightweight OpenID library http://code.google.com/p/lightopenid/
pour l'authentification OpenID (en php). Nous avons utilisé la version
0.4, la version 0.5 est sortie depuis. Pourquoi pas un autre ? Parce
que c'est le premier qu'on a trouvé qui a fonctionné du premier coup.
L’identification OpenID est effectuée dans ce frontend plutôt que dans
DbUsers.
*** Le SSO dans tout ça ? ***
Le SSO se réalise à l'aide des hooks. En se connectant sur « id », une
actions « authentification » est déclenchée et avec elle les scripts
qui doivent l'être : un pour la documentation et un pour le forum. Ces
scripts vont faire le nécessaire pour authentifier la personne sur la
doc et le forum en ajoutant les cookies qu'il faut ou en intervenant
sur les outils (doc ou forum en l'occurrence).
Note : nous n'avons pas tout de suite fait la distinction entre « id »
et « DbUsers » puisqu'on a besoin des deux pour que ça fonctionne
vraiment.
*** Une deuxième application : « carte » ***
L’une de nos tâches était de remettre en place une carte des
utilisateurs similaire à celle présente sur le forum il y a plusieurs
années. Évidemment, nous avons essayé au maximum de nous intégrer avec
l’infrastructure existante et celle que nous étions en train de bâtir,
DbUsers principalement. La prochaine étape sera d’intégrer « carte »
dans « id », pour voir la position de chaque utilisateur dans son
profil.
Choix techniques pour « carte » :
-- Pincaster, une base de données NoSQL simple adaptée à des requêtes
géographiques, qui peut également renvoyer des données arbitraires.
Les données sont pushées depuis DbUsers à chaque modification, pour ne
pas avoir de retard.
-- OpenStreetMap pour le fond de carte. Nous ne voulions pas utiliser
de service propriétaire comme Google Maps, et OSM était un choix tout
indiqué.
-- OpenLayers, un script JS permettant d’afficher une « carte
glissante » à partir de différentes sources de données, comme OSM, un
fichier GPX, ou autre.
-- Odopoi, script PHP servant de glue entre MySQL et OpenLayers, en
générant un fichier GPX sur requête. Le script de génération de GPX a
été modifié pour récupérer les données depuis Pincaster
Un petit schéma pour vous aider à comprendre :
http://ubuntu-fr.kofuke.org/schema-id-dbusers.jpg
Le code a été publié sur launchpad :
-- https://launchpad.net/ubuntu-fr-map
-- https://launchpad.net/ubuntu-fr-id
Le stage s'est terminé trop tôt pour que nous puissions proposer une
pré-prod pour ID et map.
Nous espérons pouvoir, dans les semaines ou mois qui viennent, mettre
tout ce travail en place, aux cotés des admins sys d'ubuntu-fr.
Des questions ?
--
Snip
- [[U_webdev-fr] ] Stage de développement Ubuntu-fr de cet été, Olivier Fraysse, 17/10/2011
Archives gérées par MHonArc 2.6.18.