Archives pour la catégorie Ecrit en français

Plus que 59 ans à vivre…

C’est ce que me prédisent les statistiques de cette compagnie d’assurance américaine. Il a fallu que je donne mon âge, ma taille, mon poids, la description de mon mode de vie, etc. Et hop, c’est l’ordinateur qui le dit: plus que 59 ans à vivre. Je vous invite à essayer le machin, c’est un jeu rigolo à faire en famille avec vos grands-parents (ou arrière-grands-parents si vous avez de la chance!). Rien de mieux pour les persuader que, non, il ne vont pas mourir demain. D’autant moins qu’ils ont survécu jusqu’à aujourd’hui… c’est statistique: si tu as survécu jusqu’à aujourd’hui, alors il y a des chances que ça continue.

C’est comme le vélo, plus tu en fais plus il y a des chances que tu continues à en faire. ;-)

NB1: ça marche pas bien sous Firefox (à moins de faire des copier-coller des chiffres que l’on écrit dans un champ de recherche par exemple pour les coller ensuite dans le formulaire… fastidieux) mais c’est ok sous IE

NB2: pour connaître votre taille en pieds et en pouces et votre poids en livres, il faut faire faire un peu de calcul à Google. Exemple:

Personnalisation via Slashdot

Revenant de vacances, mon premier réflexe a bien sûr été de lire mes Dilbert en retard. Ensuite, je me suis mis à passer en revue Slashdot. En août et en juillet, je suis surpris de voir qu’il y a pas mal de news qui présentent des applications des technologies de personnalisation :

Mon nouveau projet

Christian et Etum l’ont bien senti. :-) Je me relance dans une nouvelle aventure: la création d’une entreprise sociale ayant pour vocation de créer des Innovations Internet d’Utilité Publique.

Il y a deux ans, j’avais tenté d’identifier qui, en France, pouvait être créateur d’Innovations Internet d’Utilité Publique. Je n’étais pas revenu bredouille de mon expédition… mais presque. Depuis deux ans, j’ai travaillé à créer de l’innovation Internet (et mobilité) à vocation commerciale (recherche en applications mobiles Web 2.0ish). Maintenant, je vais essayer d’ajouter l’ingrédient « utilité publique » ou « intérêt général » à la sauce et voir si ça prend sous forme d’une activité professionnelle (et commerciale).

Concrètement, j’ai quitté mon job depuis le mois dernier et je prépare mon projet. Ca s’est décidé vite: un plan social a été annoncé au printemps et l’un de mes collègues aux compétences proches des miennes était sur la sellette. Au même moment, j’avais mon idée et la promesse d’une petite cagnotte si je me portais volontaire pour monter dans la charrette à la place de ce collègue. Tout le monde s’est mis d’accord et hop.

J’ai commencé par acquérir quelques connaissances qui me manquaient (notamment dans le domaine juridique), à tester mon idée auprès de prospects, à mobiliser quelques fournisseurs et à concevoir un peu d’outillage logiciel. Mes premiers contacts commerciaux sont plutôt positifs mais rien n’est joué tant que rien n’est fait ou signé! Alors je reste prudent.

Dans mon projet, il y a plein d’ingrédients bons pour la santé: un gros paquet d’open source et de prestation de service informatique, un fond de citoyenneté d’entreprise et de politiques de développement durable, une sauce épicée à l’Economie de communion, peut-être une pincée de coopératisme et un maximum d’innovation sociale et d’intérêt général.

Mes gènes de paranoïaque me mettent un peu mal à l’aise pour tout vous raconter ici dès aujourd’hui dans la mesure où, enthousiasme et extraversion obligent, j’aimerais tout vous dire mais j’ai un peu peur qu’en en disant trop, on dévoie mon idée avant que j’ai eu le temps de dire ouf. C’est sans doute idiot. C’est d’autant plus idiot que je voudrais que mon idée soit reprise par d’autres! Mais je sais pas encore comment alors il faut que j’y pense encore un peu avant de tout déballer n’importe comment.

En attendant, je vous invite à rêver. J’ai un génie dans ma bouteille. Il peut réaliser vos innovations Internet d’utilité publiques les plus folles. Il suffit d’en faire le souhait en postant un commentaire ci-dessous. Quel usage, service ou technologie Internet devrait-on répandre à travers le monde pour rendre celui-ci meilleur, pour aider à résoudre certains problèmes de société? Quels sont les problèmes de sociétés les plus cruels et pour lesquels il n’existe pas (encore) de technologie Internet uniquement faute d’intérêt commercial évident? Qui sont les entrepreneurs sociaux qui pourraient démultiplier leur puissance de changement social si seulement on leur forgeait quelques bons outils modernes? Quel sujet de société vous tient le plus à coeur pour que mon génie y consacre un peu de sa magie?

Connecting romanian gypsies: social or digital divide?

I’ve got a nice anecdotal evidence of the fact that digital divide is easier to bridge than social divide. Two years ago, I applauded the initiative « Internet de rue » (Internet-in-the-street?) by a French non-profit. They went to extremely poor families near Paris and provided them with access to Internet technology and used that opportunity for developping relationships with these families and see if and how technology can be used for social purposes aimed at reducting poverty. Some of these families were romanian gypsies who emigrated to France. One of the families asked about the feasibility of sharing family pictures via the Internet with the rest of the family who stayed in a Romanian village (Garla Mare, Mehedinti region). Therefore, I published a call to any volunteer who could visit that Romanian village and organize some kind of community Internet workshop for the benefit of these families both in France and in Romania (the French non-profit would do the French side of the operation). I later tried to do something with colleagues located in Bucarest. All of this lead to no concrete result at the time. The digital divide seemed wide and difficult to bridge.

Recently, that old blog call for volunteers generated some discussion with (non-gypsy) Romanians who expressed their indignation and anger of being possibly confused with gypsies by « people from rich countries » at various (which is really a stupid confusion). That discussion also dealt with how gypsies are victims of social exclusion possibly based on racial grounds but also based on blunter considerations such as « gypsies being recognized for their criminal behaviors and dirtyness » and some gypsies « living in palaces while still being said to be living in poverty ». I felt shocked by the arguments being used in that discussion. I can now guess that most Romanian would probably refuse being in touch with gypsy families. This social exclusion phenomenon is what I call the social divide in that case.

