Témoignage pour le guide « Libre Association »

Je me suis récemment inscrit sur la liste de diffusion de « Libre Association », un groupe de l’April, association dont je suis membre. Alors qu’ils élaboraient la prochaine version d’un guide sur les logiciels libres, j’ai mentionné l’existence de Project-1901. Le logiciel n’est manifestement pas encore assez abouti et/ou accessible pour être indiqué pour une association (et je suis d’accord sur ce point), mais ils m’ont demandé d’écrire un témoignage, ce que j’ai fait sur leur page wiki dédiée. Voici mon texte original reproduit ci-après

Développement d’un logiciel de gestion d’adhérents: Project-1901

Qui témoigne ?

Je suis Julien Béti, aka Motofix, 35 ans. Je travaille chez un éditeur en tant que « Responsable Méthodes et Outils » (Infrastructure / Usine de production logicielle / Socle Technique). Plongeur, je suis membre du CA et responsable informatique du CNHC, Club Nautique de Houilles et Carrières-sur-Seine, qui regroupe les sections Aquaforme, Éveil Aquatique, Natation, Nage avec Palmes en plus de la Plongée enfants et adultes (1059 adhérents cette année).

Comment Project-1901 est-il né ?

La section Plongée est animée par des moniteurs et encadrants bénévoles, qui ne comptent ni leur temps ni leurs efforts pour faire découvrir et enseigner la plongée. Adhérent au CNHC depuis plusieurs années, j’y ai passé mes niveau jusqu’au N3, mon grade actuel. Il y a 4 ans, lorsque le club a annoncé rechercher de l’aide pour remplacer le responsable informatique actuel, j’ai trouvé là l’occasion remercier le club, et j’ai répondu présent.

La gestion des adhérents était alors effectuée via un logiciel « client lourd » maison, très spécifique à chaque section, développé depuis des années sur une plate-forme propriétaire. Je tiens à saluer l’effort qu’a représenté ce logiciel, développé et mis en place par un non-informaticien. Le résultat était plus qu’honorable, et bien intégré par les utilisateurs. Mais plusieurs raisons m’ont amené à proposer une alternative:

  • Technologie lourde, propriétaire et obsolète. J’ai vraiment eu du mal à m’y mettre, la maintenance était difficile
  • Une application spécifique par section, et une dernière application pour re-centraliser les données (via échanges de fichiers, export / imports douloureux)
  • Pas de base centralisée accessible par les responsables du CA

Mon activité professionnelle évoluant, je voulais conserver une activité de développement, en en profitant pour me former à de nouvelles technos (Hibernate, ExtJS,…). Voilà l’occasion de joindre l’utile à l’agréable: je développerai l’alternative proposée.

Licence Libre ?

J’utilise le logiciel libre depuis des années, et pour moi les licences libres s’imposent d’elles-même dans le milieu associatif. Le développement de ce logiciel est ma contribution bénévole à mon club. Cela étant dit, dans le milieu du logiciel libre comme ailleurs, je supporte assez mal que le travail bénévole des uns enrichisse financièrement les autres. Ainsi, mon logiciel n’est placée sous licence libre que dans le cadre d’une activité à but non lucratif.

Project-1901 en Bétâ… et en prod!

Project-1901 est un logiciel de gestion d’association type « loi 1901 ». Il est hébergé sur SourceForge

En développement depuis plus de 2 ans, le projet vient de connaître des étapes importantes puisque les dernières modifications lui ont permis de passer en production pour la gestion de l’association CNHC (Club Nautique de Houilles et Carrières sur Seine), qui comporte plus de 1000 adhérents actifs, et un historique de plus de 3000 adhérents qui ont été « migrés » avec succès.

