29 novembre 2006

Folding et boinc : l'humanitaire à bas prix

Aujourd'hui je vais vous parler de 2 outils que je pensais pourtant connu : folding@home et boinc.
Pour ceux qui ne connaissent pas on peut les comparer au projet decrypthon dont une grosse pub avait été faite lors d'un téléthon : en fait il s'agit d'effectuer de nombreux calculs en les distribuant sur de nombreuses machines à travers le monde, cela permet à un coup minime d'avoir une puissance équivalente aux clusters et autres super calculateurs. Bref techniquement on peut comparer ça à un simple cluster de calcul, néanmoins l'idée d'utiliser de nombreuses machines de volontaires reliées à internet est apparu en 1997 avec le projet distributed.net qui avait pour objectif de casser un algorithme de cryptage. Depuis ce genre de projet s'est multiplié, notamment avec le projet seti@home (recherche de signaux extra-terrestre) et génome@home ("cartographie" du génome humain), qui ont disparu, ou plutôt ont "muttés". Actuellement 2 projets gardent néanmoins le haut du pavé : folding@home et boinc.

Quel que soit le projet, le fonctionnement reste à peu près identique :
vous téléchargez un client pour votre système (de très nombreux systèmes sont gérés), celui-ci va télécharger une unité de calcul, une fois celle-ci calculée, le résultat est renvoyé. Tout ces calculs se font en idle-time, en gros ils se font dans les ressources de votre machine qui ne sont pas utilisées, donc pas de baisse de perfs pour votre système. Néanmoins il faut s'attendre à une légère hausse de votre consommation électrique.


Folding@home a été lancé par l'université de stanford et se propose de créer une base de données libre d'accès (les résultats sont publics) sur le repliement des proteines dans différents environnement. Je n'ai vraiment pas la compétence pour vous décrire plus les résultats, néanmoins folding a déjà permis quelques publications sur la maladie d'alzheimer, parkinson, différents cancers et bien d'autre. A noter qu'il existe en plus des clients Linux, Windows et MacOSX, un client pour la playstation 3 et un client spécifique permettant l'utilisation des gpu ati !

Boinc est quant à lui une plateforme développée à Berkley et permettant de faire tourner d'autres projets distribués, typiquement on s'inscrit sur les différents sites de projets en indiquant la quantité de vos ressources qu'on veut y allouer, l'avantage est bien sûr de pouvoir allouer ces ressources à différents projets de différents types : santé, astro-physique, mathématiques, lutte contre la propagation de la malaria en Afrique... on y trouvera de plus des projets européens. Néanmoins Boinc est réputé un peu moins performant, de plus il faut bien regarder pour chaque projet si les résultats seront bien rendus publics, en effet certaines entreprises profitent du projet pour économiser quelque sous.

Néanmoins,malgré leur utilité ces projets manquent néanmoins de personnes prêtent à préter leurs ressources : en allant regarder les stats de folding, je découvre qu'il y a moins de 100 utilisateurs sur Paris ! Je vous invite donc a aller visiter les sites de chaques projets, ainsi que le site de l'alliance francophone, site qui regroupe de nombreuses infos sur différents projets distribués.

15 novembre 2006

CMAKE déterministe ?

Je travaille actuellement sur un ptit projet perso, et pour le build, tant qu'à faire je me suis dit que j'allais utiliser cmake (qui est le système de build officiel de kde4, et de plus je n'ai jamais été grand fan d'autoconf)