Which is the most difficult divide to bridge? The digital one (Internet connectivty, access to equipment and training) or the social one (exclusion, communautarism, possibly racism)?

Finally, a Romanian colleague of mine is providing the anecdotal evidence that the social one may be the most prevallent:

:)) I think I’ve won the bet.
Here is a link about the internet in Mehedinti:
http://www.newscafe.ro/content/view/10583/119/

On paragraph 2 is saying that as part of a program EuDiS, Garla Mare is one of the villages where the Internet on fibre-optic is available from 2006 and it is free in the school. :))

What’s next? Assuming that the family located in France can still be contacted by the French non-profit (which is much unsure because they move a lot of course) and that their Romanian counterpart is still located in or near Garla Mare, access to Internet technology is now available at low cost to both of them. But who would bridge the remaining social gap? Is Romanian Internet connectivity accessible to Romanian gypsies in the same village or area? Is the gypsy/non-gypsy social divide that strong that gypsy families in Garla Mare would not get access to the network? Will some social hero appear in that story and finally connect the unconnected?

While comfortably sitting in my French and cosy armchair, I’ll tell you the rest of the story as it flows into reality… ;)

eXtreme Consulting?

Can agile methods such as eXtreme Programming (XP) be applied to consulting activities? What could eXtreme Consulting (XC) mean? Do you need to analyze the whole big picture before starting the delivery of good recommendations?

In XP iterations, users tell user stories which are prioritized and then transformed by rotating pairs of programmers into tested features. These features enable new uses of technology.

In XC iterations, I guess there would be decision makers telling decision making stories. These stories would be prioritized and then transformed by rotating pairs of consultants into argued and accepted recommendations. These recommendations would enable new decisions.

What about the agility of decision makers themselves, people who are to lead changes in their scope of responsibility? Couldn’t they follow similar methods and benefit from eXtreme Change Making (XCM)? In XCM iterations, there would be change leaders telling change leadership stories. These stories would be prioritized and then transformed by rotating pairs of change makers into tested change commitments from stakeholders in the organization. These commitments would enable changes in the organization, its rules and processes.

Had you ever heard of XC or XCM before reading this? What do you think? Why would such things be of any interest?

Appel à l’agilité

Imaginez un peu… Un projet informatique… Une équipe d’informaticiens… Et un taux de rotation des effectifs comme on n’en a jamais cauchemardé dans les pires des SSII offshore en Inde: les personnes restent rarement plus de 3 semaines/un mois sur le projet !

C’est le challenge méthodologique des missions solidaires pour prestataires en inter contrat: des prestas qui se relaient dans une équipe projet auprès d’une ONG le temps qu’on leur retrouve une « vraie » mission. Badr Chentouf soulignait l’importance de ce challenge méthodologique dans un commentaire récent. Comment rendre productive une telle équipe projet dont le gros des troupes ne reste que très peu de temps? Comment limiter la « charge d’entrée » sur le projet? Comment modeler la courbe d’apprentissage?

Dans un tel contexte, les méthodes les plus agiles pourraient paraitre on ne peut plus rigides et inadéquates, non? L’eXtreme Programming n’a pas été conçu pour gérer ce genre de situation, pas vrai?

Et même si, dans les communautés open source, on peut intervenir en peu de temps pour proposer un patch ou corriger un bug, la communauté repose sur des piliers permanents qui suivent le projet depuis de longues années et assurent que le mouvement brownien des contributeurs se traduit en évolution réelle à moyen terme.

Les outils de gestion de connaissances les plus ambitieux proposent de partager la connaissance des experts de l’entreprise avant qu’ils ne partent à la retraite. Mais il faut tout de même de longues semaines d’interview, de modélisation et de mise au point avant de bénéficier d’un système utile pour les successeurs de l’expert. Que faire en 15 jours? En mode incrémental…
Alors que faire? Comment organiser le travail et gérer sa continuité? Comment le coordonner? Comment transférer de la connaissance aux nouveaux arrivant en un temps record?

Ajouter dans l’équipe deux ou trois stagiaires qui sont là pour six mois et garantissent la continuité de la connaissance? Utiliser les méthodes comme XP en insistant sur le « pair programming » et la rotation des paires? Mettre au contraire le paquet sur la modélisation formelle à grands coups d’UML? Modéliser la connaissance du projet dans une usine à gaz de knowledge management (une « corporate memory »)? Ne jurer à l’inverse que par les wikis? S’appuyer sur un dictateur bienveillant mais bénévole et non présent sur site, qui agit comme « gatekeeper » sur le code produit? Inventer une nouvelle méthode agile à faire pâlir d’envie ses cousines?

Je n’ai pas la solution complète mais si on la trouvait, cela permettrait de mettre les meilleures technologies à la portée des ambitions des entrepreneurs sociaux les plus innovants. Quelles pistes de réflexion pourriez-vous partager?

InternetActu.net: La société transparente, utopie du 21e siècle ?

InternetActu nous rappelle, à l’occasion de la sortie d’un bouquin, l’utopie d’une société transparente, dans laquelle tout un chacun peut (et veut?) savoir tout de n’importe qui. A l’heure des Google Earth qui vous montrent en train de bronzer dans votre jardin (en attendant le temps « presque réel » et des résolutions encore plus fines) et du ciblage publicitaire individuel par les plate-formes comme Google pour la télé ou les téléphones, plusieurs scenarii de science-fiction explorent les enjeux sociétaux de l’accès aux informations personnelles. Une élite marchande disposera-t-elle de toutes ces données privées pour son propre usage et les consommateurs/citoyens accepteront-ils de les lui céder en échange de services gratuits (davantage de télévision, de jeux video, … en échange de publicité ciblée)? L’intimité deviendra-t-elle un produit de luxe, réservée aux consommateurs qui achèteront au prix fort la version premium de leur télévision, accès Internet, téléphone mobile, etc. ? Les consommateurs/citoyens/utilisateurs réagiront-ils de façon surprenante en rendant largement publiques leurs données privées (télé réalité, blogs, open source et creative commons…) ? Ou des régulations juridiques (CNIL & Co) et quelques scandales impliquant certaines multinationales maintiendront-ils un statu quo durable mais sous tension? Brrr… Et dire que mon boulot consiste à créer des technologies d’analyse de données dans le domaine de l’électronique grand public… Des fois, je me fais peur. J’attends avec impatience quelques bons livres et films de science-fiction qui démocratiseraient ces enjeux et futurs possibles pour permettre aux consommateurs d’exercer avec sagesse leur pouvoir d’achat.