À cette occasion, Project-1901 est donc passé en Bétâ et une nouvelle version 0.02.01 a été déposée sur SourceForge. La liste des fonctionnalités couvertes dans cette version est:

  • Configuration souple
    • Multi-association: sélection basée sur le nom DNS
    • Saisons, Sections et Catégories
    • « Éléments » de Section:
      • Persistants sur les saisons ou non
      • Obligatoires ou non
      • À liste de valeur ou à saisie libre
      • À sélection multiple ou non
      • Avec un coût ou non
  • Gestion des rôles au niveau de l’association et au niveau des sections
  • Gestion des paiements
  • Vérification de la validité des membres
  • Processus d’identification lors de la création d’un nouveau membre pour éviter les doublons
  • Fonctionnalité d’envoi de courriels
  • Création de rapports facilité (JasperReports)

Un effort particulier a été fait pour la documentation du modèle de donnée, en attendant les fonctionnalités d’administration du référentiel. Pour le moment il est en effet nécessaire d’effectuer toute la configuration directement en base…

Pour aller plus loin:

La prochaine étape est le développement de la gestion de l’assemblée générale…

Donation et logiciel / culture libre

C’est peut-être juste une impression personnelle, mais il me semble que de plus en plus de site de logicels / culture libre font appel aux donations pour permettre leur extension.

En soi, je n’y vois pas vraiment un problème, puisqu’il n’y a rien d’obligatoire, et ce système présente l’avantage de permettre à ceux qui n’ont pas le temps ou la capacité de participer, ou tout simplement qui ont envie de faire un geste, de participer de cette façon. C’est ainsi que j’ai par exemple fait une donation à framasoft, ou encore que je me suis inscrit comme adhérent à l’april

Je remarque cependant deux effets collatéraux. Premièrement, une sorte d’effet de mode, comme une solution efficace à un problème de subsistance. Le soucis n’est bien entendu pas l’effet de mode, mais le problème de subsistance qui se trouve derrière. En effet, est-ce que nous n’atteignons pas une certaine limite dans une des formes d’expansion de la culture / des logiciels libres? Je pense que la plupart de ceux qui ont initié un mouvement libre ne l’ont pas fait pour l’argent, alors pourquoi tout d’un coup ce besoin? Si il y a une forme d’épuisement, pourquoi ce n’est pas résolu par un roulement des acteurs plutôt que par la rémunération des premiers?

Ce premier effet n’est pas vraiment un problème parce que en y réfléchissant, soit les gens sont d’accord pour soutenir financièrement maintenant, et surtout dans la durée, et le système fonctionnera. Soit le principe va s’essouffler et les organisations reposant sur ce principe vont disparaître au profit d’autres avec un système de fonctionnement plus « traditionnel ». Ce roulement, interne à une organisation ou entre organisation est à mon avis sain, et c’est ainsi qu’une partie du chemin du libre se construit depuis longtemps.

Le deuxième effet est plus ennuyeux à mon avis: il s’agit d’une certaine aigreur, à peine dissimulée parfois, de la part de ceux qui ont mis en place un système de donation dans leur organisation, envers le faible montant récolté. Je pense là qu’il y a deux conséquences négatives:

  • Une dé-motivation de la part des contributeurs qui peuvent avoir l’impression d’être les dindons de la farce, alors qu’à l’origine je pense qu’ils « ne faisaient pas ça pour ça ».
  • Les utilisateurs peuvent avoir des scrupules à continuer à se servir d’une application ou d’un site sans contribuer. Ils peuvent avoir alors l’impression d’un petite tromperie sur la « marchandise » puisque la contribution ainsi mise en place, et surtout les commentaires « acidulés » des contributeurs, ne faisait pas partie du « contrat » d’origine.

Je ne vais pas m’étendre d’avantage sur le sujet, mais en guise de conclusion je dirais que oui dans l’ensemble il s’agit d’une bonne idée puisque cela permet à ceux qui le souhaitent de contribuer de cette manière, mais cela doit être fait comme un service offert, pas une attente appuyée, voir revendicative, de la part des contributeurs

Yet Another Nopaste! version 1.2.0

