Un an et demi après

Nous voilà un an et demi après avoir commencé mon petit projet d’interaction avec Starteam. Le logiciel Git-Starteam arrive enfin dans un état que je considère acceptable. Il est enfin possible d’importer les fichiers qui sont dans un serveur Starteam selon les versions les plus récentes disponibles. Il est aussi possible d’importer leur historique selon les modifications qui ont été faites à chaque jour, tout en gardant la trace des gens qui ont fait les modifications sur ces fichiers. Le niveau de détail n’est pas aussi raffiné qu’il pourrait l’être, car certaines modifications dans un fichier pourrait être confondus avec celle d’un autre utilisateur. Mes expériences ont aussi montré que les déplacements des fichiers sont aussi pris en charge de manière acceptable.

Il est encore nécessaire de le stabiliser encore plus afin d’avoir un logiciel solide et fiable. Plusieurs tests unitaires devront être produit dans les prochaines semaines afin de couvrir tous le code produit. Ceci devrait clore la première étape. J’aimerais du coup remercier Gemma Lynn et Li Zheng pour leur contribution.

La prochaine étape consistera à faire l’inverse, c’est-à-dire exporter les modifications faite dans les historiques de Git afin de les reproduire dans une vue Starteam. Le but sera de créer un script qui sera exécuté, sur un serveur de type GitHub ou Gitorious, sur la réception de modification fait par les usagers. Le tout devrait être exécuter par un script Bash qui sera déployé en tant que script de post publication.

J’espère pour moi que cette prochaine étape ne durera pas un an et demi, car j’aimerais déployer cette solution dans les prochaines semaines à mon travail afin d’en faire profiter mes collègues.

Starteam

Bonjour à tous et à toutes, je glisse ici une note quelque peu publicitaire afin de parler de mon nouveau projet qui germe tranquillement sur mon répertoire sur github. Celui-ci consiste à rendre GIT un logiciel de contrôle de source compatible avec Starteam. Tous développeur qui a travaillé l’un des deux connait celui qui est supérieur. Si vous faite partie du groupe qui poursuit de croire que Starteam est la meilleur solution, vous serez content d’apprendre que je travail sur le logiciel qui pourrait faire le pont avec GIT.

Le projet comporte deux volet. L’un consiste à créer un faux sdk pour les serveurs Starteam afin de pouvoir tester ses comportements et la manière qu’on doit communiquer avec celui-ci. Le strict nécessaire est fait et ce projet et il pourrait servir à ceux qui aime ce logiciel. Il sera utile pour les tests unitaires des différents programmes désirant une interaction assez juste sans avoir besoin d’une version officiel du serveur. Le deuxième volet consiste à créer une application qui peux utiliser le mécanisme de fast-import afin d’importer le code source d’un projet et d’une vue.

Le but ultime de ce projet est de créer une application qui pourra faire:

  • L’importation de l’historique complète d’une vue.
  • Synchronisation d’une vue dans un autre système de contrôle à des périodes aléatoires
  • Permettre d’exporter l’historique des modifications dans Starteam

Vous comprendrez que ceci sont des but ultime. Sachez par contre que je fais partis des développeurs récalcitrant qui préfère la rapidité d’un logiciel comme GIT. Ce projet est totalement open-source, vous pourrez donc regarder sont progrès sur github.

Espérer ma première version 0.1 pour bientôt, car une des capacités sera bientôt complète.

Le bruit après deux ans

Après deux années passées à l’université et à l’approche de ma dernière session, je crois que je dois faire un compte rendu de ce que j’ai réussi à accomplir comme bruit.

Voici le bilan de mon expérience après deux années passées dans la faculté des sciences, presque rien. J’ai accompli quelques travaux de session basée principalement sur des logiciels libres, d’autres qui en ont été inspirés. Ma plus grosse contribution a été faite durant mes deux premiers stages en entreprise, car cette entreprise a à coeur le logiciel libre.

Voici une liste de ce que j’ai pu accomplir durant ces deux à trois dernières années :

  1. Améliorer l’inventaire des logiciels ainsi que la gestion de la base de données dans Bcfg2. Malheureusement, ces modifications ont été perdues par un changement complet de l’inventaire des logiciels.
  2. Amélioration dans OpenERP, qui est perdue dans une branche sur LaunchPad et une correction dans le logiciel principal qui a été rejeté vu la migration du travail à une version plus récente du logiciel (4.2 à 5.0).
  3. Hack dans le logiciel gnome-mine, présentement en attente de publication. Résultat d’un projet pour le cours d’intelligence artificielle.
  4. Coopération, report de bogue et test pour les développeurs de logiciel libre.
  5. Création du projet Auto-synchronizing mirror pour faire la sauvegarde de la bande passante dans les entreprises.
  6. Un script présenté ici même.