Data mining vs. terrorists: terrorists win and citizens lose

Bruce Schneier is one of that kind of world-class computer security expert I love: he knows what he is talking about and does not overestimate the capabilities of computer technologies however fancy they are. With an extremely simple math explanation, he shows how dangerous, expensive and inefficient data mining technologies can be for identifying terrorist threats.

Dyspraxie: courte définition

La dyspraxie est une maladie peu connue en France. Elle concerne néanmoins entre 3% et 6% des enfants.

J’aime bien la simplicité de cette définition de la dyspraxie:

Cette maladie se manifeste par une altération de la capacité à exécuter de manière automatique des mouvements déterminés.

Il semble que, dans l’Aisne, on commence à prendre la dyspraxie au sérieux.

Web scraping, web mashing

5 Ways to Mix, Rip, and Mash Your Data introduces promising web and desktop applications that extract structured data feeds from web sites and mix them together into something possibly useful to you. Think of things like getting filtered Monster job ads as a convenient RSS feed, along with job ads from your other favorite job sites. This reminds me my Python hacks for automating web crawling and web scraping. Sometimes, I wish I could find time for working a bit further on that…

Ethique et carrière: comment mieux gagner sa vie?

Comment mieux gagner sa vie? La réponse peut être quantitative (gagner plus de fric). Mais elle devient tout de suite plus intéressante si elle est qualitative: gagner sa vie en mettant ses compétences professionnelles en phase avec son éthique personnelle, par exemple.

Une fois par mois, nous accueillons à la maison 4 autres couples pour le plaisir de se retrouver et de discuter de sujets qui nous tiennent à coeur, tous plus ou moins relatifs à nos croyances chrétiennes (bien que nous ne soyons pas tous croyants). Le mois, prochain, c’est mon tour de jouer le rôle d’animateur. Si vous me connaissez un peu et/ou si vous lisez parfois ce blog, vous ne serez pas étonné/e du sujet de discussion que j’ai proposé: comment utiliser au mieux nos compétences et environnements professionnels pour rendre le monde un peu meilleur? de nouveaux choix de vie professionnelle s’offrent-ils à nous? comment faire ces choix en couple ou en famille? Pour préparer la discussion, je propose aux participants de se familiariser un peu avec quelques uns des concepts relatifs à l’intersection entre éthique et économies. Voici les principaux concepts et ce qu’en disent des médias et sites d’obédience chrétienne.

L’éthique comme moyen

L’éthique, en entreprise, est parfois perçue comme un moyen. Un moyen de communiquer et de rassurer l’actionnaire ou les pouvoirs publics. Un moyen de limiter les risques de scandales en introduisant de nouvelles régulations ou modes de gestion dans l’entreprise. Un moyen de rendre l’entreprise meilleure? Voici les principaux concepts utilisés dans cet ordre d’idée.

L’éthique comme finalité

Pour certaines entreprises, l’éthique va plus loin et constitue le fondement de l’activité de l’entreprise (au moins historiquement). Des motivations d’ordre éthique sont à l’origine du projet de l’entreprise. L’entreprise devient un moyen de « faire le bien ».

L’éthique comme marché

Certaines valeurs morales ont une valeur commerciale. On peut vendre (souvent plus cher) un produit porteur d’une certaine éthique. Plusieurs marchés sont concernés.

Petit jeu

Maintenant, voici un petit jeu que nous ferons lors de cette soirée (sautez ce paragraphe si vous êtes l’un des participants!). Auquel des concepts ci-dessus correspond chacune des formulations suivantes:

  1. « Nous aidons des pauvres à sortir de la misère en leur prêtant de petites sommes d’argent qu’ils investissent dans leur activité professionnelle et nous remboursent par la suite avec intérêts. »
  2. « Nous apportons au monde entier un petit changement positif en nous appuyant sur l’efficacité et la puissance de l’entreprise pour le propager. »
  3. « Nous employons des personnes en situation d’exclusion pour leur permettre de retrouver une place dans le monde professionnel. »
  4. « Nous expérimentons des modèles économiques alternatifs au système économique libéral et capitaliste. »
  5. « Nous exploitons les ressources agricoles en limitant au mieux notre impact sur l’environnement. »
  6. « Nous faisons en sorte que nos dirigeants ne puissent pas abuser de leur pouvoir pour leurs propres intérêts. »
  7. « Nous garantissons le respect des droits et de la dignité de nos employés et de ceux de nos fournisseurs. »
  8. « Nous garantissons que l’argent que vous épargnez ne sera pas prêté à des entreprises ayant des activités que votre morale réprouve. »
  9. « Nous garantissons que vous voyagerez sans nuire à l’environnement. »
  10. « Nous héritons d’une tradition qui promeut dans l’entreprise des valeurs telles que la démocratie, l’équité et le partage entre nos membres. »
  11. « Nous investissons votre épargne dans des projets économiques solidaires. »
  12. « Nous mettons en place des outils de gestion et de management qui limitent les risque qu’un scandale ne nous mette en péril. »
  13. « Nous nous efforçons de faire plus d’argent sur le long terme en améliorant nos relations avec nos prochains (employés, fournisseurs, clients, actionnaires, pouvoirs publics, ONGs, …) et en préservant l’environnement. »
  14. « Nous offrons nos services pour le bénéfice de tous les membres de la collectivité et sous la tutelle de leurs représentants. »
  15. « Nous reversons aux producteurs (plutôt qu’aux intermédiaires de distribution) une part plus juste de notre prix de vente. »
  16. « Nous reversons une juste part du prix de votre voyage aux populations locales. »
  17. « Nous reversons une partie des intérêts de l’argent que vous épargnez à des causes auxquelles vous adhérez. »
  18. « Nous soutenons par des moyens visibles les causes les plus proches des valeurs que nous mettons en avant. »
  19. « Nous veillons à ce que votre épargne rapporte de l’argent sans nuire à l’environnement ni aux populations et travailleurs. »
  20. « Nous vivons grâce à notre entreprise le témoignage évangélique d’unité dans l’amour de notre prochain : client, fournisseur, actionnaire, employé, dirigeant, voisin, … »
  21. « Nous vous proposons un voyage qui sera pour vous une rencontre avec les populations locales, bénéficiera justement à celles-ci et ne nuira pas à l’environnement. »