J’ai publié aujourd’hui la version 1.2.0 de Yet Another Nopaste! Parmis le nouveautés, on trouvera notamment:

  • La protection optionnelle par mot de passe
  • Se souviens des paramètres du dernier passage: nom, langue choisie,…
  • La page de visualisation permet maintenant d’afficher soit le « paste » original, sans colorisation ni numéro de ligne, ou le « paste » colorié avec numéros de ligne. C’est bien plus pratique pour récupérer le « paste » 😉
  • Côté serveur, le stockage se fait maintenant en XML, ce qui permet de garder des méta-information. L’accès aux données est donc maintenant « proxiée » (indispensable pour la fonctionnalité de protection par mot de passe…)
  • J’ai ajouté aussi un « hook » pour une intégration facile avec Google Analytics

Voilà, il n’y à plus qu’à aller voir :p

http://yanopaste.sourceforge.net

Yet Another Nopaste!

Dans notre entreprise, nous utilisons massivement IRC pour communiquer. Il nous arrive souvent d’avoir à nous communiquer des morceaux de code, sortie de programmes et autres logs. Si nous copions ce contenu dans l’IRC, nous nous faisons déconnecter sans autre ménagement, et à juste titre, pour « flood »… Reste alors plusieurs solutions:

  • Copier le contenu dans un fichier partagé sur le réseau: c’est un peu fastidieux, d’autant plus pour ceux qui n’ont pas de serveur web, et pour ceux dont la manipulation ne se limite pas à la création/copie du fichier dans ~/public_html 😉
  • Envoyer un mail. C’est un peu moins fastidieux, mais un peu lourd. De plus, l’information ne sera pas forcément transmise à toutes les personnes connectées sur le salon IRC…
  • Utiliser nopaste, ou paste.bin, des services permettant de partager facilement des bouts de code en ne donnant qu’une simple URL. En plus, et cerise sur le gâteau, ce genre de services colorient le code en fonction du langage employé, numérotent les lignes, etc. Il ne reste plus qu’à transmettre l’URL et tout le monde peut aller voir votre dernière création de code 🙂 C’est exactement ce que l’on cherche, sauf que ce contenu est maintenant visible partout sur internet. Dans le cadre d’échanges au sein d’une entreprise, on peu facilement comprendre que c’est délicat…

Me voilà donc parti à la recherche d’application open source que je pourrais installer dans mon entreprise et qui rempliraient les fonctions des logiciels suscités. Force est de constater qu’elles ne sont pas légion. Je fini quand même par trouver gnopaste qui semblait convenir, mais:

  • Je passe sur la longue heure à chercher pourquoi il ne fonctionnait pas: des règles de réécritures d’URL sous Apache qui étaient erronées…
  • Il utilise une base de donnée MySQL en backend. Ce n’est pas un problème en soit, mais je trouve ça un peu lourd.
  • La colorisation laisse franchement à désirer, rien à voir avec GeSHi que nous utilisons via le plugin ad-hoc dans Mediawiki, notre outil de gestion documentaire collaborative.

Je me suis donc mis dans l’idée de développer le logiciel par moi-même, ce que j’ai fait ce week-end, et Voilà le résultat: Yet Another Nopaste 🙂

Le site du projet sur sourceforge: http://sourceforge.net/projects/yanopaste/

Le site demo (bientôt en ligne quand SourceForge aura créé les répertoires web de mon projet :p): http://yanopaste.sourceforge.net/

Quelques capture d’écran: http://albums.jujunie.com/v/jujunie_softwares/yanopaste/

Par la suite, j’ai trouvé bPaste… Bon ok, il aurait pu convenir (il utilise lui aussi GeSHi), mais il utilise toujours MySQL, et puis il n’est pas assez KISS à mon goût, et puis j’avais déjà fini :p

ExtJS 2: pour des applications plus riches

Il y a quelques temps, on m’a demandé de trouver un logiciel « Web » permettant de se connecter à une base de données, à la manière de SQLDeveloper ou de TOAD pour ceux qui connaissent. Après avoir d’abord essayé Ajaxora, qui est pas mal mais pas fini, je suis tombé sur DBEverywhere, grâce à un post sur LinuxFR.