Voilà, en gros c’est ça. C’est très peu, à mon avis.

La raison derrière ce manque de bruit est due aux faits qu’il y a une bonne quantité de travail à faire durant le temps que je passe à l’université. Durant les périodes de stage, c’est les vacances, je fais bien d’autres choses que travaillées sur les logiciels qui ne me plaisent pas. Trop vouloir en faire en même temps fait aussi perdre l’accent, ce qui ne cause aucun avancement dans les différents projets commencer. Je crois que je suis un peu ce type de personne, car à moins d’avoir une nécessité absolue que le projet soit terminé, un jour, je vais le mettre en pause indéfiniment par désintéressement.

La solution, choisir un logiciel et travailler à son amélioration durant mes temps libres. J’ai actuellement 4 candidats en tête : Ryzom, Wine, Bazaar et Mesa. Le choix vas être difficile.

Créer du bruit étant un étudiant universitaire

La création de bruit dans le monde open-source étant un étudiant universitaire n’est pas une chose facile. Le mieux que je peux conseiller à toutes personnes voulant faire une contribution minimal est de simplement faire une immersion comme on peut faire une immersion pour apprendre une langue étrangère. Il faut vivre avec le mouvement du logiciel libre pour finalement pouvoir y contribuer efficacement.

Autre façons de faire du bruit dans le logiciel libre. Faites en l’inclusion dans vos projets de session et vos projets d’étude. C’est la meilleure méthode pour augmenter sa capacité de contributions.

Sauvegarde incrémental du "/etc"

En discutant avec des administrateurs système au travail. J’ai pu remarquer que souvent des erreurs de configuration pourraient être simplement évitées en utilisant un gestionnaire de contrôle de version (VCS). Et de faites, il y a quelque temps que j’ai développé un script bash / cron pour faire ce travail. Mais il comporte plusieurs défauts tels que l’utilisation intensive des particularités du système d’exploitation que j’utilise présentement, c’est-à-dire Gentoo Linux. Mais bon il fonctionne très bien pour moi.

#!/bin/sh

BACKUPNAME="etc-backup"
LOGFILE="/var/log/${BACKUPNAME}.log"
SVNDIR="/var/tmp/${BACKUPNAME}"
SVNBASEDIR="/var/svn"
SVNURL="file://${SVNBASEDIR}/${BACKUPNAME}"
TARGETDIR="/etc"

if [[ ! -d $SVNDIR ]]; then 
  svnadmin create ${SVNBASEDIR}/${BACKUPNAME} >> ${LOGFILE} 
  svn co ${SVNURL} ${SVNDIR} >> ${LOGFILE}
fi

cfg-update -ua >> ${LOGFILE}rsync -a --exclude='*.svn*' ${TARGETDIR}/ ${SVNDIR}/
cd ${SVNDIR}

# be sure every thing is clean and safe
svn cleanup >> ${LOGFILE}

# be sure every thing is up to date
svn update >> ${LOGFILE}
FILEINCONFLICT=$( svn status | grep "C " | cut -c 3-)
for file in ${FILEINCONFLICT}
do
 svn revert ${file} >> ${LOGFILE}
done

FILETOADD=$( svn status | grep "? " | cut -c 3- )
for file in ${FILETOADD}
do
 if [[ -e $file ]]; then 
   svn add --quiet ${file} >> ${LOGFILE}  
 fi
done

FILETODEL=$( svn status | grep "! " | cut -c 3- )
for file in ${FILETODEL}
do
 svn rm --quiet ${file} >> ${LOGFILE}
done
svn commit -m "backup of $(date)" >>  ${LOGFILE}

Pour les ceux qui n’aiment pas faire l’utilisation de subversion. On pourrait simplement porté le script vers git ou bazaar. S’il y a des demandes, je suis prèt à faire la modification.

Je suggère aussi l’utilisation du projet etc-keeper. En faites, probablement que je ferai un peu de travail pour un support Gentoo, le projet semble très intéressant. Et je suis aussi sûr qu’une intégration avec Bcfg2 / Puppet pourrait être gagnante.