Questions ouvertes

Voici les questions que je soumettrai à votre réflexion. Pour ceux qui viennent à la maison, ce sera notre discussion de la soirée. Pour ceux qui lisent ce blog mais ne seront pas chez moi, vous pouvez partager vos points de vue en laissant un commentaire à la fin de cet article!

  1. Pour chacun des concepts ci-dessus, de manière spontanée, diriez-vous
    • j’y crois ou bien j’y crois pas
    • je me sens concerné (mon entreprise en parle?) ou bien c’est pas pour moi
    • je vois un lien avec mes croyances, ma spiritualité, ma foi ou bien je n’en vois pas d’évident (cela n’a pas grand-chose à voir)
  2. En tant que professionnel, avez-vous déjà eu l’occasion de chercher à
    • gagner plus d’argent
    • faire bien (mieux) votre métier (qualité, performance)
    • faire le bien auprès de relations professionnelles
    • apporter des changements dans votre métier pour le rendre plus en phase avec votre éthique
    • faire des choix de carrière fortement guidés par votre éthique, vos valeurs
  3. Quand? Pourquoi? Comment avez-vous fait? Que s’est-il passé?
  4. Dans vos choix de vie, votre projet de couple et de famille, quelle place faites-vous pour les deux raisonnements suivants:
    • Mes plus proches prochains, c’est ma famille. Ma priorité est donc de gagner suffisamment ma vie pour assurer leur sécurité, leur confort et leur liberté de choix.
    • Mes talents les plus précieux, ce sont mes compétences professionnelles. Ma priorité est donc de mettre mes compétences professionnelles en oeuvre pour rendre le monde un peu meilleur.
  5. Comment gérez-vous ces priorités? Dans votre couple, quels sont vos points de vue respectifs sur la question? Vos divergences et points d’accord?

Si le temps le permet, nous essaierons de faire une petite séance de créativité (brain storming) pour inventer de nouvelles manières de répondre à la question: « Comment mieux gagner notre vie? » Si vous ne pouvez pas venir à la maison, vos suggestions sont les bienvenues en commentaires de cet article également!

Missions solidaires pour prestas en intercontrat

Christian, Bader, Jef et Jjay m’ont donné quelques pistes pour améliorer mon idée: comment convaincre des sociétés informatiques de s’investir dans des projets technologiques à vocation solidaire? Merci à tous les 4!
Un gros risque, c’est que ce genre de choses « terminent à la comm' » comme l’indique Christian. Les SSII n’ont probablement « aucune velléité de changer le monde », en tout cas, ce n’est pas leur vocation. Leur préoccupation évidente semble être « le profit court terme ». Mais pourquoi les SSII n’emploient-elles pas leurs prestataires en inter-contrat à des projets profitables pour elles à plus long terme (projets internes, contribution open source, …) plutôt que de les laisser moisir dans un coin le temps qu’un commercial arrive à les recaser chez un client? D’une boîte à l’autre et d’une personne à l’autre, l’inter-contrat est vécu plus ou moins bien, avec des situations parfois cocasses. En tout cas, l’intercontrat est une source de problèmes pour les SSII et pour leurs employés.

D’un autre côté, il y a peut-être des leviers accessibles pour faire changer cette situation et, du même coup, répondre aux besoins technologiques des innovateurs sociaux.

La notion d’entrepreuriat social, ou d’ethique est très à la mode chez toutes les entreprises qui ont une médiocre image de ce côté là (ça inclue banques et SSII amha).

Que faire? Voici vos suggestions:

faire que les CLIENTS des SSII soient attentifs à ces démarches (dans leur processus de décision ), et comme par hasard tout se débloque

[Peut-être créer des] jeux-projets-concours [:] sélection des meilleurs projets et financement + aide logistique, ça peut marcher.

[De toute façon,] les idées ne peuvent pas venir de l’intérieur [et il faut que la solution permette d’] identifier une retombée financière à quelques mois

Ce n’est pas les SSII qu’il faut convaincre mais d’abord ceux qui travaille dans ces entreprises (de préférence d’une taille respectable à mon avis). S’ils sont motivés ils peuvent faire bouger leur management et toi tu peux les aider à trouver les arguments pour cela.

J’ai envie d’extraire de ces suggestions quelques éléments pour un cahier des charges : la solution doit…

  • apporter une carotte économique pour la SSII, du profit à court terme, peut-être en impliquant certains clients
  • s’appuyer à fond sur la motivation des employés, exploiter celle-ci par des formes d’animation adéquates
  • être économique viable (entreprise sociale, donc entreprise également)

Et si on achetait les prestataires en inter-contrats à leur SSII à un pourcentage symbolique de leur tarif journalier habituel? Cela fournirait l’incitation économique à leur SSII: « Du moment que je sais que je peux disposer de cet intercontrat dès que je le veux pour le mettre chez en client, pourquoi ne pas le vendre à 1% de son prix habituel à un client ‘entreprise sociale’. Si, en plus, ça redore un peu l’image de marque de la boîte et que ça motive certains employés, c’est ça de gagné en plus! »?

