Le projet d'expérience démocratique est un projet de démocratie directe à grande échelle. Il a démarré il y a quelques années déjà mais il a du mal à décoller, en particulier par manque d'un logiciel adapté. En effet le projet nécessite un logiciel de vote électronique en ligne ayant des caractéristiques bien particulière comme le vote Condorcet, une délégation possible du vote, à tout moment possibilité de changer un vote, etc. J'avais écris un serveur et un client lourd (en OCaml) pour remplir ce rôle mais les développements ont stagné pour diverses raisons : manque de motivation de ma part, trop de choses encore à faire, client lourd trop compliqué à déployer et à maintenir, langage OCaml peu connu donc je suis le seul développeur sur le projet, etc.

Hors, très récemment, une nouvelle application est apparue, programmé par Jean-Marc Fauché : une implémentation des idées de demexp en technologie web. Plutôt que de partir de mon code, Jean-Marc redémarre de zéro en langage Python, en utilisant le framework web2py.

Les caractéristiques de web2py sont intéressantes :

  • un déploiement aisé des applications : on peut télécharger une application dans un serveur existant ou récupérer une application existante à partir d'un serveur ;
  • on peut développer l'application en ligne : base de données, modèles et vues (même si à mon avis ce n'est pas forcément très utile pour de grosses applications) ;
  • les rapports d'erreurs (exceptions) sont accessibles en ligne, par l'interface d'administration ;
  • le déploiement est hyper-simple : unzip web2py_src.zip && python web2py/web2py.py ;
  • web2py est organisé autour de l'architecture modèle-vue-contrôleur et incite à utiliser ce modèle ;
  • le système de template utilise le langage Python plutôt qu'un autre langage ad hoc ;
  • un système de traductions en ligne, là aussi par l'interface d'administration ;
  • la base de donnée est vue au travers d'objets Python et toute modification des descriptions de la base est répercuté sous forme de commandes SQL de mise à jour de la base ;
  • et bien sûr un soin tout particulier apporté au framework pour faire des applications web sûres par défaut.

En bref, web2py semble la plate-forme idéale de prototypage rapide d'applications web, améliorant les idées trouvées dans d'autres frameworks comme Django ou Ruby on Rail. Pour des développements longs et importants, je ne suis pas sûr qu'il soit totalement satisfaisant, les aspects dynamiques de Python ont leurs limites (qui ne connait pas le typage fort d'OCaml ne peut pas comprendre le sens de la vie ;-). Mais il faut reconnaître a développé en quelques semaines une application qu'on peut tester et facilement déployer.

J'ai installé un dépôt Mercurial pour consulter le code de Jean-Marc. Si vous voulez tester son code, sa dernière version publiée est utilisable sur ce site temporaire : http://bentobako.org:8000/Demexp/.

En guise de conclusion, l'expérience démocratique semble redémarrer et on ne peut que s'en réjouir.