Rapport de Stage au Parti Pirate

Ce rapport est disponible au format PDF : rapport_stage_pp.pdf J'ai réalisé ce stage dans le cadre de la fin de premiere année en DUT MMI à l'IUT Montaigne.

Remerciements :

Merci à Nicolas Petitdemenange, secrétaire national du Parti Pirate, pour les démarches administratives, sa disponibilité et sa bienveillance.

Merci à Cedric Levieux, mon maître de stage, pour les connaissances transmises ainsi que l'application dans ses retours.

J'en profite aussi pour remercier ceux qui prennent le temps d'effectuer des retours sur les outils open-sources qu'ils utilisent, comme celui sur lequel j'ai travaillé.

Résumé / Abstract :

Pendant ce stage j'ai travaillé exclusivement sur un outil interne du Parti Pirate : Congressus.

Cet outil permet la gestion des réunions : convocation des membres, comptes rendus des séances, gestion de la prise de parole et votes en respectant la liquidité des votes.

J'ai d'abord travaillé sur l’internationalisation de l'outil, puis corrigé quelques problèmes et enfin ajouté une fonctionnalité : La publication des rapports de réunions.

Mots clef : Congressus, réunions, internationalisation, correction de bugs, comptes-rendus.

During this internship I worked exclusively on an internal tool of the French Pirate Party: Congressus.

It allows the management of meetings: convocation of members, reports of meetings, management of speaking and liquid voting.

First, I worked on the internationalization of the tool, then fixed some problems and finally added a feature: the publication of meetings's reports.

Keywords : Congressus, meetings, internationalization, bugfixes, reports.

Premiers contacts avec le code de Congressus :

Le stage a commencé par une explication de mon maître de stage de la structure du code de l'application.

Internationalisation

L'outil avait déjà la possibilité d'être affiché en deux langues : Anglais et Français. Mais certains textes n'étaient pas traduits.

Ma première mission a donc été de chercher dans le code du site, les parties non traduites. Je les ai remplacé par du code qui affichait le texte de la langue choisie.

Pour cela j'ai du remplir deux fichiers contenant tous les textes, un pour l'anglais, un pour le français.

Ainsi, la traduction dans d'autres langues est simplifiée. Il suffit de créer un autre ficer en remplaçant l'anglais ou le français par celle-ci.

I18N

Cela m'a permis de lire beaucoup de fichiers et ainsi découvrir la logique du code de l'application.

J'ai ensuite ajoutés deux fonctionnalités1 qui étaient sur la liste des améliorations voulues.

Publication des rapports de réunions

Les ajouts se sont déroulés en deux temps :

D'abord une discussion sur le fonctionnement, tant technique (PHP/Base de données) qu'ergonomique (UI/UX). Cette discussion prenait la forme de propositions qui étaient ensuite soumises à l'avis de mon maître de stage. Nous les affinions ensemble.

Ensuite je réalisais la fonctionnalité en plus ou moins d'étapes qui prenait la forme de Pull Requests2. A chaque Pull Request un retour était fait par mon maître de stage pour que je puisse les améliorer.

Cahier des charges

Après avoir discuté de la fonctionnalité « publication des comptes-rendus », nous avons élaboré son cahier des charges. Voici le chemin utilisateur définis :

  1. La réunion est close par le président ou le secretaire de celle-ci.
  2. Des boutons qui proposent d'exporter le compte-rendu apparaissent.

front_3_btn_discourse

  1. L'utilisateur choisis ensuite le titre du compte-rendu et l'endroit sur le forum où sera publié celui-ci.

publication

  1. Le compte rendu est publié par un utilisateur special, dédié à cette utilisation.

congressus_user

Pour ce qui est de l'interface elle est basée sur des fenêtre modales (ou "popup"). Celles-ci proposent plusieurs onglets. Quand c'est possible un onglet "exporter" est disponible.

Dans un soucis d’uniformité, nous en avons profité pour modifier le comportement des autres modes d’exportation existant déjà sur Congressus3.

Implementation de la fonctionnalité

J'ai commencé par lire une partie de la documentation de l'API[^8] de Discourse, qui est le forum utilisé par le PartiPirate. J'ai ensuite utilisé un fichier qui apportait des méthodes pour interagir avec Discourse. Après quelques tests dans une catégorie invisible pour les utilisateurs du forum j'ai commencé à ajouter la publication des comptes-rendus.

Une publication avec l'API Discourse sandbox_list

Cela s'est fait en plusieurs étapes. La première fût de publier automatiquement les comptes-rendus, toujours dans la catégorie de test. Ce changement était invisible aux yeux des utilisateurs, sur Congressus comme sur Discourse.

J'ai ensuite modifié l'apparence des formats d'exportations qui existaient déjà, pour qu'ils soient dans des fenêtres modales.

front_3_btn_sharefront_pdf_modal_front

Enfin pour pouvoir ajouter la possibilité aux utilisateurs de publier eux-mêmes le compte-rendu, Congressus devait :

403

Une fois cela fait4 la fonctionnalité était disponible !

S'en sont suivies quelques améliorations, comme charger uniquement ce qui était utile, allégeant ainsi l'utilisation de la connexion du serveur et de l'utilisateur5 ou ajouter dans l'interface d'administration du site les catégories où la publication est possible6.

Portée de mon stage

Ce stage m'aura permis de découvrir beaucoup de concept de programmation et d'améliorer ma compréhension de ceux que je connaissais. Mais pour conclure ce rapport j'aimerai plutôt parler de l’impact du travail réalisé au cours de mon stage.

Il faut savoir que Congressus est un outil libre7. A ma connaissance il n'est utilisé que par le PartiPirate français. Il est tout à fait possible que mes contributions profitent à une association ou une entreprise qui décide d’utiliser Congressus.

Cet outil a été présenté le 03 Juillet aux RMLL (Rencontres Mondiale du Logiciel Libre) au cours de mon stage et après avoir finis ma mission d’internationalisation. A travers cette présentation faite par mon maître de stage le Parti Pirate a pu communiquer sur son apport au libre. Mon travail a aussi été présenté à l'ensemble des membres.

Enfin sans révolutionner l'utilisation de cet outil, mon stage a amélioré l'un des outil les plus important du Parti.

  1. Possibilité de définir un chemin mumble pour une réunion #43, Ajout des meta twitter/facebook/g+ #52 

  2. Une Pull Requests permet de soumetre des améliorations à un projet. Ainsi ces modifications peuvent êtres discutées, modifiées, acceptés ou refusées. 

  3. exports displayed as popup #71  

  4. Ajout de l'export vers discourse pour le secretaire et le president de séance. #79 

  5. Fenêtre modales d'export chargées de maniéré asynchrone #82,lighter modals for export (only load what's needed) #88 

  6. Add discourse config to administration panel #85 

  7. voir la licence GNU GPL 3 pour plus de détails (anglais).