Et si ce montant symbolique était réuni par les employés motivés pour participer à l’opération et changer le monde à leur échelle? Pour 10 à 20 employés en mission (selon les périodes et les sociétés), il y en a, disons, 1 en intercontrat. Avec un abonnement/cotisation de quelques dizaines ou centaines d’euros par an et par personne, on réunit le montant nécessaire pour financer une mission solidaire. « Aujourd’hui, je suis chez un client. Mais demain, ça pourrait être moi en intercontrat. Alors, comme j’aimerais bien que certains de mes collègues et moi puissions avoir un véritable impact sur l’environnement/les plus pauvres/la démocratie/le développement des pays du Sud/la priorité de mon choix grâce à ce que l’on sait faire le mieux (la techno), j’achète avec eux le droit de participer à une telle mission lors de mon prochain intercontrat ».

Cette solution consisterait donc à créer un fournisseur de missions solidaires pour prestataires en intercontrat. Les clients sont des prestas qui veulent profiter d’un futur intercontrat pour essayer de changer le monde à leur échelle (plutôt que de se faire chier à éviter les patates et à traîner dans l’agence ou au siège). Les produits sont des missions à forte qualité sociale/environnementale pilotées par des pros du secteur, des gens de terrain qui peuvent vite faire sentir au presta les problèmes sociaux/environnementaux ou autres à traiter. Les autres fournisseurs, ce sont des SSII qui voient d’un bon oeil l’idée d’arrondir leurs fins de mois en vendant certains intercontrats sur un second marché, ultra-discount.

Comment répondre aux questions que ce genre de proposition pourrait soulever? Qu’est-ce qui donnerait suffisamment envie et confiance à un presta pour qu’il achète à l’avance, avec des collègues, son droit de participer à une mission technologique solidaire sur le terrain de son choix? Cette idée a sans doute un côté complètement délirant, mais qu’est-ce qu’on pourrait en faire de bien et d’un peu plus près de la réalité? Qu’est-ce que cela vous inspire? A votre tour!

How to install dozens of linux boxes with FAI?

[updated: the version of the python script was an obsolete one, I updated it, and changed the title of the post for more clarity]

I have 40 old computers (donation from a corporation) that are to be dispatched among small social work non-profit organizations and needy people in several French cities and probably also in Senegal. How to install a customized and usable version of linux on all of them despite the hardware heterogeneity of that collection of PCs and our lack of time? How to allow them to be reinstalled remotely without requiring any computer person to be present on site? I want the linux distribution to be Ubuntu, with a specific list of packages and configuration parameters. Some PCs have 1 hard drive of 9 GB or more, some others have up to 3 hard drives of sometimes 4GB, etc. The solution I found is to use FAI (Fully Automatic Installation) with a couple of custom enhancements such as a Python script that calculates the optimal partition tables for every PC.

Here are some notes about how I proceeded. If you want to contribute to similar projects (Information Technology and innovation for small non-profit organizations working in the field of social work in France or Africa), please drop me a comment here or by email at sig at akasig dot org.

Requirements and architecture

The way FAI works is as follows. The computer to install boots locally either from a CD-ROM, from a floppy disk or via a local networking protocol such as PXE or BOOTP. It then connects to a central installation server. It is served with instructions about how to install itself. It then downloads and installs packages from official repositories (e.g. Ubuntu repositories) or from the installation server if ever this server contains a mirror of the distribution repository. It is a package-based installer and differs from file-based installers such as System Imager (that relies on rsync).

Therefore, the main requirement is to have a server for centralizing the installation process. For testing purposes, I used my home PC with its DSL line and its Ubuntu Dapper distribution. But the production server is hosted in a data center and runs a debian.

For booting, the usual FAI way is to use a local DHCP server for retrieving information such as the address of the installation server. But in my case, I want to allow computers to (re-)install themselves from the premises and local area networks of non-profit organizations or even at home of individuals. I obviously can’t control the DHCP servers that are usually serving this critical installation information. Therefore, I had to work around this by using some special FAI options when creating the bootable CD-ROMs (see below).

Another issue I had to tackle is that FAI supports a limited amount of hardware heterogeneoity. For instance, if your computers don’t have the exact same amount of hard drive space, that’s usually not a problem for FAI. It comes with configuration mechanisms that handle that quite smoothly. But in my case, I have unknown computers to install, with various numbers and sizes of hard drives for instance. Therefore, I had to let computers calculate by themselves the optimal partitioning scheme for any hard drive setup. I did that with the help of a constraint programming library for Python. I also had to make sure that Python would be available on the computer at that stage of the installation process.

Eventually, I had to work around some access control constraints of FAI so that I could write the calculated optimal partitioning scheme to the computer to install. Indeed, when the computer to install first connects to the installation server, it mounts its root partition via NFS in read-only mode. And it doesn’t have access to the hard drive(s) yet. The solution I adopted is to write the optimal partitioning configuration to the FAI RAMdisk (on the computer to install) and to pre-define a symlink from the NFS-mounted root (on the installation server) to that configuration file so that FAI knows where to find it once it has been calculated (details below).

Other modifications I had to do include correcting some shebang lines in scripts that used sh whereas they should have been using bash in the case of an ubuntu server environment. I also had to correct the path a grub post-installation script to adapt it to Ubuntu. Eventually, I had to find the proper collection of FAI « classes » to define in order for Ubuntu to work properly.

I did not invent all of these tweaks and hacks (except the partitioning one). All of them were suggested by the extremely supportive FAI community via their #fai IRC channel on irc.oftc.net (special thanks to MrFai, sanso and h01ger). And I could not get into FAI without the great (but partly outdated!) FAI guide.

Now come the more detailed notes about how to (hopefully) reproduce the steps and tweaks described above.

A bit of FAI magic

On my Ubuntu dapper, the FAI package was a rather old one (v.2.10). Therefore I retrieved the more recent 3.1ubuntu1 package from the edgy repository and installed it manually. The first thing to do was then to go to /etc/fai and check every configuration file for possible updates to make. In /etc/fai/NFSROOT, for instance, I added python as a package to install in the virtual root partition that will be mounted via NFS by the computers to install. I also made sure that my NFS service would allow the target computers to connect and that the iptables firewall would not block these connections either. Then, I was ready for a sudo faisetup that created this virtual root partition under /srv/fai.