Outre le fait que DBEverywhere correspondait à mes besoins (bien que lui aussi soit en version bêta 😉 ), j’ai été très agréablement surpris par l’interface (DHTML / Ajax) qui ressemblait à s’y méprendre à un client lourd. J’ai donc commencé à regarder comment l’application était constituée, et je suis tout d’abord tombé sur YUI.

YUI, pour Yahoo User Interface, est une API libre (Licence BSD-like) DHTML/Ajax qui contient un certains nombre de widgets comme des arbres ou des onglets, ainsi que des layout managers.

J’ai donc commencé à écrire un nouvelle version de la vue de « Environment Monitoring » de mon logiciel « Jujunie Integration » en utilisant YUI. Mais je ne parvenais pas à obtenir quelque chose d’aussi complet que DBEverywhere… J’ai donc regardé de plus près, et je me suis aperçu que le layout manager de DBEverywhere était en fait géré par une autre API libre (LGPL) DHTML/Ajax nommée « DHTML Goodies ».

Je me suis donc empressé d’aller voir le site de DHTML Goodies, sur lequel j’avais du mal à trouver de la documentation… Mais je suis tombé sur l’exemple qui a été utilisé par DBEverywhere… lequel se disait une réimplémentation de ExtJS.

Me voilà donc parti sur le site de ExtJS, et là j’ai tout simplement eu le souffle coupé par les exemples donnés sur le site, lesquels valent mieux qu’un long discours: http://extjs.com . Une fois rassuré sur la licence (il en existe une commerciale, mais ExtJS est aussi distrbué en LGPL), j’ai recommencé l’écriture de la page de monitoring (voilà la tête de mon répository SVN…)

Je développerais peut-être plus tard l’utilisation de ExtJS, mais pour le moment, je suis vraiment content du résultat! Je vois cependant 3 problèmes majeurs:

  1. La maintenance du code Javascript va être très délicate à mon avis… Il faudra vraimment insister lourdement sur les commentaires (et les tenir à jour 😉 )
  2. Le développement est très très long, surtout au début. C’est une sorte de mélange entre design HTML et Swing, et il faut acquérir pas mal d’automatismes pour débusquer les problèmes…
  3. Ce dernier point n’est pas l’apanage de ExtJS en particulier, mais du développement AJAX en général, appliqué aux applications de Gestion. La complexité de la partie Contrôle dans le modèle MVC devient vraiment problèmatique, et il est beaucoup plus difficile de garantir la stabilité et la sécurité de l’application…

Pour répondre à ce dernier point, il semble se développer des API DHTML/Ajax complètement intégrées au niveau du Contrôle. En clair, si l’application est développée en Java par exemple, on ne code plus de Javascript ni de HTML, seulement du Java. L’API se charge ensuite de la génération Javascript/HTML ainsi que toutes les interactions synchrones et asynchrones entre le client (le navigateur web) et le serveur (conteneur web).

A ce titre, il semble que GWT, l’API DHTML/Javascript de Google (Google Web Toolkit), laquelle vient de changer de type de licence (OUF!), et qui s’intègre au niveau de la partie Contôle du serveur, a développé un plugin « ExtJS » pour utiliser ExtJS côté vue!

J’avoue ne pas encore être allé voir, de peur que ça me plaise, et d’avoir à re-re-re-re-écrire la vue de « Environment Monitoring »….

Nouvelle version de jujunie-integration – 0.06.01

Le 28 octobre dernier, j’ai sorti une nouvelle version de mon application « Jujunie Integration ».

C’est la première fois que j’en parle ici, aussi je vais rapidement présenter les fonctionnalités, et pourquoi j’ai créé cette application.