Bref j'étais ravis, c'est bien fait et facile à utiliser, de plus il sait générer des Makefile standard (pour gmake et même visual), ou encore des projets kdevelop, et on trouve assez facilement des modules (perso j'ai pris ceux du svn de kde)

Néanmoins une surpise : entre 2 fichiers CMakeLists.txt identiques, j'ai des résultats différents :



ADD_CUSTOM_COMMAND(OUTPUT ${MYINCLUDES}/ui_mainWindow.h
COMMAND ${QT_UIC_EXECUTABLE} ARGS -o ${MYINCLUDES}/ui_mainWindow.h ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow.ui
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow.ui)
INCLUDE_DIRECTORIES (. ${MYINCLUDES})

ADD_LIBRARY(mainWindow STATIC ${MYINCLUDES}/ui_mainWindow.h mainWindow.h mainWindow.cpp)

MV_INCL(mainWindow.h)
MV_LIB(mainWindow)


et


ADD_CUSTOM_COMMAND(OUTPUT ${MYINCLUDES}/ui_dateInterval.h
COMMAND ${QT_UIC_EXECUTABLE} ARGS -o ${MYINCLUDES}/ui_dateInterval.h ${CMAKE_CURRENT_SOURCE_DIR}/dateInterval.ui
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/dateInterval.ui)

INCLUDE_DIRECTORIES (. ${MYINCLUDES})

ADD_LIBRARY(dateIntervalWidget STATIC ${MYINCLUDES}/ui_dateInterval.h dateInterval.h dateInterval.cpp dateIntervalPlugin.cpp)

MV_INCL(dateInterval.h)
MV_LIB(dateIntervalWidget)


MV_INCL et MV_LIB étant des macros persos copiant mes includes et mes libs générées dans un repertoire précis.
Hors la différence entre ces 2 jeux d'instructions, est que dans un cas tout se passe bien, dans l'autre les règles ne s'éxécuteront pas dans le bon ordre, et mieu, se trouveront même dans des Makefile séparés !

Bon la solution simple est d'utiliser dans mes macros la règle ADD_DEPEDENCY, néanmoins je trouve ce comportement curieu

07 novembre 2006

Idealx, c'est finit

Ca y est, l'aventure Idealx est finie, expérience particulière qui me laisse un goût étrange. J'avais postulé à cause d'un rêve d'opensource, un stage des plus intéressant avec comme sujet l'horodatage et la validation de certificats, suivi par divers projets plus ou moins passionnants. Je dois bien admettre que je reste mitigé tant qu'au modèle de la société, on exploite le libre sans contribuer (souvent, il est vrai, à cause du manque de com des projets concernés, ou le manque de temps de nos propres équipes, mais au final nous n'avons pas su créer l'émulation autour de nos propres projets, tel imc ou cryptonit, le premier ayant été tout simplement laissé à l'abandon...), les produits sont pour la plupart sous licence gpl, néanmoins le système de build n'est que rarement livré, le code parfois offusqué (le problème d'avoir des gourus perl (attention un troll est caché dans la phrase, sauras-tu le trouver ? )) et finalement je ne pense pas que nous ayons su vendre au client toute la philosophie et les gains cachés derrière. Bref si cette expérience m'a rendu dubitatif quant au "modèle du libre", car finalement je n'ai vu que des boites qui ne progressent pas ou peu (Idéalx, mais également linagora et mandriva qui semble toujours empêtré dans divers problèmes financiers malgré un nombre impressionnant de partenariats et d'initiatives). De toute façon ce modèle semble tendre à disparaître au sein de la société.



Enfin ne vous trompez pas, je suis toujours grand fan du libre, et je continuerai à contribuer de çi de là, néanmoins son exploitation commerciale dans les sociétés de services me parait de plus en plus réservé à des "pilleurs de code"... car finalement peu de clients demandent l'adapation de produits existants, et peu de sociétés sont capable d'offrir la maintenance et le développement ne serait ce que d'une faible part de la multitude des projets éxistants. L'autre solution étant de fédérer une commuanutée autour de son produit, ce qu'Idealx n'a pas reussi et qu'a prioris la société ne tentera pas malgré son nouveau status d'éditeur. En fait le bon modèle, le plus éthique et qui marche le mieu est surement celui adopté par Ibm, Trolltech, Fluendo, Redhat... : "on prend et on contribue pour nos besoins, mais on contribue quand même et pour tous", finalement un modèle plus élaboré que le simple "on offre l'outil, on vend le service autour", ces éditeurs ont su fédérer une communauté autour de leurs produits.

Enfin bon, revenons au sujet premier, pourquoi je quitte Idealx ?
Tout simplement car la boîte ne me correspondait plus, et je ne correspondais plus à la boîte, et je ne comprenais vraiment plus le managment: la ligne directrice de la société me parait floue, la boîte recrute en commerciaux sans compenser les trop nombreux départs de la prod (plus d'une douzaine depuis juin sur une boîte d'une cinquantaine de tête)... et pourtant même la direction regrette le manque de temps à la stabilisation et l'intégration des projets... Bref Idealx n'était plus pour moi, et si l'herbe n'est sûrement pas plus verte ailleurs, elle a sûrement un autre goût. Et c'est après tout là le principal, changer pour découvrir de nouveaux horizons.

Néanmoins cette expérience n'est pas négative, techniquement le niveau était élevé, et je me suis fait de nouveau très bon amis que je garderai bien des années.

Actuellement Idealx est à un tournant, notamment cause au passage du status de SSII a celui d'éditeur, je pense que le rachat d'Inet6 a été un des bons points de cette année, et le renouveau de la nouvelle équipe de prod (si la boîte recrute) apportera un nouveau souffle à une société qui se cherchait... malgré les nombreux départs de cet été et le choc des mentalités avec la nouvelle équipe de direction... Je souhaite bonne chance au reste de l'équipe dans ce nouveau départ.