Once the NFS root hierarchy has been created, I manually added to it the python constraint programming library required by my partitioning hack. I downloaded the source tarball, pre-compiled it on my installation server with python setup.py build (probably useless). And I manually copied the .py and .pyc file to the proper site-packages directory of the NFS root (to /srv/fai/nfsroot/usr/lib/python2.4/site-packages/).

In order to create the bootable CD-ROMs that would allow computers to start using their local DHCP server but still to know how to connect to the central installation server, I had to use the following command line and options:

sudo make-fai-bootfloppy -B -Ieth0 -l -f /tmp/fai_floppy.img -i /tmp/fai_cdrom.iso -d f -F -v nfsroot=192.168.0.100:/srv/fai/nfsroot ip=:192.168.0.100:::::dhcp FAI_ACTION=install

It creates an ISO image of that bootable CDROM (/tmp/fai_cdrom.iso) that is then to be burnt. It also tells the path to the installation server. I had first tried without the -l option that asks for LILO to be used instead of GRUB but I could not figure out how to let GRUB not ignore the required nfsroot option. That option always disappeared from the kernel options GRUB specifies for booting. Therefore, I decided to use LILO instead. I also had troubles mixing the use of DHCP and the use of my nfsroot option and had to use the -d f option that is supposed to tell the computer to boot with a fixed IP address whereas it will actually refer to my ip= option that tells it to boot with DHCP but to notice that the installation server is at a given IP address. A bit tricky, isn’t it… Anyway, it worked and you just have to replace 192.168.0.100 by the IP address of your installation server and everything should be fine (let’s be optimistic…). As an alternative, you should refer to the man page of fai-cd which is another FAI command for creating a bootable CDROM. Maybe fai-cd is even more recommended than make-fai-bootfloppy indeed but I did not try because it has not yet been properly documented in the FAI guide.

Then, I added my partitioning script as a FAI hook that gets called just before the « partition » FAI task and only for computers that are assigned to my custom FAI class. In order to do so, I saved my script under /srv/fai/config/hooks with the filename partition.MYCLASS (where MYCLASS is the name you choose for describing the class of computers that will be using this partitioning script). Note that you should remove the .txt extension from the filename once you download it from this site.
When called, that script would create a new file name called MYCLASS that would contain the FAI syntax for specifying how partitions are to be created on disks (it’s called a FAI disk_config file indeed). But since this script is called at install time from a computer that mounted its root partition via NFS in read-only, I had to let the script save this MYCLASS file under /tmp/ which is then a writeable RAM disk. But for FAI to be aware of the existence of that file during its partitioning task, I first had to create a symlink from /srv/fai/config/disk_config/MYCLASS to /tmp/MYCLASS. (ln -s /tmp/MYCLASS /srv/fai/config/disk_config/MYCLASS). After some discussion with FAI folks on IRC, I understood this is not the optimal solution. Ideally, I should use the FAI mkrw script instead: it would create an appropriate writeable path on the RAM disk and the script would be stored there. Anyway, the symlink option also works though it’s less elegant.