Fonctionnalités:

  • Vue consolidée des heures travaillées sous Bugzilla, suivant plusieurs axes paramétrables sous la forme de catégories. Par défaut, les axes « X » sont la période (par jour, semaine, mois…), le produit et le composant. Les axes « Y » sont le login, et les tâches.
  • Flux ICS à partir des bugs dans Bugzilla, en utilisant la deadline si elle est renseignée. Là aussi, il est possible de configurer plusieurs filtres, choisissant par exemple les livraisons d’un produit. Une utilisation classique est la mise en ligne de ces dates à l’aide d’un logiciel supportant les flux ICS, comme PhpICalendar par exemple.
  • Mise à jour de Bugzilla avec un planning Planner, et vice-versa. Planner est un logiciel de gestion de projet, plus simple et plus limité que Microsoft Project. Il suffit néanmoins à la plupart des utilisations. Mon application met à jour l’avancement des tâches dans le fichier Planner grâce aux informations de gestion de temps de Bugzilla. En retour, je met à jour la deadline dans Bugzilla avec la date de fin de tâche calculée par Planner. Enfin, des alertes sont levées en cas d’inconsistance entre les deux outils
  • Flux ICS à partir d’un fichier Planner, permettant d’avoir sous la forme de calendrier les livraisons définies dans Planner, où encore les jours de congés définis dans les calendriers des équipes.
  • Monitoring d’environnement: présentation de la configuration d’AutoDeploy, une application open-source de gestion d’environnements J2EE, avec consolidation des ressources de base de données utilisées. Au niveau base de données, vision des instances, tablespace, schémas, avec un tas d’informations et de vérifications sur la santé de nos chers serveurs de base de données. Il y a aussi la possibilité de lancer des exports de base en ligne.

Pourquoi?

En fait, je pense que je suis quelqu’un qui a horreur de faire des tâches difficiles, longues et pénibles. Alors dès que je me rends compte de leur aspect recrurent, je cherche à automatiser. Ensuite, je crois beaucoup à l’interopérabilité des logiciels, qui est un critère discriminant dans mes choix professionnels. C’est les seul critère qui permette d’envisager un système d’information consolidé.

Quand j’ai pris la fonction de chef de projet, le logiciel de gestion de bugs utilisé était Bugzilla. Pour la gestion de projet, la pluspart de mes collègues utilisaient Microsoft Projetct, mais pour ma part, étant sous Linux, j’ai fait le choix de Planner. Ce dernier est bien moins puissant que Microsoft Project, mais ses fonctionnalités suffisent amplement, et j’ai été séduit par son format de stockage natif en XML: simple et efficace. Voilà pourquoi j’ai commencé à intégrer Bugzilla et Planner: avoir un suivi automatisé des tâches en cours. J’ai ensuite développé les extractions ICS pour avoir une meiileure vue des prochaines livraisons, ainsi que les dates de congés de mon équipe. La rapport d’heure travaillées est essentiel pour comprendre ou nous passons du temps, sur quels points il faut concentrer notre attention.

Ensuite, j’ai pris en charge la gestion du système d’information de mon entreprise (entre autres :p ). Après avoir installé GLPI et OCSng pour la gestion « pure » du parc informatique, j’ai été confronté à la gestion des environnements J2EE (plus de 100) et des bases de données (7 serveurs, 25 instances, plus de 400 schémas…). Pour la gestion de environnement, nous disposions déjà d’AutoDeploy, un logiciel OpenSource faisant partie de la suite BuildProcess, développée par un collègue, Nanthrax. Cette application est exceptionnelle, et nous permet de gérer tous ces environnements et leur très nombreuses mises à jour (nous somme éditeurs de logiciels) sans efforts. Mais il manque à ce produit une vue pour le gestionnaire, ainsi que la consolidation de la configuration avec les bases de données gérées. Je pense d’ailleurs que c’est tout à fait normal, ce n’est pas le but de ce logiciel.

C’est donc ainsi que j’ai commencé à développer la page de monitoring des environnements…

What’s next ? 

Le plus simple est encore d’aller voir les évolutions prévues dans mon Bugzilla, ou de consulter la page dédiée au projet sur fresmeat 😉