Motofix’s Blog

Family, Motorcicles, Linux and dive

Browsing Posts in logiciels

Ca y est, après quelques jours.homme d’efforts, répartis sur presque un ans et principalement dans les transports en commun, j’ai fini par mettre en ligne une première version pré-alpha de “Project-1901″

Project-1901, dont le projet est hébergé sur SourceForge est une application libre sous licence GNU AGPL de gestion d’association Loi 1901. Je la développe pour mon club nautique CNHC (Club Nautique de Houilles Carrières sur Seine) dont je suis membre du CA et responsable informatique

La version actuelle est pour le moins limitée et ne propose qu’une gestion basique des sections d’une association, de ses adhérents et des différents options souscrites lors de l’adhésion

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

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

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

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”….

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 ;)