Beyond creating this customized disk_config file for MYCLASS computers, I also modified and re-used the simple example files that are provided under the FAI examples directory. I created a FRENCH class by copying and modifying the GERMAN class that is provided there so that it tells that KEYMAP=fr-latin9. I used the FAIBASE class file and just modified it a bit: TIMEZONE=Europe/Paris. In the /srv/fai/class/50-host-classes script that defines default classes, I added to the last case the following classes: FRENCH, FAI_BOOTPART (in desperate hope it would add to the GRUB menu an option for booting the computer using FAI from the hard-drive in case of re-installation without CD), NTP and NETWORK (being unsure these were required for the NTP service to be installed by default and to receive proper configuration parameters. In /srv/fai/config/debconf/ I created a FRENCH debconf file by re-using the GERMAN one given as example. In /srv/fai/config/package_config/, I also copied and modified the GERMAN file into one called FRENCH and containing the identifiers of Ubuntu packages related to French setups.

As explained above, I also had to modify several FAI scripts in order to fully adapt them to the Ubuntu environment. These modifications were suggested to the FAI mailing list and forwarded to me by MrFai. They consisted in changing the #! /bin/sh shebang lines into #! /bin/bash lines for the following scripts: class/10-base-class, class/50-host-class, hooks/instsoft.FAIBASE, scripts/FAIBASE/10-misc, scripts/FAIBASE/30-interface, scripts/LAST/50-misc and also the mount2dir script. Last but not least, these modifications included modifying the config/files/boot/grub/menu.lst/postinst file so that it made reference to /sbin/update-grub instead of /usr/sbin/update-grub. I suppose that these changes are soon to be available right from the downloadable FAI packages once they get propagated there.

That’s it. With all of these operations, you should be able to install a fresh (and French) Ubuntu on any computer using the CD you have burnt. Or at least I could install a couple of them.

More things to do

But even then, we are not done with what’s required for our distributed infrastructure to be remotely maintainable. Here is my to-do list:

  • many of the hacks and tricks indicated above should probably not be done directly under the /srv hierarchy but under something like /usr/lib/fai/ or you might face the risk that they some of them get lost next time you recreate your nfsroot using the fai-setup script; there is probably some cleaning to be made here
  • check that the FAI_BOOTPART class was really taken into account because, at the moment, I could not see any FAI option in the GRUB menu of the installed computers
  • add bcfg2 with custom parameters to the classes to install so that the configuration can be properly managed remotely
  • check once again that the way NFS is offered to these remote computers will not create any security issue
  • create a new script that will select the flavor of the distribution to install depending on the amount of RAM on the PC. For instance, with less than 256 MB of RAM, it would be preferable to install a basic Ubuntu (without its Gnome desktop) and use another windows manager
  • setup the default user because the one provided by the DEMO class does not suit my need
  • add some more intelligence to the partitioning script so that it checks if ever there already is a suitable home partition and then ask FAI to preserve it instead of recreating it (and loosing the data it contains)
  • setup a proper SSH account on the server so that FAI can save its log files on it once the installation is done
  • activate the option that will let FAI save on the installation server the detailed hardware information it could read from the PC
  • create a unique and permanent identifier to be stored on the machine and on the server so that we can track PCs; in a first step, the MAC address may be usable but in some future, assigning a permanent UID to the whole list of hardware characteristics could be better if done smartly
  • check that the default Xorg options do not put old screens at risk (resolution and speed)
  • bring a bit of graphical customization in order to brand the desktops
  • add openvpn to the PCs so that we can connect to them remotely even when they are behing NAT routers
  • configure the authentication so that it is made against the central database (MySQL) that would also be used for the identity management of our Plone sites, with an nss_update mechanism that will allow authentication to succeed even when the central server is not reachable (caches the credentials on the PC)
  • for facilitating the initial installation, I should probably stop using bootable CDs and get back to the orthodox FAI way of booting from the network and using DHCPd for delivering instructions about the location of the installation server; however I first have to figure out how to let the computers’ GRUB menus offer a boot option that will not require the DHCPd to deliver those instructions and that will let them use the central installation server somewhere over the Internet

If you are interested in helping some social non-profit ventures with the maintenance and configuration of their PCs and/or have some clues about how to take action on some items of this todo list, please don’t hesitate to get in touch with me and to leave some comment here. Your help would be very much welcome!

Recherche informatique à vocation sociale

J’ai une idée un peu fumeuse de projet qui me trotte dans la tête et j’aimerais bien avoir vos conseils pour la rendre un peu plus réaliste. Il s’agit de proposer à des sociétés de « haute technologie » en informatique (SSII, éditeurs, constructeurs) d’investir quelques ressources (prestataires en inter-contrat, cotisation, …) dans des projets d’innovation technologique et sociale menés conjointement avec des chercheurs et des responsables d’associations reconnues dans leur secteur (action sociale, environnement, humanitaire, handicap, seniors…). Quels moyens pourraient exister pour rendre ce genre de chose attractives pour des SSII par exemple? Qu’est-ce qui pourrait leur donner envie de s’investir dans des projets de recherche informatique à vocation philantropique? Des projets qui visent à « changer le monde » à très grande échelle mais sur des points très spécialisés par le biais des TIC.

Par exemple, j’ai pensé à divers bénéfices possibles qu’une SSII pourrait tirer de ce genre d’action. Mais j’ai du mal à identifier lesquels pourraient avoir le plus de valeur aux yeux de dirigeants de ce genre de boîtes.

  • retombées médiatiques et amélioration qualitative de l’image de marque de la boîte en s’associant à des « grandes marques » du social (Croix-Rouge, Restos du Coeur, ATD, …), de l’environnement (WWF, Greenpeace, fondation Ushuaïa, …) ou de l’humanitaire (Croix-Rouge, médecins du monde, …)?
  • retombées médiatiques et accroissement quantitatif de la notoriété publique de la boîte ?
  • fidélisation des salariés: réduction du turn over, motivation « par les valeurs » de la société ?
  • facilitation du recrutement des jeunes diplômés ?
  • facilitation des relations avec les parties prenantes externes (syndicats, pouvoirs publics, certains actionnaires…) ?
  • formation à la communication interpersonnelle, acquisition par les salariés de « savoir-êtres » sur le terrain, au contact de populations en difficultés (milieux populaires, handicaps, seniors, …) ?
  • acquisition par les salariés de compétences techniques nouvelles au contact de chercheurs de pointe également impliqués dans ces projets (centres de recherche universitaire, recherche privée du genre Google Labs ou autres) ?
  • facilitation des relations avec certains clients (clients du secteur public: Etat, collectivités territoriales ou clients de l’économie sociale: mutuelles, coopératives, associations, fondations) ?
  • satisfaction personnelle des dirigeants de la boîte (philantropie) ?
  • autre idée de bénéfice pour la société?

Je sais que vous êtes nombreux à évoluer professionnellement avec moi dans le secteur de l’informatique, alors vos avis (même candides) me seraient précieux. Lesquels des points ci-dessus vous paraissent les plus prometteurs pour convaincre des dirigeants d’entreprises high-tech de se lancer dans ce genre d’aventure? Des suggestions? Qu’est-ce que vous en pensez?

A Periodic Table of Visualization Methods

A Periodic Table of Visualization Methods présente de Mendeleïve manière un aperçu des grandes méthodes de visualisation d’information complexe. On y retrouve nos préférées: mind maps, treemaps, graphes sémantiques, hype cycle, magic quadrant, diagramme d’Ishikawa, etc. Les amateurs de l’atlas de cybergéographie apprécieront. J’y ai découvert une jolie chose: les diagrammes de tenseurs (également appelés visualisations de champs de tenseurs). Joli. Utile? J’aimerais bien m’amuser avec une bibliothèque python ou java pour générer ce genre de diagrammes de tenseurs… Une fonctionnalité à ajouter à prefuse?

Déployer 40 PCs dans les banlieues

Avec des copains, nous aidons des associations de quartier de banlieues à s’équiper en informatique pour proposer toute sorte d’activités à leurs publics: aide à la recherche d’emploi, atelier création de CV, expression libre pour les jeunes, découverte de l’informatique, formation, recherche d’informations administratives, … Avec l’une de ces associations, nous avons récupéré auprès d’une entreprise 40 ordinateurs que nous allons donc prêter aux assos de quartier. Mais comment automatiser l’installation de ces PC (sous linux)? Comment en assurer la maintenance à distance? Comment en assurer la mise à jour? Bref, comment aider les associations utilisatrices à faire vivre techniquement leur informatique sans avoir à se déplacer à chaque fois dans les quartiers? Et si nous étions capables de gérer 40 PCs, pourrions-nous rêver d’en gérer 40 000 et offrir cette même aide à de plus larges populations d’associations, de bénévoles et d’habitants des quartiers sensibles? et si on passait ensuite aux besoins d’associations avec lesquelles on pourrait travailler en Afrique ou ailleurs?

Le problème est que nous sommes tous nous-mêmes bénévoles, avons un boulot ou des études le jour et une famille la nuit… Nous avons donc très peu de temps pour faire de l’administration de workstations et voulons pourtant simplifier au maximum la vie de ces assos qui n’ont pour ainsi dire aucune compétence informatique poussée. Heureusement, nous avons un peu d’expertise technique ainsi qu’une bonne infrastructure serveurs à notre disposition.

C’est pourquoi nous avons identifié plusieurs logiciels susceptibles de nous être utiles. Les connaissez-vous et avez-vous de bons conseils ou avis à nous donner? Pourriez-vous faire passer ce message à vos geeks préférés pour leur demander leurs conseils? Voici l’état actuel de nos discussions:

Mon pote JM me dit:

> Fred suggere l’utilisation de « system imager »
> pour installer un parc et le gerer a distance, ce qui est une partie des
> questions soulevée par l’usage des machine, et ainsi gagner un temps
> precieux.
>
> J’ai donc trouvé quelques lien dans google,
>
> Cela semble efficace pour faire des clones, et les maintenir.
> http://www.systemimager.org/doc/html/
> http://www.falkotimme.com/howtos/systemimager/index.php
> http://people.debian.org/~jblache/events/sl2004/talks/packages.pdf

J’ai jeté un coup d’oeil à tout ça. J’ai compris qu’il ne faut pas confondre:

  • les cloneurs ou installeurs de machine comme systemimager
  • les gestionnaires de configuration comme bcfg2
  • les utilitaires d’inventaire comme lshw
  • les progiciels de gestion de parc comme GLPI

Ils sont complémentaires (mais pas tous forcément nécessaires pour notre projet) quoique les uns empiètent partiellement sur les fonctionnalités des autres…

Dans tous les cas, puisque les associations ont divers moyens de se connecter à Internet en haut débit (ADSL, câble, …), une bonne idée semble d’équiper ces PC d’un logiciel comme OpenVPN pour être sûr de pouvoir toujours y accéder quelque soit leur configuration réseau.
Les cloneurs/installeurs les + intéressants pour notre projet associatif semblent être:

Les gestionnaires de configuration les + intéressants pour notre projet semblent être:

  • bcfg2, avec notamment ses fonctionnalités de suivi des mises à jour
  • puppet
  • cfengine est + populaire mais + lourd à mettre en place et – moderne

Les utilitaires d’inventaire les + intéressants semblent être:

Et question distribution, en évitant toute guerre de religion, nous hésitons entre:

J’ai repéré plusieurs discussions à propos des usages combinés ou comparés de certains de ces outils mais aucune ne donne un avis définitif sur la question. Et je ne suis pas sûr que les avis évoqués ici ou là correspondent bien à notre situation:

  • extrêmement peu de temps d’administrateurs système,
  • peu (ou pas) de possibilités d’intervention sur place,
  • gestion (et ré-installations?) via l’Internet et non sur un LAN, ou bien ré-installations automatiques à partir d’un CD
  • hétérogénéité matérielle: nombre et taille des disques différents d’un PC à l’autre par exemple
  • mais usages simples et « standards » de ces workstations: bureautique, Web, mail, IM, quelques jeux… plus un peu de VoIP à l’occasion notamment pour des formations informatiques à distance?

Voici les liens intéressants que j’ai parcourus:

Alors, quel est le bon choix? Quelle est la bonne combinaison d’outils pour être efficaces en prenant le minimum de temps de maintenance et la combinaison la plus rapide à mettre en place? Quels sont vos avis?

AkaSig.org

You’ll probably notice that I have bought a domain name: akasig.org I hope the transition to be as smooth as possible (you should not notice any serious difference except maybe in your RSS readers depending on how they manage web adresses). In case you encounter some surprise due to the move, please drop me an email at sig at akasig dot org. The main reason behind that move that I am not sure I will stay with the same hosting provider any longer. Therefore I needed to become independent from its domain name. Levillage.org had some good records as a honest, low cost and responsive provider but the initial company has crashed, its services have been acquired by a new company and it seems to be that the old customers have been somewhat left aside from long term maintenance (the levillage.org hosting system has not been fully integrated with the system of the new company). We’ll see. That and the fact that I was offered a domain name for Christmas. :-)

Web 2.0 architectures with Java

Here are two things to go beyond Web Services (with ReSTfullness in mind):

Take-away: beyond theory (ReST), there now are concepts (WOA) and tools (restlets) for building composite Web applications without requiring SOAP, WSDL and the whole bunch of overbloated WS-* standards that come with them.

Gnome unijambiste des forêts du Nord

Avez-vous déjà vu un gnome unijambiste des forêts du Nord dansant à la pleine lune au milieu de statuettes enroulées dans du jambon? Non?! Alors ne ratez pas la mise en vidéo du premier épisode du Donjon de Naheulbeuk, c’est tordant.
Pour ceux qui voudraient comprendre ce dont il s’agit, voici un peu d’explications. Un pro-amateur génial a créé une saga sonore (feuilleton audio) humoristique dans l’univers fantastique des jeux de rôle Donjons & Dragons. Son émission est diffusée depuis quelques années déjà, épisode après épisode, au format MP3 à télécharger gratuitement sur leur site. Suite à l’énorme succès populaire de sa création, une BD a même été éditée pour mettre en bulles et en images les aventures délirantes de l’équipe des aventuriers de Naheulbeuk. Et comme ça ne suffisait pas, un autre créatif culturel passionné a utilisé un jeu vidéo multi-joueur, (World of Warcraft, LE jeu video multi-joueur), pour mettre en scène et tourner en caméra virtuelle le premier épisode de la première saison du donjon de Naheulbeuk. Les acteurs sont donc des personnages de jeux vidéo. On appelle cette technique de réalisation de vidéos le machinima. Le résultat, encore une fois téléchargeable sur Internet car distribué gratuitement par amour de la chose, est excellent et donne vraiment envie de voir la suite! Tout cela dans un esprit de créativité, de partage et de plaisir, un petit peu à la mode open source: plus on est de fous, plus on crée. Bravo!