Archives pour la catégorie Open source

Volontaires du service civique pour la solidarité numérique

J’admire le travail effectué par Unis Cité, depuis ce tout premier dossier monté en 1994 par Lisbeth Shepherd, jusqu’en 2010 et l’entrée en vigueur de la loi sur le service civique, en passant par le modèle d’entrepreneuriat social incarné par Marie Trellu-Kane. Étant donné que je reviens cet été en région parisienne et que je réfléchis à mon prochain job (directeur de l’innovation numérique et solidaire, ça existe ?), j’en profite pour imaginer de nouveaux projets. Et si Unis Cité tirait le meilleur parti du crowd sourcing et du machine learning pour mettre 100 000 volontaires au service de la solidarité numérique ? Imaginons un peu…

Les communautés d’internautes pour la solidarité numérique

L’Internet a permis à d’immenses communautés de se constituer autour d’objectifs de solidarité numérique. Cela a commencé par des communautés d’informaticiens :

  • plus de 300 informaticiens ont écrit ensemble le logiciel Apache HTTPd qui fait fonctionner la moitié des 880 millions de sites qui font le World Wide Web
  • plus de 15 000 informaticiens ont écrit ensemble le noyau logiciel linux qui équipe plus de 1,5 milliard de smarthpones et ordinateurs dans le monde

Mais, au-delà de ces communautés technologiques, ce principe du « crowd sourcing » et des communautés open source s’est étendu. Ce sont tous les internautes qui ont été invités à contribuer au sein de communautés ouvertes et en ligne. Par exemple, la communauté Wikipedia est riche de plus de 20 millions de contributeurs (dont 70 000 actifs tous les mois) qui écrivent et tiennent à jour une encyclopédie de plus de 38 millions d’articles, consultée par 374 millions de lecteurs par mois.

La communauté OpenStreetMap, riche de plus de 2 millions de contributeurs, a cartographié plus de 3 milliards de repères géographiques et 300 millions de routes et chemins dans le monde entier. Et ses cartes sont utilisées par plus de 20 millions d’utilisateurs chaque mois. Des équipes de professionnels de l’humanitaire utilisent ces cartes pour mieux coordonner leurs interventions d’urgence en cas de catastrophe naturelle (séismes, inondations, ebola, …). Des militants l’utilisent pour mieux cartographier des événements majeurs tels que conflits armés ou manifestations. Des personnes handicapées l’utilisent au quotidien pour préparer leurs déplacements et connaître l’accessibilité des trajets jusqu’aux lieux publics ou privés auxquels ils souhaitent se rendre.

De nombreuses autres communautés se sont organisées pour atteindre des objectifs d’intérêt général aussi originaux que variés :

  • rendre les ouvrages classiques de la littérature et les vidéos du web plus accessibles à tous les internautes quelle que soit leur langue maternelle, quelle que soit leur situation de handicap (Wikisource, Amara, …)
  • faire avancer la recherche en neurologie, en biologie moléculaire, en ingénierie génétique, en phylogénétique, en lutte contre le cancer (Eyewire, EteRNA, Phylo, FoldIt, …)
  • détecter des planètes autour d’étoiles lointaines, mieux comprendre comment s’organise l’univers, comment naissent et meurent les étoiles, la géographie de la planète Mars, le réchauffement climatique de la planète Terre, l’organisation générale de l’univers, l’histoire intime des soldats de la première guerre mondiale, (ZooNiverse)
  • identifier individuellement chaque baleine à bosse dans les océans, mieux comprendre les comportements des chimpanzés ou les cris des chauve-souris pour mieux les protéger (Zooniverse également)
  • mieux choisir les aliments que l’on achète en fonction de leurs ingrédients, leurs caractéristiques nutritionnelles, leur empreinte carbone et leur prix (Open Food Facts)
  • apprendre aux ordinateurs à mieux comprendre la voix humaine par exemple pour permettre la commande vocale par des personnes en situation de handicap (Voxforge)

Thomas, volontaire pour la solidarité numérique

2017. Thomas a 19 ans. Avec un bac STMG en poche, il aimerait travailler dans la banque, pas forcément comme trader même si ce serait son rêve, mais peut-être en tant qu’assistant commercial. Il ne sait pas trop. Pour l’instant, il fait son volontariat, en tant que volontaire numérique. Il a commencé il y a quelques semaines déjà.

Il est content : cette semaine encore, il est dans la même équipe que Léa, Nathan et Alexandre. Il sort tout juste du McDonald’s où s’est déroulé le planning hebdomadaire de l’équipe. Son objectif personnel, pour cette semaine, c’est d’atteindre le niveau 3 en cartographie humanitaire. Et l’équipe a estimé pouvoir s’engager à atteindre un score de contribution de 380 points d’ici vendredi soir. C’est l’objectif collectif de la semaine.

Thomas est rentré chez lui. Sa mère le laisse contribuer tranquille sur son ordinateur perso. Mais il pense qu’il va plutôt aller contribuer chez Nathan cet après-midi, pour qu’il lui explique comment on utilise le wiki pour la cartographie humanitaire : c’est en anglais et l’anglais, ce n’est pas le fort de Thomas… De toute façon, le wifi chez Nathan est bon aussi. Le seul problème, chez Nathan, c’est son abonnement Netflix… Plutôt tentant. Mais il sait que Léa, l’animatrice de l’équipe, elle aussi volontaire mais en fin de service, veille au grain et vérifiera sa production du jour sur openstreetmap : il n’a pas trop intérêt à traîner, il n’a pas envie de perdre des points d’expérience en cartographie comme l’autre jour.

Thomas se connecte au slack de l’équipe et met son casque. Nathan est déjà connecté (il habite en face du McDo…) et tchatte plutôt de contribuer.  » Nathan, bouge-toi si tu tiens aux 380 points de la semaine !  » Nathan répond à Thomas  » Check-moi plutôt 1A755D8978FECAA24 « . Thomas hausse les épaules et saisit le code du jour de Thomas dans le formulaire de pointage de l’équipe. Thomas copie-colle dans le tchat son propre code de pointage du jour, pour que Nathan puisse à son tour attester de sa présence en ligne. A chaque heure, c’est l’appel et on a que 10 minutes pour copier-coller les codes de chacun.

C’est parti pour la carto humanitaire niveau 3. Où est le lien de la grille de l’Afghanistan ? Le voila… Thomas choisit la case C32 de la carte : aucun volontaire ne s’en est occupée jusqu’ici. L’image satellite affiche un paysage désertique et montagneux. La rivière qui traverse la case C32 est bien visible. Thomas clique à chaque coude de la rivière pour la tracer en bleu sur le fond de carte. Tant qu’il y est, il poursuit le tracé de la rivière sur les cases C33 et D33. De temps en temps, il valide son tracé et enregistre dans le formulaire de l’équipe le lien de son nouveau tracé : autant de points qui vont faire grimper le score de l’équipe.

Léa leur a expliqué que les inondations de l’an dernier ont été terribles. Et l’une des équipes d’urgence du Croissant-Rouge n’avait aucune des rivières de cette province sur ses cartes, ce qui a considérablement retardé l’aide aux populations des villages les plus touchés. C’est pour ça que la communauté mondiale des cartographes bénévoles « OpenStreetMap » a mis en place ces outils de contribution pour volontaires en ligne. Depuis le séisme d’Haïti en janvier 2010, une équipe de professionnels de l’humanitaire s’est même associée aux cartographes bénévoles pour coordonner les efforts, de manière à en maximiser l’impact sur le terrain. Il parait que des bénévoles sont en train de mettre au point des drones pour accélérer la cartographie de terrain en cas de nouvelle catastrophe naturelle.

Déjà 1 heure passée à tracer les détours de cette rivière du bout du monde. A ce rythme là, si toute l’équipe s’y met, les 380 points devraient être largement dépassés d’ici vendredi. Mais il est déjà 11H. Nathan a fait 3 blagues douteuses dans le slack. Chacun y va de son « lol » poli. On dirait que Nathan a compris : ses blagues ont changé de registre. Thomas vérifie son emploi du temps : aujourd’hui, 11H, c’est transcription ! Chacun colle son nouveau code de pointage, pour répondre à l’appel.

Thomas et la plupart de ses équipiers doivent maintenant sous-titrer une série de vidéos humoristiques pour permettre à des internautes sourds d’en profiter. Thomas a compris le projet, la dernière fois pendant la séance de découverte. Mais il n’a pas encore entièrement compris comment utiliser la plate-forme de sous-titrage : il commence juste le niveau 1 en transcription. Alors il se connecte au wiki de formation des contributeurs et reprend le tutoriel là où il en était.

Il lance la vidéo du tuto et reconnaît la voix et le bureau virtuel d’Alexandre. Alexandre explique d’une voix monocorde où et quand il faut cliquer sur les différents boutons pour contrôler le défilement de la vidéo et saisir les sous-titres. Décidément, Alexandre n’est pas fait pour devenir commentateur sportif, ni commentateur d’enregistrement vidéo d’ailleurs… Thomas se dit qu’il faudra qu’il lui fasse un tutoriel sur comment parler avec enthousiasme dans un tutoriel vidéo (Thomas est de niveau 4 en enregistrement de tutoriels). Bref. Thomas écoute attentivement Alexandre, répond au quiz, se connecte à la plate-forme de transcription et s’exerce sur une vidéo d’exemple. Il colle dans le formulaire à la fin du tutoriel le lien vers son essai de transcription, dans l’espoir qu’Alexandre vienne l’évaluer d’ici peu et lui valider sa compétence de sous-titrage.

Il reste un peu de temps d’ici le déjeuner. Thomas en profite pour se connecter à l’historique des contributions du matin. Il voit les liens de contribution cartographique de son équipe mais n’a pas le droit de l’évaluer. Il ne serait pas très objectif : c’est son équipe, après tout. Alors il clique sur le tracé cartographique d’une certaine Manon… Manon a saisi les noms de toute une série de villages afghans en les recopiant à partir d’une vieille carte de la CIA. Thomas vérifie 3 ou 4 noms de village. Ils sont conformes à ce qui est écrit sur la carte. Thomas donne un like à Manon. Un point de plus pour l’équipe de Manon, en tant qu’évaluée. Et un point de plus pour l’équipe de Thomas, en tant qu’évaluateur.

Thomas s’arrête là après une matinée bien chargée. Au programme de l’après-midi : encore un peu de cartographie humanitaire, chez Nathan donc. Il a aussi une heure de classification de galaxies (lesquelles sont en spirale, lesquelles sont avec une barre centrale, …) et une heure d’enregistrement de phrases pour apprendre aux ordinateurs à comprendre la voix humaine. Il compte sur la récréation de l’après-midi pour que Nathan lui raconte ce nouveau projet qui consiste à photographier la liste des ingrédients de tous les aliments de ses placards pour aider les gens à acheter des aliments meilleurs pour la santé et à chasser les mauvais additifs alimentaires…

Ce soir, il se dit qu’il aura des chances de rêver de sourds afghans de la CIA qui nagent dans des rivières lactées sans conservateur… Espérons qu’il dorme bien : demain matin, Thomas est invité dans une banque du quartier pour expliquer aux employés ce en quoi consiste le volontariat pour la solidarité numérique (eux aussi peuvent apprendre à contribuer). Avec un peu de chance, il fera la connaissance du directeur de l’agence.

Organisation du volontariat numérique

Le volontariat numérique s’effectue en équipes de 4 à 8 volontaires. Les volontaires se retrouvent en présence au moins une fois par semaine, dans un lieu associatif ou public avec du wifi (café, fast food) ou chez l’un des volontaires, selon leur préférence. Le reste du temps, ils travaillent à distance, depuis un ordinateur personnel connecté en haut débit.

Pour devenir volontaire numérique, il faut donc disposer d’un ordinateur personnel, d’une connexion haut débit (ADSL, …) et savoir utiliser sans difficulté la messagerie électronique, le Web, les réseaux sociaux (Facebook, …) et la conférence à distance par webcam (Skype, …).

Le volontariat est organisé selon un emploi du temps individuel très contraint. Au cours d’une journée, à chaque heure, chaque volontaire contribue à l’un des 10 projets ouverts. En fonction de son niveau d’expérience dans les différents rôles proposés par ce projet, il doit contribuer en suivant des consignes précises. Chaque contribution laisse des traces numériques (un lien hypertexte) que le contributeur vient coller dans la liste des contributions de son équipe. Ses contributions sont évaluées par des volontaires d’autres équipes. Et, s’il a le niveau requis en compétence d’évaluation, il peut évaluer les contributions d’autres équipes.

Chaque projet permet différents types de contributions en ligne : des contributions les plus simples à celles nécessitant le plus de compétence et d’expérience dans le projet. Chaque type de contribution de chaque projet peut s’apprendre via une autoformation en ligne ou auprès d’un volontaire plus expérimenté et reconnu comme formateur compétent. Chaque volontaire dispose d’un profil de compétences pour chaque projet.

Chaque équipe de volontaires est animée par un volontaire plus expérimenté qui a réussi à apprendre le rôle d’animateur. Chaque projet dispose de formateurs reconnus, eux-même formés par des volontaires jouant le rôle d’instructeurs. Certains instructeurs sont devenus concepteurs de formations ou bien ambassadeurs. Les ambassadeurs gèrent les relations entre les volontaires et les communautés ouvertes d’internautes bénévoles à l’origine des projets (par exemple la communauté wikipedia, la communauté openstreetmap, …).

Tous les volontaires ont également un rôle d’ambassadeur du numérique, auprès de leur quartier (associations, établissements scolaires, lieux publics, entreprises) pour faire découvrir le bénévolat numérique et faire contribuer ponctuellement le plus grand nombre possible de personnes sur des tâches numériques d’intérêt général très simples.

Parmi 1 000 volontaires numérique, on peut compter 800 volontaires faisant principalement office de contributeurs sur les divers projets, mais aussi 160 volontaires jouant le rôle d’animateurs d’équipes, 32 volontaires agissant comme formateurs, 6 volontaires concepteurs de formations et 2 ambassadeurs servant d’interface avec les communautés d’internautes.

Objectifs

  • Année 1 : 1 000 premiers volontaires, 000 contributeurs à temps plein
  • Année 2 : 10 000 volontaires contributeurs à temps plein et jusqu’à 90 000 bénévoles contributeurs ponctuels, soit 10000 contributeurs au total
  • Année 3 : 100 000 volontaires contributeurs à temps plein et jusqu’à 900 000 bénévoles contributeurs ponctuels, soit 000 000 de contributeurs au total dans le monde

Moyens

Pour développer et animer une communauté de 1 000 000 contributeurs dont 100 000 volontaires à temps plein, plusieurs rôles doivent être assurés par une équipe solide de professionnels salariés à temps plein :

  • 4 personnes : gestion administrative et financière, et formation,
  • 1 personne : web design, rédaction Web et animation de communauté,
  • 2 personnes : développement logiciel et administration système (devops fullstack),
  • 1 personne : data science et machine learning,
  • 1 personnes : direction de projet, stratégie technologique et managériale.

Qu’en pensez-vous ?

How to run Tesseract from web browsers with the help of emscripten

Tesseract is a fairly accurate Optical Character Recognition (OCR) engine available as open source and free software. It’s written in C and C++ and usually runs from the command line or from a GUI. But I work on a web application where we have to let thousands of users run OCR tasks from their web browsers without having to rely on server-side processing. So we asked our great Capgemini developers team to compile Tesseract so that it could be executed from Javascript code. This is were emscripten is useful : it allows programs written in C to be compiled into Javascript. This compilation was tricky but they made it.

Here is their HOWTO documentation.

I share it under the Create Commons CC-BY-SA 3.0 license so feel free to improve it as you like.

Apprendre à coder, quelles solutions pour mes enfants ?

Mes enfants ont 8 ans et 11 ans, garçons et filles (oui, j’ai des multiples…). Je tiens à ce qu’ils apprennent la culture et les bases du code informatique car je crois que le code modèle en partie la société et que ceux qui s’en sortiront le mieux seront ceux qui sauront « bidouiller » (hacker) la société et non ceux qui se feront bidouiller par elle. Bref. Comment leur donner les moyens et l’envie d’apprendre à bidouiller du code ?

Après réflexion, examen des solutions populaires sur le Net et quelques tests avec mes enfants, en me basant également sur mes propres souvenirs d’enfance (j’ai commencé à coder à 8 ans), je crois que l’approche et les outils à privilégier dépendent grandement de l’âge. Et qu’il ne s’agit pas uniquement de choisir un langage de programmation pour en enseigner les bases mais plutôt de trouver un environnement d’apprentissage adapté à l’âge, motivant et ludique pour créer de l’engagement, du plaisir et de l’effort. En résumé, je pense que, jusqu’à 11 ans, l’environnement idéal est Scratch, ou les jeux blockly. De 11 ans à 14 ans, l’environnement idéal me semble Minecraft. Au-delà, des environnements plus « sérieux », probablement autour du langage python pourraient être plus appropriés.

En plus de cette approche « par âge », j’ai été séduit par ce que peuvent apporter les activités d’apprentissage :

  • autour de l’écriture de « fictions interactives » (livres dont vous êtes le héro) qui tirent partie de l’interdisciplinarité entre la littérature, les arts et le code,
  • autour du matériel informatique (Arduino, Raspberry Pi, Lego Mindstorms ou tout simplement assembler un ordinateur)
  • mais aussi en « mode débranché » pour découvrir l’algorithmie théorique, sans matériel informatique, avec du papier, un crayon, des allumettes, etc.

Je me dis que ce qui manque aussi probablement, étant données les tendances technologiques de fond, ce sont des activités pour faire découvrir le machine learning aux enfants, les bases de la probabilité appliquée à la résolution automatisée de problèmes (raisonnement bayésien, etc.).

Enfin, quel que soit l’âge ou les types d’activités, se pose un défi pédagogique : comment animer ces activités lorsqu’on a soi-même peu de temps (ou beaucoup d’enfants…) ? Pour répondre à cela, deux pistes se dégagent :

  1. les ateliers animés par des professionnels (mais il y en a peu sur le territoire français, en dehors de Paris et quelques grandes villes)
  2. ou bien les mécanismes de jeu qui, avec le bon scénario et la bonne plate-forme éducative, guident la progression des apprenants avec moins de dépendance à un animateur (donc de manière moins coûteuse en temps et en argent).

Les mécanismes de jeu (le gameplay, règles, système motivationnel de quêtes et badges) et le scénario (imaginaire adapté et motivant) sont importants, mais la richesse visuelle du jeu importe presque autant (on ne refait pas nos vieux cerveaux…). Le fait de pouvoir changer le personnage d’un jeu en un petit panda a fait un gros effet (positif) sur ma fille… Presqu’autant que si elle avait pu le transformer en pingouin tux.

Voici donc, en vrac, une sélection de ressources pour illustrer sur quoi s’appuient mes croyances actuelles.

Autour de Scratch

Autour de Blockly

  • les jeux Blockly proposent une bonne progression pour découvrir les bases de l’algorithmie (boucles, branchements conditionnels et variables), c’est ce que j’ai pu vérifier avec ma fille (11 ans), mais on est vite frustrés par la raideur de certaines étapes de cette progression : soit on maîtrise déjà les concepts et ça passe très vite, soit réussir à franchir certaines étapes ressemble à un casse-tête assez douloureux ; j’aurais aimé voir une progression plus longue, plus variée et plus « pas à pas » parfois
  • RapidRouteur est une progression ludo-éducative basée sur blockly, avec plus de 100 niveaux de jeu et qui mène peu à peu à découvrir Python (malheureusement seulement en anglais)
  • pencilcode ressemble à blockly et propose des tutoriels mais reste en anglais seulement pour le moment
  • Code4Kids est une solution française d’animation pédagogique proposée pour les écoles du premier degré par Catchu, autour d’un environnement Blockly
  • Sur une logique Blockly mais sur téléphone, l’appli iOS HopScotch propose un environnement pour apprendre à programmer des jeux mobiles ; mais est-ce vraiment du blockly là-dessous ? je n’ai pas vérifié

Autour de Minecraft

  • avec les super « Guides officiels » (débuter, construction, combat, Redstone, …) pour découvrir toutes les arcanes du jeu
  • l’intérêt pédagogique de Minecraft est démultiplié si on utilise les bons serveurs, « mods » et leurs tutoriels, mais cela implique d’accéder à un serveur adapté voire de se créer son propre serveur :
    • Gnancraft est créé et utilisé par Raphaël Pierquin et l’équipe des Coding Goûters
    • ThoughtStem propose des ateliers de programmation avec Minecraft pour les enfants dans la Silicon Valley mais également quelques activités en ligne
    • LearnToMod est une plate-forme payante pour apprendre la programmation à travers la modification de minecraft
    • ComputerCraft est un mod minecraft destiné à la découverte de la programmation et qui permet d’apprendre à scripter en langage LUA
    • Avec Minecraft, vous l’aurez compris, on est dans un environnement très immersif et très bidouillable alors pourquoi ne pas enseigner les mathématiques via Minecraft ?

Autour de Python :

  • Parmi les langages de programmation généralistes qui ont un véritable usage industriel, python est sans doute le plus utilisable pour l’apprentissage de la programmation car il combine une syntaxe très lisible et un modèle exemplaire de programmation orientée objet ; il ne lui manquerait plus qu’une syntaxe en français pour faire fureur dans les bacs à sable des lycées… En attendant, faut-il imaginer faire découvrir la programmation au collège ou au lycée en utilisant pygame et piglet comme environnements ? sans doute serait-ce un choix plutôt risqué car on peut lire des doutes crédibles sur la vivacité de la communauté pyglet, sur son usage des decorators qui est difficile à expliquer pour des débutants et ressemble donc à une magie arbitraire et fort peu éducative…
  • Etant donné la popularité et la richesse de la communauté python, de bons livres existent certainement en français pour pour apprendre la programmation avec python,
  • Checkio est un jeu en ligne très séduisant pour apprendre à programme avec python

Autour de JavaScript

Quand on devient plus grand et qu’on veut manipuler du code « pour de vrai », python est une excellente solution mais JavaScript s’étant imposé partout sur le Net ces dernières années comme langage généraliste, y compris côté serveurs, il n’est pas idiot d’apprendre la programmation avec JavaScript, même si ça a un petit côté maso et casse-cou. Alors pourquoi ne pas découvrir carrément la programmation par ce biais, avec par exemple Code Monster (en anglais). JSWarrior fait pâle figure à côté d’autres plate-formes ludo-éducatives et place la barre un peu haut pour les débutants : animateur indispensable.

Avec des fictions interactives ?

Les « Livres dont vous êtes le héro » (également appelés « Livres-jeux », « Choose Your Own Adventure », « CYOA » ou « gamebooks), sous forme numérique, sont des contenus interactifs qui permettent de visiter sous une forme créative et motivante des concepts simples d’algorithmie (branches conditionnelles, variables, voire conception objet), de programmation (compilation, exécution) mais aussi de design de jeu. Bien sûr, on peut faire une fiction interactive avec de simples liens hypertextes dans un wiki, mais les logiciels pour écrire les fictions interactives sont devenus très sophistiqués en s’inspirant des premiers jeux textuels en liens (les muds) et en introduisant donc des possibilités algorithmiques amusantes et créatives. Je n’ai pas cherché de proposition de progression pédagogique pour découvrir l’algorithmie à travers l’écriture de fictions interactives mais je suis à peu près sûr que ça existe. Cet angle de découverte de la programmation pourrait très bien convenir aux enfants les plus férus de lecture, d’écriture… et d’aventure. De nombreuses solutions logicielles très éprouvées et plus ou moins faciles à prendre en main existent pour créer des fictions interactives plus ou moins sophistiquées informatiquement. Parmi les logiciels de création les plus connus, on peut citer Twine, le vénérable Inform7, TADS, ADRIFT, ALAN mais aussi, avec un côté plus récent, squiffy et QuestKit. Il faudrait y regarder de plus près. Des bibliothèques en ligne permettent ensuite de partager et découvrir les créations, pour les lire et s’y plonger sur ordinateur ou sur smartphone.

Avec du matériel bidouillable

Pour les enfants et parents qui n’ont pas peur de leurs doigts…

Bien sûr, on doit citer les vénérables mais toujours d’actualité Lego Mindstorms, pour les plus familles qui en ont les moyens. Mais on regardera surtout du côté de  :

Autour de plate-formes ludo-éducatives « tout-intégré »

Il existe des sites Web proposant des progressions ludiques pour apprendre la programmation. La plupart sont fondés sur des logiciels dits privateurs. Vous n’avez pas le droit de les utiliser comme vous voulez, de les étudier, de les partager, bref de les bidouiller, ce qui est un peu paradoxal. Mais l’avantage de ces plates-formes peut résider dans leur caractère « intégrée » : elles pourraient offrir une expérience ludique plus agréable et pédagogiquement plus efficace si elles accompagnent de A à Z les programmeurs en herbe. Mais au risque de disparaître corps et âme en cas de faillite commerciale. Quelques-unes de ces plate-formes utilisent du libre, mais ce ne sont pas forcément les meilleures pédagogiques.

  • Autour de C++ : quitte à être maso, pourquoi ne pas apprendre la programmation avec un langage beaucoup compliqué à apprendre que python ou même JavaScript, c’est le défi que propose pourtant codowl.io (ah tiens, c’est en français ?)
  • Code.org propose des progressions en français sous forme de sélection d’activités débranchées, de jeux algorithmiques et d’activités de programmation. C’est un peu la Khan Academy de la programmation : une association américaine à but non lucratif fait vivre cette plate-forme, à grands renforts de dons de Microsoft, Facebook et autres Google. Très Silicon Valley. Le code qui fait tourner la plate-forme est libre mais pas les contenus des activités pédagogiques qu’elle héberge. La richesse et la qualité des activités proposées semble pertinente. Hum… Pas mal.
  • Codecombat.com vous embarque dans un vrai jeu vidéo pour apprendre à programmer, avec des contenus graphiques et sonores de qualité. Le joueur a le choix du langage de programmation qu’il veut apprendre (au moins au niveau de la syntaxe) : python, coffescript, clojure, … le choix est vaste. Et franchement, c’est du joli ! Ca donne envie de jouer et d’apprendre… A signaler encore quelques bugs et défauts de traduction en français.
  • Blackvoxel est un jeu en logiciel libre, pour apprendre le C++, l’assembleur et le graphisme 3D. On dirait bien là un jeu pour apprendre à programmer des jeux « à la dure » plutôt qu’avec des progressions pédagogiques pour débutants. A réserver pour des lycéens ou des passionnés qui se seront déjà fait la main sur des langages et des environnements plus simples ? Blackvoxel semble proposer des modalités intéressantes pour impliquer un enseignant dans la progression de ses élèves-joueurs.
  • Encore pour des lycéens (ou pour des grands collégiens, +13 ans), LiveCode propose une solution d’apprentissage du code pour développer des applis mobiles.

Bon, voila pour mon petit tour du moment. Je suis surpris par la quantité de solutions proposées, y compris en français, et par la première impression très positive que me donnent certaines d’entre elles. Pour mes enfants, je compte explorer les pistes blockly mais surtout Minecraft car la communauté des modders Minecraft est tellement grande qu’il existe déjà tout un tas de réponses à des problématiques pédagogiques récurrentes. Par exemple, il existe des systèmes de gestion de quêtes dans Minecraft qui me semblent intéressantes. Et si je pouvais promettre 5 minutes de Minecraft de plus à celui de mes enfants qui fera la vaisselle demain soir ? ou à celui qui aura bidouillé avec succès tel ou tel aspect de notre vie familiale ?

Et vous, vous en faites quoi de tout ça ?

Smart Contracts, crypto-monnaie et Revenu Libre d’Existence

J’ai un ami qui dédie sa carrière au « libre » et aux « biens communs » et je m’apprêtais à lui soumettre une idée d’innovation solidaire par email. Mais je lui ai dit que ça pouvait aussi t’intéresser, cher lecteur-contributeur. Ca parle donc de liberté, de solidarité mais aussi de cryptomonnaie (bitcoins, ethers) et de programmation de « smart contracts » solidaires. Donc essentiellement de numérique et d’innovation sociale.

L’idée de base, c’est d’essayer de rendre libres et communs des biens rivaux, ce qui est théoriquement impossible. J’ai évoqué cette idée ici il y a quelques années mais en anglais. Le principe est inspiré du Pay-It-Forward et de l’économie de communion. Un peu comme avec une licence de logiciel libre (copyleft), on rédige un contrat entre nous du style suivant.

Je te donne ce stylo (je te le « libère ») à condition que tu t’engages à donner à ton tour un stylo de valeur égale ou supérieure à celui-ci à la première personne qui t’en fera la demande dès qu’elle t’en fera la demande et acceptera les mêmes conditions que celles-ci et sans poser aucune restriction supplémentaire sur cette personne, le stylo ou l’usage que cette personne en fera.

Le stylo en question devient donc « libre » dans la mesure où plus personne ne peut se l’approprier au point d’en priver les autres. Mais tout le monde peut l’utiliser, l’étudier, l’améliorer et le partager. Presque comme un logiciel libre. Bien sûr, la différence principale c’est que, dès que je rend ce stylo à mon prochain, je ne l’ai plus. On ne peut pas l’utiliser simultanément à plusieurs. Mais je n’en suis pas non plus définitivement privé puisque je peux le redemander. Et si je l’use trop, c’est à moi de le réparer, de le remplacer ou de l’améliorer pour que je rende toujours une valeur au moins égale à celle que j’ai reçue.

Ce qui est amusant, c’est que si on inclut cette notion « d’intérêts » au sens financier (je te donne 1 stylo si tu t’engages à en donner 2, ou bien je compense au moins « l’usure » du stylo) et une notion de prix comparable ou de valeur au moins équivalente (je te donne des biens de valeur X si tu t’engages à en donner de valeur X * 2, pas forcément les mêmes biens) alors on peut imaginer contaminer ainsi tous les biens rivaux de la planète et, en théorie, mettre fin en pratique à la propriété privée. En pratique… en théorie.

Je te libère 1 euro la prochain fois que je te vois à condition que tu t’engages à en libérer 2 fois plus à la première personne qui t’en fera la demande, dès qu’elle t’en fera la demande et acceptera les mêmes conditions que celles-ci et pas une de plus. Par effet boule de neige, ce contrat librement contaminant pourrait, à terme, empêcher quiconque de refuser de partager son argent avec son prochain…

Bon, l’idée peut paraître amusante mais, en pratique, elle est difficile à implémenter à grande échelle. Il serait coûteux de faire respecter un contrat de ce type. Difficile de savoir qui détiendrait, à un instant t, des biens libres, lesquels et de quelle valeur, selon quelle version du contrat. Difficile de s’assurer que le bien rendu est effectivement de valeur égale ou supérieure au bien libéré. Et ensuite difficile d’obtenir d’un système judiciaire qu’il fasse appliquer ce contrat en allant jusqu’à faire saisir les biens libres de cette personne. Sans compter les personnes qui organiseraient leur insolvabilité par malhonnêteté ou seraient tellement endettées que ça ne serait pour elle qu’une dette insolvable de plus, cette fois vis-à-vis de tous tiers. Des dettes communes, en quelque sorte. Les insolvables agiraient alors comme des trous noirs à biens communs, en profitant mais en privant alors définitivement les tiers. Une tragédie..

Mais les choses sont plus facilement maitrisables avec la notion (compliquée) de smart contract. Je ne vais pas expliquer ici ce concept mais supposer que tu sais ce qu’il en est. Pour ce qui nous intéresse, on peut imaginer programmer un token de cryptomonnaie basé sur Ethereum selon un contrat de liberté inspiré de la GPL et du pay-it-forward : Alice donne ce token à Bob à condition que, etc. L’intérêt du smart contract c’est que Charles et David n’ont pas besoin de faire confiance à Bob pour savoir que le contrat va s’appliquer. Le contrat s’applique automatiquement, informatiquement, et avec une traçabilité parfaite. On peut programmer le contrat pour savoir à tout moment qui détient quels tokens libres et combien et selon quel contrat, et ces tokens peuvent être obtenus automatiquement par n’importe qui en ferait la demande. Il y a bien sûr un risque de fraude si on permet aux tokens d’échapper au contrat. Par exemple, si j’échange mon token contre des euros et que je m’approprie les euros obtenus au lieu de les laisser soumis au contrat qui me lie ainsi au reste de l’humanité. Qui va garder la contrainte de liberté lié au caractère « commun » de ce token ? Celui qui a obtenu les euros ? Ou celui qui aura récupéré le token libre ? Que vaut un token libre s’il ne peut pas être utilisée aussi librement qu’une monnaie non libre ? L’idéal serait que le détenteur de token libres puisse effectivement les échanger contre des euros libres, qu’il garde la charge de liberté initialement attachée au token mais désormais attachée aux euros dans le monde hors numérique dans lequel le smart contract ne s’applique plus automatiquement. Mais ce risque doit être quantifiable, limitable et gérable.

Du coup, ça m’a donné une idée d’extension autour du concept de revenu d’existence. L’idée est de faire circuler des smart contracts programmés pour permettre une redistribution équitable et universelle des richesses monétaires entre les personnes. Un revenu d’existence qui ne serait pas émis par une administration pour ses administrés seulement mais qui serait auto-organisé par contrat et librement consenti par ses souscripteurs en fonction de leur générosité (et de leurs besoins). Imaginons donc le contrat suivant.

    Alice verse 1 ether à Bob en tant que « revenu libre d’existence » (RLE) à condition que Bob s’engage à reverser un RLE :

  • à la première personne physique vivante qui en ferait la demande pour une période donnée, (Bob ne choisit pas le demandeur Charles qui lui demandera un RLE pour le mois de juillet 2015)
  • dès que cette personne en fait la demande, (Charles le demande le 9 août 2015 et donc l’obtient immédiatement, automatiquement, sans que Bob puisse s’y opposer comme il s’y est engagé initialement auprès d’Alice)
  • tant que la somme cumulée des reversements de RLE effectués par Bob est inférieure à la somme cumulée des RLE reçus par Bob, multipliée par un facteur d’intérêt F supérieur ou égal à 1, (tant que Bob n’a pas déjà reversé à des tiers F fois le montant total de RLE dont il a bénéficié ; une fois que Bob a beaucoup reversé de RLE, il s’est acquitté du contrat de RLE qui le liait à Alice)
  • et, étant défini que le montant nominal du RLE d’une personne pour une période donnée est égal à la somme cumulée des RLE reversés au cours de cette période divisée par le nombre de personnes ayant reçu ces reversements, (par égalité, le montant nominal du RLE est un partage égalitaire de tous ce que les gens ont pu reverser comme RLE à cette période), tant que Bob, pour la période demandée, n’a pas déclaré avoir touché comme revenus totaux un montant inférieur à 4 fois le montant nominal du revenu d’existence pour cette période, (c’est une exception au principe de liberté au nom de la solidarité ou de la fraternité : par solidarité, on autorise Bob à s’approprier temporairement le RLE qu’il a perçu tant qu’il est pauvre et donc à priver les tiers du reversement de ce RLE)
  • d’un montant égal au montant nécessaire et suffisant pour que cette personne ait bénéficié, au titre de cette période, du montant nominal du RLE d’une personne pour cette période, (on reverse à Charles ce dont il a besoin pour bénéficier d’un RLE complet pour cette période, mais pas plus)
  • sous les mêmes conditions que celles énumérées dans ce contrat ou dans toute version de ce contrat émise ultérieurement par Jean Millerat (il pourrait s’agir d’un auteur plus compétent, comme une Free Software Foundation de la liberté, de l’égalité et de la fraternité, composée de juristes confirmés…)
  • et sans apporter de restriction ou condition supplémentaire.

Donc tous les bénéficiaires du RLE reversent à leur tour un RLE aux personnes qui le demandent. La machine est amorcée par les personnes solidaires qui acceptent de libérer un peu d’argent de temps en temps (les Alice). La machine est entretenue par tous les bénéficiaires suffisamment riches pour reverser leur RLE et un peu plus, à toute la planète (les Bob et les Charles). Et la machine bénéficie à tous ceux qui, à un moment de leur vie, n’ont pas assez de revenus pour reverser immédiatement un RLE (parfois Bob, parfois Charles). C’est une espèce de gigantesque mutuelle automatisée, en quelque sorte.

Je vais donc jeter un coup d’oeil à la programmation de smart contracts sur Ethereum pour voir dans quelle mesure ce concept est implémentable et donc ensuite essayer de le tester.

A noter : ce concept peut être étendu à de nombreuses autres formes d’innovation sociale, c’est le tour de force des smart contracts et des cryptomonnaies, qui « informatisent la confiance » (qui rendent la confiance inutile dans certaines transactions en automatisant leurs conditions d’exécution). Par exemple, plutôt que de prévoir une exception solidaire de non-reversement immédiat par les plus pauvres, on pourrait imaginer un contrat dans lequel Charles peut définitivement s’approprier le montant perçu (ne pas avoir à le reverser) à condition d’avoir produit un bien commun dont la valeur est estimée par un panel de souscripteurs comme étant au moins égale au montant perçu. Un peu comme si Charles avait convertit un token de cryptomonnaie libre en un bien commun tel qu’un logiciel libre, des contributions à la wikipedia, à OpenStreetMap, etc. Le contrat devient alors un modèle de financement de la création de biens communs.

Tu imagines d’autres applications possibles de contrats de ce type ? Qu’est-ce que ça t’inspire ?

A/B split testing with Plone

I have a deep interest in the lean startup method. One of the favorite tools of the lean startuper is A/B split testing. My favorite software package is Plone. Can Plone be used for A/B split testing without having to develop a specific python product ? The answer is probably yes.

Here is my recipe for a starter toward A/B split testing with Plone :

  1. take a fresh Plone
  2. add a PloneFormGen
  3. add a « Thank you » page for each and every option you want to test ; note the ID of the pages (e.g. page « optionA » and page optionB ») ; the user will be redirected to one of these pages
  4. add a text field to the form (multiple-lines text field not one-line string field)
  5. override the default value of this field with the following tales expression :

    python:[random.seed(str(request.AUTHENTICATED_USER) + request.REMOTE_ADDR), random.choice([i.getId() for i in here.aq_parent.aq_inner.listFolderContents(contentFilter={« portal_type » : « FormThanksPage »})])][1]

  6. make the text field a hidden and server-side field
  7. overrides the form’s custom validation action with the following expression :

    redirect_to:request/form/page

    where « page » is the ID of the text field you set up above.

  8. add a Data Recorder to the form so that the value of the « page » field gets recorded

What do we have now ? We have a form with a button. When the user clicks on the button, she is randomly redirected toward one the several « Thank You Pages » that you have defined. The redirection is based on the IP address of the user and her username if she is authenticated. The redirections are uniformly distributed against your destination pages. And they are recorded in the data record field.

You A/B split test is not complete and several further steps must be taken before this is a fully operational solution but that was an enjoyable hack to make for me. Have fun with it and tell me how you would proceed with split testing and continuous deployment using Plone !

The Humanitarian Openstreetmap Team had a conf call

… today. And here is the recording of the audio (OGG format). Unfortunately, it is missing 3 or 4 minutes at the beginning (I had to realize nobody else was to record the call and launch a few pieces of software) and 20 seconds at the end. I did no post-processing.

There’s even a public piratepad with the agenda and notes from the call.

Free money

Not « free money » as in « free beer » but free as in « free speech ». I mean « Libre money », like « Libre software ». Money made free. Goods made free so that they make people freer. What could this mean ?

Could the concept of copyleft found in the realm of software and intellectual creativity be transposed to material and rival goods so that humans get freer from their dependency on material goods and property ?

Let’s pretend I have a pencil in hand (or 10 euros). Here is my (imaginary) offer to you be : you can get this pencil if and only if :

  • after some predefined time (let’s say after 10 seconds) you must accept to give this pencil (or an equivalent pencil ?) further (not back) to anyone who asks for it and accepts some predefined conditions (the contract)
  • the most important condition this futher person/borrower must accept is to further transfer the goods along with their freedom contract once the defined delay has expired : they can’t put any additional restrictions to the freedom of people wishing to get these pencil(s)
  • maybe you will have some interest to add to it (for instance the condition may be that you must accept also giving a second pencil under these conditions after 10 seconds)

Once you get the pencil under such a contract, you are free to do anything you want with this pencil (you may draw a picture for instance). 10 seconds later, you may still keep it as your own (and keep on drawing pictures meanwhile) until someone comes to you and asks for this pencil. Then you must propose this pencil and an additional one under the conditions above. If the further person accepts these conditions, she may take this pencil (or these 2 pencils) and do the same : do anything she wishes during some time then keep doing anything she wants until someone gets the (1, 2, 3 or 4) pencil(s) under the same contract.

From now on, these pencils are made free. They are still the property of the persons who initially set them free. But, as long as the conditions of the contract are respected, they will freely flow from person to person. If there is an interest rate defined in the contract (the second pencil or 100% interest rate in the example above), then these interests are also made free and will contribute to the total amount of free rival goods in circulation. In some future, the whole population of pencils of planet earth may be made free in such a process !

You may note that this whole concept I am proposing here :

  • is rooted in the free culture of free software
  • is also rooted in the culture of giving in freedom which the economy of communion tries to promote
  • gets inspiration from the current trend of sharing stuff via the Internet, and optimize the ownership and use of material goods, including the fabulous freecycle network
  • somehow relates to the American ideal of « giving back to the community » (once you are richer) but with a twist
  • allows charitable gifts to poor people to be made less humiliating because the gift is now a loan and « officially » recognizes that the person receiving goods (the « poor » person) also receives a debt not toward the giver but toward humanity, while still giving merit to the initial loaner who « sufffers » from the « loss » of the items made free
  • is a common practice in many traditions such as master/apprentice  or teacher/student or parents/children relationships : master transfers some trade knowledge to apprentices as long as a moral obligation to further transfer this tradition/knowledge to future generations of apprentices/would-be-masters.

Now there are several practical problems with any attempt at contractualizing these practices of « giving back to the community » :

  • what if someone is materially not able to further give/transfer the good when the loan delay has expired ?
  • how to limit the risks of having malicious people exploit the system at their own profit and break the chain of freedom ?
  • are interests rate desirable or even morally acceptable ?
  • which sets of conditions would best guarantee the development of the freedom of humanity with regards to these goods ?
  • could such contracts be drafted and enforced world-wide despite borders and disparities among national laws ?
  • in order to maximize the probability that people don’t abuse the system and protect the freedom of these goods in further paying their debts, should the power of this contract mainly rely on justice (a judge may take your goods in order to pay your freedom debt) ? or on social mechanisms (such as only accepting female borrowers or borrowers who come as a group of independent but socially related people, in a way similar to some practices in the field of microcredit) ? or both ?
  • could such a system be made viable offline ? or will it necessarily rely on online trust mechanisms (identity, reputation, social networks, cryptography, …) ?
  • could such a system be made viable without a central platform ? can it work in a peer-to-peer fashion in the same way free software licences work (the only central point of failure for the GPL is the unique power of the FSF to release later versions of the GPL) ?
  • could the risk of failing borrowers (people not paying their debt further) be covered by some insurance mechanisms and agents ?

My real purpose here (beyond playing with an attractive concept) is to invent a contract which can be useful in order to augment the freedom of people to access and use goods they don’t own while still protecting (and contributing to) the freedom of further people to do so.

With your comments and contributions, maybe we could find the perfect combination of conditions a freedom loan contract should impose in order to meet the purpose above.

In further comments or posts, we/you may :

  • tell the fiction of several goods released under free loans/free debt contracts in order to explore the potential advantages and drawbacks of some combinations of conditions,
  • propose several such loans « for real » to readers in order to practically experiment and play with these concepts.

(But please DO NOT ASK for money here. Money will not be given to you. People asking for money and not usefully contributing to this conversation may be banned as spammers.)

Comment installer une plate-forme Wecena ?

Wecena est une entreprise qui organise des chantiers de mécénat de compétences pour informaticiens. Mais Wecena, c’est aussi un ensemble de logiciels libres (et open source et gratuits, licence AGPL) qui permettent d’organiser des chantiers de volontariat, de mécénat ou de bénévolat de compétences pour mettre des professionnels au service de grandes causes. Vous pouvez librement installer ces logiciels sur vos propres serveurs pour mettre en place des plates-formes réunissant entreprises et associations autour de projets de solidarité. Les logiciels Wecena sont déjà :

  • utilisés par Wecena dans le secteur informatique
  • installés par Investime pour organiser des missions professionnelles de solidarité dans les métiers de l’assurance (soutien à des institutions de micro-finance en Afrique notamment)
  • étudiés par Antoine G. pour organiser des chantiers de mécénat de compétences dans certains métiers du conseil et des services

Voici un copier-coller de mes derniers échanges par email avec Antoine (avec sa permission). Ceci peut vous aider à savoir comment installer votre propre plateforme Wecena. Pour pouvoir suivre ces échanges (et installer Wecena sur vos serveurs), il faut avoir les compétences suivantes :

  • notions d’administration systèmes linux
  • expérience en développement Web objet, si possible sur un langage open source

From Antoine G. to Jean M.

[…] Nous serions intéressé de tester la plateforme Wecena que tu as mise en place.

Pour cela, [j’ai reçu un mail] sur lequel tu indiques l’adresse de ta plateforme de test avec quelques comptes ainsi que les étapes nécessaires à l’installation de Wecena sur un autre serveur.

Je t’avouerai que sur ce deuxième point j’ai fait un checkout sur mon serveur debian, et regarder quelque peu le lien sur la configuration et le lancement d’un buildout de Plone mais tout ceci n’est pas clair pour moi encore. Si comme tu le proposais, tu pouvais me transmettre un exemple de buildout comme point de départ, avec un mini tuto, ça pourrait grandement me / nous rendre service ;-)

Et à vrai qu’est-ce exactement qu’un buildout, une sorte de Makefile ?

J’ai déjà python 2.4.4 d’installer et j’ai ajouté quelques packages qui pourraient m’être utiles « plone3-site » et « zope-plone3 » (à peu près similaire j’ai l’impression).

Je te remercie par avance, pour l’aide que tu pourras m’apporter en temps voulu.

Quoiqu’il en soit, je continue de potasser le tuto plone sur la création de bluidout de mon côté…

From Jean M. to Antoine G.

Le 22/12/2010 23:43, Antoine G. a écrit :

> Je t’avouerai que sur ce deuxième point j’ai fait un checkout sur mon
> serveur debian, et regarder quelque peu le lien sur la configuration et
> le lancement d’un buildout de Plone mais tout ceci n’est pas claire pour
> moi encore.
> Si comme tu le proposais, tu pouvais me transmettre un exemple de
> buildout comme point de départ, avec un mini tuto, ça pourrait
> grandement me / nous rendre service ;-)

La première chose que tu devrais faire, c’est sans les produits Wecena : essaie d’installer Plone 3.3.5 via son buildout en suivant ce tutoriel
http://icp.ge.ch/sem/plone-dip/le-pool-plone-dip/icp-zope-technique/installation-plone3-buildout

> Et à vrai qu’est-ce exactement qu’un buildout, une sorte de Makefile ?

Oui, en quelque sorte.

C’est un ensemble de fichiers de config (habituellement en « .cfg ») qui indiquent au logiciel buildout quelles sont les dépendances et paramétrage de déploiement d’un logiciel Python (par exemple de Zope et Plone).

Quand tu télécharges Plone sur plone.org, l’installeur te déploie Plone avec les options par défaut. Tu peux modifier ces options dans les fichiers.cfg puis mettre à jour ton déploiement en lançant la commande bin/buildout A ce moment-là, buildout va télécharger, paramétrer et installer tous les composants logiciels spécifiés dans ses fichiers de config.

Le tutoriel ci-dessus te permet d’installer directement Plone via buildout sans passer par un package de ton OS ni par l’installeur packagé sur plone.org. Il te permet de bien voir toutes les étapes d’installation.

> J’ai déjà python 2.4.4 d’installer et j’ai ajouté quelques packages qui
> pourraient m’être utiles « plone3-site » et « zope-plone3 » (à peu près
> similaire j’ai l’impression).

Si tu peux prendre python 2.4.6, ce serait mieux (pas sûr que Plone 3.3.5 marche avec python 2.4.4). Au besoin, tu télécharges la source et tu recompiles simplement.

Mais, pour zope et plone, oublie les package debian et installe plutôt en suivant le tutoriel ci-dessus. En effet, c’est buildout qui s’occupera d’aller chercher les dépendance dont tu as besoin et de les paramétrer comme il faut.

> Je te remercie par avance, pour l’aide que tu pourras m’apporter en
> temps voulu.

Une fois que tu auras réussi l’install d’un plone avec buildout en suivant le tuto, je t’indiquerai comment y ajouter les produits wecena comme dépendances.

> Quoiqu’il en soit, je continue de potasser le tuto plone sur la création
> de bluidout de mon côté…

OK

N’hésite pas à me faire signe au moment où tu coinces.

From Antoine G. to Jean M.

Je reviens vers toi pour te faire un petit point d’avancement sur mon installation de plone 3, à travers le tuto que tu m’as transmis ( http://icp.ge.ch/sem/plone-dip/le-pool-plone-dip/icp-zope-technique/installation-plone3-buildout ).

Dans l’ensemble ça c’est bien passé sauf que les liens des productdistros étaient pour la moitié mort… Je suis allé chercher les fichiers à la mano sur d’autres sites mais je pense que c’est bon de ce côté là.

http://plone4artists.org/products/plone4artistsvideo/releases/1.1/Plone4ArtistsVideo-1.1b1.tar.gz *DEAD*

*NEW –> http://dist.serverzen.com/misc/Plone4ArtistsVideo-1.1b1.tar.gz*

http://downloads.sourceforge.net/julius/ATGoogleVideo-0-6.tar.gz

http://plone.org/products/cmfnotification/releases/2.0/cmfnotification-2-0-rc1-tar.gz *DEAD

NEW –> http://plone.org/products/cmfnotification/releases/2.0/cmfnotification-2-0-tar.gz –> rename to cmfnotification-2-0-rc1-tar.gz*

http://plone.org/products/mailservices/releases/0.5/armailservices-0-5.tgz

http://plone.org/products/ploneldap/releases/1.0/PloneLDAP-bundle-1.0rc3.tar.gz

http://plone4artists.org/products/plone4artistscalendar/releases/1.1/Plone4ArtistsCalendar-1.1b1-plone3.0-bundle.tar.gz *DEAD

NEW –> http://icp.ge.ch/sem/plone-dip/utiliser-plone-efficacement/gerer-mon-plone/produits/produits-infos-admin/produits-fichiers-utiles/Plone4ArtistsCalendar-1.1b1-plone3.0-bundle.tar.gz/at_download/file –> rename to Plone4ArtistsCalendar-1.1b1-plone3.0-bundle.tar.gz

* http://weblion.psu.edu/static/products/cssmanager/cssmanager-0.8.tar.gz

Lors de la première exécution du ./bin/buildout j’ai rencontré pas mal de messages d’erreur. En voici quelques exemples :

SyntaxError: ‘return’ outside function

File « build/bdist.linux-i686/egg/Products/Ploneboard/skins/ploneboard_scripts/comment_redirect_to_conversation.py »,

line 33

return printed

SyntaxError: ‘return’ outside function

File « /home/ploneTest/virtualplone/ploneproject/eggs/tmplebqDf/Products.NuPlone-1.0b3-py2.4.egg/Products/NuPlone/skins/nuplone_templates/livesearch_reply.py », line 146

return ‘\n’.join(output).encode(site_encoding)

SyntaxError: ‘return’ outside function

Modules/LDAPObject.c:1228: warning: return makes pointer from integer

without a cast

Modules/LDAPObject.c:1185: warning: unused variable ânewpwâ

Modules/LDAPObject.c:1183: warning: unused variable âoldpwâ

Modules/LDAPObject.c:1181: warning: unused variable âuserâ

error: Setup script exited with error: command ‘gcc’ failed with exit status 1

An error occured when trying to install python-ldap 2.3.12. Look above this message for any errors that were output by easy_install.

While:

Installing instance.

Getting distribution for ‘python-ldap>=2.0.6’.

Error: Couldn’t install: python-ldap 2.3.12

Après l’exécution des actions suivantes, j’ai finit par avoir l’exécution d’un buildout complet propre :

aptitude install libldap2-dev

aptitude install libsasl2-dev

aptitude install libssl-dev

cp /var/lib/zope2.10/instance/plone-site/var/Data.fs var/filestorage/

aptitude install python-ldap

Résultat :

./bin/buildout

Updating zope2.

Updating fake eggs

Updating productdistros.

Updating instance.

Updating zopepy.

Malheureusement quand je lance l’instance du serveur ça ne fonctionne pas, il ne trouve pas une librairie :

./bin/instance fg

File « /home/ploneTest/virtualplone/ploneproject/eggs/Plone-3.3.5-py2.4.egg/Products/CMFPlone/browser/ploneview.py », line 12, in ?

from Products.CMFPlone import utils

File « /home/ploneTest/virtualplone/ploneproject/eggs/Plone-3.3.5-py2.4.egg/Products/CMFPlone/utils.py », line 6, in ?

from PIL import Image

ImportError: No module named PIL

Voici la liste des paquets python installés de mon côté :

python

python2.4

python2.4-dev

python2.4-minimal

python2.5

python2.5-minimal

python-central

python-docutils

python-imaging

python-imaging-tk

python-ldap

python-minimal

python-newt

python-selinux

python-semanage

python-sepolgen

python-support

python-tk

python-twisted

python-twisted-conch

python-twisted-core

python-twisted-words

Il souhaiterait peut être avoir le package python2.4-imaging, malheureusement il m’installe forcément la dernière version python-imaging… Si tu as des pistes je suis preneur ;-)

Sinon une fois que l’on aura réussi à faire tourner le serveur, je serais intéressé comme tu l’as proposé de procéder à l’installation de wecena.

Pour ma curiosité personnelle et pour nourrir mon amour de plone, pourrais-tu me dire ce qui t’as guidé vers ce CMS ? Car je vois dans l’étude des CMS jointe en PJ ( http://www.waterandstone.com/book/2010-open-source-cms-market-share-report )qui a été faîtes sur l’année 2010, que celui-ci est loin d’être le plus répandu. Par contre je remarque que pas mal de livres sont sorties dessus, il doit avoir certains atouts majeurs…

Je te remercie pour l’aide que tu pourras m’apporter.

From Jean M. to Antoine G.

> Lors de la première exécution du ./bin/buildout j’ai rencontré pas mal
> de messages d’erreur. En voici quelques exemples :
> SyntaxError: ‘return’ outside function
> File
> « build/bdist.linux-i686/egg/Products/Ploneboard/skins/ploneboard_scripts/comment_redirect_to_conversation.py »,
> line 33
> return printed
>
> SyntaxError: ‘return’ outside function
> File
> « /home/ploneTest/virtualplone/ploneproject/eggs/tmplebqDf/Products.NuPlone-1.0b3-py2.4.egg/Products/NuPlone/skins/nuplone_templates/livesearch_reply.py »,
> line 146
> return ‘\n’.join(output).encode(site_encoding)
> SyntaxError: ‘return’ outside function

Tu peux ignorer sans risque les messages « SyntaxError: ‘return’ outside function » comme expliqué ici :
http://plone.org/documentation/error/syntaxerror-return-outside-function

> Modules/LDAPObject.c:1228: warning: return makes pointer from integer
> without a cast
> Modules/LDAPObject.c:1185: warning: unused variable ânewpwâ
> Modules/LDAPObject.c:1183: warning: unused variable âoldpwâ
> Modules/LDAPObject.c:1181: warning: unused variable âuserâ
> error: Setup script exited with error: command ‘gcc’ failed with exit
> status 1
> An error occured when trying to install python-ldap 2.3.12. Look above
> this message for any errors that were output by easy_install.
> While:
> Installing instance.
> Getting distribution for ‘python-ldap>=2.0.6’.
> Error: Couldn’t install: python-ldap 2.3.12
>
> Après l’exécution des actions suivantes, j’ai finit par avoir
> l’exécution d’un buildout complet propre :
> aptitude install libldap2-dev
> aptitude install libsasl2-dev
> aptitude install libssl-dev
> cp /var/lib/zope2.10/instance/plone-site/var/Data.fs var/filestorage/
> aptitude install python-ldap

OK Bravo.

> résultat :
> ./bin/buildout
> Updating zope2.
> Updating fake eggs
> Updating productdistros.
> Updating instance.
> Updating zopepy.

Super.

> Malheureusement quand je lance l’instance du serveur ça ne fonctionne
> pas, il ne trouve pas une librairie :
> ./bin/instance fg
>
> File
> « /home/ploneTest/virtualplone/ploneproject/eggs/Plone-3.3.5-py2.4.egg/Products/CMFPlone/browser/ploneview.py »,
> line 12, in ?
> from Products.CMFPlone import utils
> File
> « /home/ploneTest/virtualplone/ploneproject/eggs/Plone-3.3.5-py2.4.egg/Products/CMFPlone/utils.py »,
> line 6, in ?
> from PIL import Image
> ImportError: No module named PIL
> Il souhaiterait peut être avoir le package python2.4-imaging,
> malheureusement il m’installe forcément la dernière version
> python-imaging…
> Si tu as des pistes je suis preneur ;-)

Chez moi, c’est buildout qui s’occupe d’aller chercher et installer cette bibliothèque.

Pour cela, dans les fichiers .cfg de ton buildout, tu cherches la section [buildout] dans laquelle se trouve la liste de tes dépendances sous la forme d’une variable « eggs =  » avec la liste des dépendances. Dans cette liste, tu ajoutes :

PILwoTK

Si buildout se plaint de ne pas trouver cette bibliothèque, alors tu lui ajoutes quelques URL à partir desquelles il pourra aller fouiller. Ca se passe aussi dans la section [buildout] sous la forme d’une variable find-links :

find-links =
http://dist.plone.org/
http://download.zope.org/ppix/
http://download.zope.org/distribution/
http://effbot.org/downloads/
http://code.google.com/p/html5lib/downloads/list

C’est dans le dépôt http://download.zope.org/distribution/ qu’on trouve PILwoTK (= Python Imaging Library without its TK dependency).

Si ça ne marche pas, tu peux aussi compiler en récupérant le tarball ici : http://www.pythonware.com/products/pil/

> Sinon une fois que l’on aura réussi à faire tourner le serveur, je
> serais intéressé comme tu l’as proposé de procéder à l’installation de
> wecena.

Il faut que je prenne le temps de faire une distribution de mon buildout. Allez hop, c’est fait :

http://svn.gna.org/viewcvs/wecena/trunk/wecena.buildout/

Mais il faudra encore que je partage deux produits d’intégration :

wecena.policy
wecena.theme

Peut-être lundi prochain ?

> Pour ma curiosité personnelle et pour nourrir mon amour de plone,
> pourrais-tu me dire ce qui t’as guidé vers ce CMS ? Car je vois dans
> l’étude des CMS jointe en PJ qui a été faîtes sur l’année 2010, que
> celui-ci est loin d’être le plus répandu. Par contre je remarque que pas
> mal de livres sont sorties dessus, il doit avoir certains atouts majeurs…

Je n’ai pas fait d’analyse comparative complète récemment. J’en ai fait à certains moments dans mon parcours. Ton étude en pièce-jointe est super intéressante (notamment la méthodo qui m’a l’air très bien). Après, il faut voir comment tu l’utilises.

Le premier facteur pour choisir, à mon avis, en tant que développeur, c’est le langage. Développer en python me semble plus productif qu’en Java. Et conceptuellement plus satisfaisant (plus « professionnel » ?) que PHP. Ceci dit c’est une affaire de goût. Et la communauté python compte des développeurs d’un niveau vraiment excellents qui se mettent au service des autres. Donc il y a déjà un facteur un peu irrationnel qui m’a amené vers python et sa communauté. Concrètement, mon parcours en matière de langages de prédilection est le suivant :

  • Turbo Pascal quand j’étais au lycée (jusqu’en prépa en 93)
  • un peu de VB à l’école (94/97) mais surtout du Delphi
  • ensuite, de 98 à 99 je me suis tourné vers Perl car c’était, parmi les langages du libre, celui qui avaient le plus de bibliothèques orientées Internet (et avec une bonne orientation objet)
  • de 99 à 2005, j’ai encadré des équipes qui faisaient de l’ASP, du PHP et un peu de J2EE mais, pendant ce temps j’ai découvert python, plus « propre » et maintenable que Perl mais avec les mêmes avantages (grosse communauté et bibliothèques, à fond dans le Net, agile, dynamic typing, orienté objet) ; et c’est dans la communauté python que j’ai vu apparaître des produits et framework mûrs pour livrer ce que mes équipes ASP/PHP réinventaient de manière artisanale à chaque projet,
  • de 2005 à 2007, pour le boulot, j’ai fait du J2ME, J2SE et J2EE mais, franchement, quelle lourdeur de développer en Java quand on vient de python… j’aurais pu virer ruby (encore plus agile que python mais plus jeune) ou me mettre à PHP qui avait gagné en maturité objet

Donc, pour moi :

  • J2EE = ok mais lourd
  • ruby = ok mais « jeune »
  • Perl = ok mais peu maintenable (plus artistique…)
  • PHP = ok mais une communauté de niveau inégal (beaucoup de temps perdu avec des débutants)
  • Python = ok mais moins populaire

Ensuite, au niveau framework applicatif pour le web, conceptuellement, l’idée de publier des objets m’a séduit dès le début (Zope Object Publishing Environment) alors que le paradigme de l’époque (2000/2005) restait les applis sur mesure sur base relationnelle (LAMP côté libre). C’est quand-même plus confortable, pour développer, d’accéder « nativement » à une persistence objet (base de données objet) plutôt que de gérer des accès à des données relationnelle ou de devoir gérer une surcouche de mapping objet-relationnel.

Si on compare les CMS Web PHP comme Drupal ou Joomla d’une part, et Plone d’autre part, les avantages spécifiques de Plone résident dans sa couche de sécurité et dans son moteur de workflow (qui est essentiel dans la gestion de la sécurité). Il semble que ces aspects sécurité + workflow sont moins bien pris en compte dans Drupal et Joomla que dans Plone. C’est pourquoi Plone a une réputation de meilleur produit pour les besoins professionnels impliquant des règles de sécurité fines (et compliquées) et des workflows spécifiques, avec une gestion des rôles complexes.

Drupal serait plus à son aise pour les besoins communautaires « simples » et « variés » alors que Plone serait plus à son aise pour les besoins professionnels avec des processus métiers complexes. Les produits J2EE couvrent sans doute des besoins encore plus « pro » et des processus métiers encore plus complexes et  nécessitant plus de rigueur, mais au prix d’une lourdeur énorme.

Mais on parle bien de gestion de contenu, là.

A propos de la popularité des CMS, il faut bien voir ce qu’on compare. C’est normal que WordPress (PHP) soit astronomiquement plus populaire que Plone (python) puisqu’il ne fournit que 10% des fonctionnalités d’un Plone. De plus, Plone impose un hébergement spécifique (serveur dédié) alors que WordPress ou Drupal peuvent se satisfaire d’un hébergement partagé. Donc, si tu installes du Plone, c’est que tu as une bonne raison.

Mais si on parle de développement d’applications innovantes et spécifiques, de type crowdsourcing par exemple, alors j’irais regarder du côté de framework comme Django en python.

J’ai aussi l’impression que le développeur python « moyen » est plus à l’aise avec des concepts intéressants de développement que le développeur PHP « moyen ». Il y a plus de choses conceptuellement stimulantes dans la communauté python que PHP.

Par exemple, quelle est la maturité de telle ou telle communauté en matière d’outils et pratiques de Test-Driven Development, etc.

> Je te remercie pour l’aide que tu pourras m’apporter.

De rien.

Je t’ai répondu un peu en vrac ci-dessus alors n’hésite pas à préciser tes questions.

From Antoine G. to Jean M.

Merci pour tes indications précieuses. Tu as débloqué la situation, nous avons maintenant une instance zope/plone qui tourne.

Pour ce qui est du buildout de wecena, j’ai déjà fait un checkout du svn pour récupérer la distribution que tu as faite. Quand je l’exécute j’ai l’erreur suivante :

While:
  Initializing.
Error: The specified download cache:
'/home/jean/Desktop/techno/buildouts/.shared/downloads'
Doesn't exist.

Je pense que je pourrais commenter la partie faisant référence à ce dossier ‘downloads’ en local sur ton serveur car il n’est peut être pas nécessaire mais comme tu le disais il faut encore que je récupère wecena.policy et wecena.theme

Je te remercie pour ton analyse sur le marché des CMS avec en trame de fond les grandes lignes de ton parcours. Tout cela est fort enrichissant et si tu
conçois le développement python/plone à contrario de la lourdeur de Java, j’ai hâte de voire ça ;).

Maintenant que je vais bientôt pouvoir modifier / créer du contenu avec plone, as-tu un livre de chevet à me conseiller ? Je pense déjà regarder la doc du côté du site français de plone : http://plone.org/countries/fr/index_html

J’ai regardé le comparatif que tu m’as envoyé par la suite entre les 4 CMS (wordpress, drupal, joomla et plone), qui est encore un bon point pour plone. D’ailleurs en quoi la sécurité sur plone est-elle mieux assurée ? Est-ce simplement par un meilleur degré de précision sur la gestion des droits utilisateurs ?

From Jean M. to Antoine G.

Le 23/01/2011 03:47, Antoine G.  a écrit :

> Merci pour tes indications précieuses. Tu as débloqué la situation, nous
> avons maintenant une instance zope/plone qui tourne :
>
> http://alterformation.org:8080/

Bravo !

> Pour ce qui est du buildout de wecena, j’ai déjà fait un checkout du svn
> pour récupérer la distribution que tu as faite. Quand je l’exécute j’ai
> l’erreur suivante :
>
> While:
> Initializing.
> Error: The specified download cache:
> /home/jean/Desktop/techno/buildouts/.shared/downloads’
> Doesn’t exist.

Tu dois créer sur ton disque un répertoire dans lequel seront stockés les dépendances au fur et à mesure qu’elles sont téléchargées (cache). Et tu en indiques le chemin dans un fichier de buildout en lieu et place du chemin indiqué dans ce message d’erreur.

> Je pense que je pourrais commenter la partie faisant référence à ce dossier
> ‘downloads’ en local sur ton serveur car il n’est peut être pas nécessaire
> mais comme tu le disais il faut encore que je récupère wecena.policy et
> wecena.theme

C’est juste un cache local. C’est utile surtout si tu installes plusieurs buildout qui partageront le même cache. Si tu commentes cette instruction, buildout utilisera je ne sais plus quel chemin pour y stocker ses téléchargements.

> Maintenant que je vais bientôt pouvoir modifier / créer du contenu avec
> plone, as-tu un livre de chevet à me conseiller ? Je pense déjà regarder la
> doc du côté du site français de plone :
> http://plone.org/countries/fr/index_html

Ce bouquin-ci est très bien pour les techniques utilisés pour le développement dans Plone 3 : http://professional-plone-book.packtpub.com/

> J’ai regardé le comparatif que tu m’as envoyé par la suite entre les 4 CMS
> (wordpress, drupal, joomla et plone), qui est encore un bon point pour
> plone. D’ailleurs en quoi la sécurité sur plone est-elle mieux assurée ?
> Est-ce simplement par un meilleur degré de précision sur la gestion des
> droits utilisateurs ?

C’est l’une des deux raisons. La deuxième raison est plus fondamentale (ce qui en fait la première…) : Plone s’appuie sur la Zope Object DataBase (ZODB). C’est une base objet. Le caractère sécuritaire de cette base objet tient à ce que tout accès à un objet stocké fait l’objet d’un contrôle d’accès très fin et applicatif. Ce n’est pas comme dans le cas classique du développement avec une base relationnelle. Habituellement, avec une base relationnelle, tu as une chaîne de connexion (login + mot de passe) unique utilisée quasiment partout dans ton code. Ton code accède partout comme il veut à toute ta base de données. Au contraire,
avec la ZODB, l’accès à chaque objet se fait sous le contrôle des permissions associées à l’utilisateur qui s’est authentifié. Autrement dit, il ne s’agit d’une base de données par-dessus laquelle on a plaqué une couche de sécurité indépendante mais d’un système d’accès sécurisé aux données qui est inclus dans la base de données (ce qui a pour inconvénient un côté un peu monolithique de cette base).

Donc non seulement le contrôle d’accès est plus fin (d’innombrables permissions qui se combinent les unes aux autres) mais aussi il est plus « profond ».

Mais je te réponds un peu « de mémoire » donc je me trompe peut-être un peu sur les points ci-dessus. Les autres raisons pour lesquels on lit que Zope est sûr :

  • comme ce n’est pas une base SQL, la ZODB n’est pas soumise au risque d’injection SQL qui est une cause fréquente de failles dans les systèmes relationnels,
  • comme Zope est une techno moins populaire, il y a moins d’intérêt pour un pirate à l’étudier (?)
  • comme Plone fournit des fonctionnalités qui plaisent plus aux entreprises qu’aux bricoleurs (workflow, contrôle d’accès poussé), il est plus souvent utilisé dans un contexte professionnel que associatif ou personnel et donc la communauté Plone a une culture de sécurisation d’entreprise qui, en moyenne, est plus stricte et rigoureuse que dans la moyenne des produits alternatifs

A propos de la sécurité dans Zope, tu trouveras plus de détails ici : http://www.zope.org/Documentation/Books/ZDG/current/Security.stx

[ Update : malgré ces arguments, il faut noter qu’une vulnérabilité très grave de Plone vient d’être annoncée et un patch sera révélé mardi prochain. Mais, ces dernières années, je n’ai vu que 2 vulnérabilités significatives annoncées pour Plone. ]

J’ai publié wecena.policy et wecena.theme dans mon dépôt subversion. Tu devrais pouvoir les checkouter et les mettre sous le répertoire src/ de
ton buildout.

Et voila.

From Jean M. to Antoine G.

De l’entreprise responsable à l’entreprise sociale

[Je rédige cet article comme introduction d’un dossier spécial « RSE » pour les revue des anciens des écoles Centrale de Lille, Lyon, Nantes et Marseille. Je devrai en zapper certains paragraphes pour le ramener de 5 à 4 pages. Vos suggestions et corrections sont les bienvenues…]

Votre entreprise paie des impôts, maintient des emplois, sert des clients et des actionnaires, elle respecte la loi… Pour autant, exerce-t-elle pleinement sa responsabilité vis-à-vis de la société ? Pas forcément si l’on en croit le concept de Responsabilité Sociale de l’Entreprise.

Définition

La RSE va plus loin que les obligations légales. La Responsabilité Sociale de l’Entreprise, c’est la déclinaison du concept de développement durable au monde de l’entreprise. La RSE propose donc une vision de l’entreprise articulée autour de 2 concepts clefs : les parties prenantes et le triple bilan.

Parce qu’elle n’interagit pas seulement avec des clients ou des actionnaires, l’entreprise responsable prend en compte toutes ses parties prenantes : dirigeants, clients, actionnaires, fournisseurs, employés, collectivités publiques, familles des employés, associations et ONGs, habitants, personnes en marge de l’économie…

Et parce qu’avec chacune de ces parties prenantes, elle ne produit pas qu’un résultat économique, l’entreprise responsable évalue sa performance dans un triple bilan : économique mais aussi environnemental et social. On parle ici de bilan social au sens large, c’est-à-dire concernant :

  • autant les relations humaines au sein de l’entreprise (notamment avec les employés)
  • que les relations humaines à l’extérieur de l’entreprise (avec les familles des employés, les concurrents, les personnes éloignées de l’emploi, …) c’est-à-dire au sein de la Société avec un grand S (d’où l’expression de bilan sociétal parfois utilisée).

Les relations avec chaque partie prenante sont autant de chantiers pour le développement de la RSE.

L’entreprise et ses dirigeants

L’amélioration de la gouvernance est historiquement l’un des premiers chantiers d’action pour les grandes entreprises inventant leur RSE. Il s’agit d’améliorer la transparence du gouvernement d’entreprise et la responsabilité individuelle de ses dirigeants : règles de nomination des dirigeants et des administrateurs, mécanismes de contrôle et de sanction, répartition et régulation des pouvoirs des dirigeants… Plus de transparence et de responsabilité de la direction peut amener à un comportement plus responsable de l’entreprise.

Les fournisseurs

L’audit social ou environnemental des fournisseurs de l’entreprise est un autre levier historique de la RSE. Lorsqu’une marque grand public ou une enseigne de distribution se retrouve au centre d’un scandale médiatique parce que ses fournisseurs, dans des pays pauvres, font travailler des enfants ou des esclaves, il y a matière à faire changer l’entreprise et la faire devenir plus responsable. Limiter les risques de scandales est un premier pas pour motiver une politique d’achats responsables. De manière plus volontariste et positive, l’implication étroite des fournisseurs dans une politique RSE peut avoir un effet vertueux et significatif sur la situation économique, sociale et environnementale de pays très éloignés.

En France aussi, par le biais de sa politique achat responsable ou achat durable, l’entreprise peut exiger de ses fournisseurs qu’ils améliorent leurs pratiques sociales ou environnementales. Certaines grandes banques attribuent chaque année une note RSE à tous leurs fournisseurs et cette note est prise en compte dans les négociations de nouveaux contrats.

L’entreprise peut aussi davantage recourir au secteur protégé des entreprises employant des personnes handicapées et ainsi mieux satisfaire à ses obligations légales en faveur de l’insertion professionnelle des personnes handicapées. Recourir à une entreprise d’insertion, c’est une autre manière d’exercer sa RSE en favorisant le retour à l’emploi de personnes exclues. Les entreprises d’insertion embauchent des personnes très éloignées de l’emploi (non diplômés, anciens détenus, personnes handicapées). Elles leur proposent non seulement un emploi d’un an ou deux ans mais aussi et surtout un parcours personnalisé pour se réinsérer dans le marché classique du travail (accompagnement psychologique, administratif, médical, social, …).

Les clients

L’attention que les clients apportent à la RSE de leur fournisseur est essentiel dans la motivation de l’entreprise à devenir plus responsable. Cette attention peut être telle qu’elle fait émerger de nouveaux marchés : le consommateur soucieux de naturel souhaitera acheter bio, le consommateur soucieux du bien-être des petits producteurs dans les pays pauvres souhaitera acheter équitable plutôt que d’enrichir des intermédiaires. Certaines marques de grande consommation peuvent s’associer à des Organisations Non Gouvernementales (ONG) en leur reversant un pourcentage des ventes effectués sur certains produits-partage. Le rôle du client est cependant limité par sa capacité à s’informer sur les produits. C’est pourquoi les labels de qualité environnementale (écolabels) ou sociale se multiplient : Forest Stewardship Council pour les bois et papiers issus d’exploitation forestières durables, Marine Stewardship Council pour les produits issus de la mer, etc.
Une autre manière d’associer le consommateur à la politique RSE de l’entreprise consiste à lui proposer d’arrondir sa facture à l’euro supérieur et à offrir ces centimes à un organisme d’intérêt général. C’est le concept du microdon ou de l’arrondi solidaire sur facture.

Que ce soit dans les appels d’offres des marchés publics, dans ceux du secteur bancaire ou dans les questionnaires référencement d’un nombre grandissant de grands comptes du secteur privés, les critères environnementaux et sociaux se multiplient. Certes, la crise modère leur importance pendant un temps. Mais la RSE est devenu un facteur de différenciation et un avantage concurrentiel pour nombre d’entreprises qui en font, à raison, un argument de vente.

Les salariés

Les pratiques managériales sont l’un des champs essentiels de la RSE.

En matière de recrutement, une entreprise responsable lutte contre les discriminations à l’embauche et peut rechercher une certaine parité hommes-femmes. Pour une responsabilité positive, elle peut développer des programmes de soutien à la diversité dans le recrutement, par exemple en recrutant auprès de populations plus en marge de l’emploi, par exemple les jeunes issus de quartiers en difficulté, ou en embauchant 6% de ses salariés parmi les personnes handicapées, comme l’y invite la loi française. Créer une filiale labellisée entreprise d’insertion est un moyen extrêmement puissant pour l’entreprise d’exercer son métier en offrant à des “accidentés de la vie” de retourner vers l’emploi.

La RSE vis-à-vis des salariés se traduit aussi par les politiques de formation et l’attention portée à l’employabilité des salariés.

Le syndicalisme doit jouer son rôle de représentation et de défense des intérêts des salariés. Mais la RSE appelle l’entreprise à ne pas s’en contenter et, éventuellement, à explorer les voies plus directes du management participatif comme, par exemple, à travers les expérimentations démocratiques des Sociétés À Gestion Partagée (SAGP). C’est aussi l’une des ambitions principales des sociétés coopératives et de leur principe “une personne, une voix”.

L’implication responsable des salariés passe aussi par la participation des salariés aux bénéfices de l’entreprise, notamment via les politiques de participation, d’intéressement ou d’épargne salariale.

Plus récemment, les politiques de mécénat des entreprises développent de nouveaux champs d’implication des salariés dans la responsabilité de leur entreprise. Le mécénat associé consiste à laisser les salariés proposer ou sélectionner les associations bénéficiaires de dons de l’entreprise, voire à abonder les dons individuels décidés par les salariés. L’arrondi solidaire sur salaire consiste à proposer aux salariés, via le gestionnaire de paye, d’arrondir son salaire mensuel à l’euro inférieur et d’offrir les bénéfices à une oeuvre caritative, avec ou sans abondement de l’entreprise.

Pour partager la RSE avec les salariés autrement que via leur portefeuille, certaines entreprises encouragent leurs salariés à mettre leurs compétences professionnelles au service d’associations d’intérêt général. Lorsqu’il s’agit d’y consacrer le temps libre du salarié, on parle de bénévolat de compétences. L’entreprise facilite la mise en relation avec l’association qui a besoin du métier du salarié mais c’est le salarié qui donne son temps. Lorsqu’il s’agit d’y consacrer du temps de travail, c’est l’entreprise qui fait ce don et on parle alors de mécénat de compétences. Le salarié peut être invité à consacrer à une association de solidarité une partie de ses congés ou jours de RTT, avec abondement de l’entreprise qui l’autorise alors, en proportion, à y consacrer quelques jours de temps de travail. Lorsque l’association de solidarité est à l’étranger (par exemple en Afrique), on parle de congé de solidarité internationale.

Le mécénat de compétences à l’américaine consiste à mobiliser un grand nombre de salariés pendant une unique journée autour de chantiers solidaires très simples : repeindre une école, débroussailler un terrain vague pour une association, nettoyer une plage, collecter des vieux téléphones à recycler… Le mécénat de compétences peut aussi se développer plus en lien avec les compétences professionnelles sur les gisements de temps de travail peu productifs dans l’entreprise. Il s’agit par exemple du wecena qui mobilise les périodes d’intercontrats (ou “interchantiers” ou “rompu”) en sociétés de conseil ou de services informatiques, ou encore qui peut exploiter les périodes de mobilité interne, de transition de carrière ou permettre de consacrer à une association de solidarité les quelques mois qui précèdent la mise à la retraite d’un cadre supérieur.

Les actionnaires

Les entreprises ont à faire à de multiples sources de pression, via leurs actionnaires, pour renforcer leur RSE. Les autorités publiques traduisent une partie des attentes RSE des investisseurs sous la forme d’obligations légales minimales. Le reporting social puis environnemental est devenu un exercice obligatoire pour les sociétés cotées en France depuis la loi en faveur des « Nouvelles Régulations Economiques » (NRE) de 2001. En matière de relations avec les salariés (« affaires sociales »), d’hygiène et de sécurité (accidents du travail, maladies), les obligations de reporting sont nombreuses. C’est aussi devenu le cas pour l’environnement naturel. Et, pour qu’il y ait reporting, il faut qu’il y ait mesures d’indicateurs quantitatifs et donc un certain effort de modélisation comptable en matière environnementale et sociale. Le reporting aux actionnaires peut ainsi dépasser l’obligation légale et devenir, parfois, un outil de management de la performance environnementale ou sociale.

Quelques agences privées de notation se sont spécialisées dans la notation de la performance sociale et environnementale : les agences de notation extra-financière. Sous leur pression, les entreprises gagnent en transparence… et en motivation pour renforcer leur RSE. Mais la fiabilité des agences de notation a ses limites que la crise de 2008 boursière a révélées. Estimant que les agences de notation n’emploient pas de processus rationnels, des bidouilleurs informatiques soucieux de la responsabilité économique des entreprises proposent des solutions alternatives basées sur la modélisation publique des données financières de ces sociétés (http://www.freerisk.org/).

Certains individus, ONGs ou groupes de pression privés, jugeant que telle ou telle sociétés sont trop peu responsables, s’engagent dans le militantisme actionnarial. Cela consiste à devenir actionnaire de manière à prendre la parole en assemblée générale et interpeler les dirigeants pour les appeler à une plus grande RSE.

L’argent restant le nerf de la guerre, les relations entre une entreprise et ses actionnaires sont un énorme champ d’innovation pour la RSE. A minima, les investisseurs classiques peuvent choisir d’exclure les entreprises d’armement ou de tabac de leurs portefeuilles. Mais les pratiques d’Investissement Socialement Responsable gagnent en maturité et adoptent des démarches plus constructives avec la tendance de l’impact investing. Il s’agit de privilégier des prises de capital dans des entreprises allant au-delà de la RSE car s’engageant sur la production d’un impact social (sociétal ou environnemental) mesurable, au détriment d’une rentabilité financière qui est donc parfois moindre. La méthode du Social Return On Investment permet à une personne défavorisée bénéficiant de l’action de solidarité d’une entreprise d’exprimer, en euros, la valeur qu’elle attribue à cette action. L’investisseur peut alors comparer cette valeur perçue par le bénéficiaire avec le coût consenti pour cet investissement. Il peut ainsi choisir d’investir dans les entreprises au plus fort impact social.

Dans les entreprises à capital altruiste, des pactes d’actionnaires ou les statuts prévoit qu’un pourcentage immuable du capital (et donc les dividendes qu’il produit, mais pas forcément les voix) revient à un organisme d’intérêt général désigné à la création de l’entreprise.

Dans toute entreprise, pour rendre les actionnaires plus solidaires des salariés, une prime de fidélité proportionnelle à la masse salariale peut être prévue en abondement des dividendes annuels et devenir ainsi le miroir de la participation aux bénéfices parfois versée aux salariés. A l’extrême, actionnaires et salariés ne font plus qu’un, comme dans les sociétés de personnes du mouvement coopératif. Les bénéfices sont réinvestis ou distribués aux salariés coopérateurs.

Les générations futures

Pour préserver les possibilités des générations futures, l’entreprise à forte RSE peut chercher à dresser son bilan environnemental : bilan carbone, bilans d’émissions de polluants et autres mesures de l’empreinte environnementale de l’entreprise. Connaître le bilan des polluants, de la consommation en eau ou en matières premières permet de minimiser l’empreinte environnementale et, du même coup, de réaliser des économies. Dans le domaine agricole, cette démarche fonde le concept d’agriculture raisonnée. Le reporting environnemental donne également à l’entreprise les moyens intellectuels pour compenser les effets négatifs des activités : par exemple en plantant des arbres pour captures le dioxyde carbonique émis par des usines ou des transports. Les mesures environnementales globales peuvent donner à l’entreprise l’occasion d’innover en analysant et en optimisant le cycle de vie complet de son produit : depuis sa conception jusqu’à son recyclage en passant par les phases d’achat, de mise en place, d’usage, de mise en déchet. On parle alors d’éco-conception.

L’entreprise étant un moteur essentiel de l’innovation, il ne s’agirait pas non plus qu’elle s’approprie l’exclusivité d’idées ou de connaissances au détriment des capacités d’innovation des générations futures. Les technologies de l’information facilitent le partage des créations intellectuelles. Cette baisse des coûts de partage et de modification des idées représente une menace pour des modèles économiques anciens (industrie du disque, cinéma, …). Pour compenser cette menace du partage, la tentation est forte d’étendre la durée des droits d’auteur et de rendre brevetables des éléments qui ne l’étaient pas (algorithmes et logiciels, connaissance du génome, …). La privatisation accrue des créations intellectuelles introduit des obstacles juridiques à la création, obstacles et défenses qui limitent la capacité d’innover des contemporains et des générations futures. A l’inverse, s’assurer qu’une de ses productions n’est pas encombrée de brevets est un moyen pour l’entreprise responsable d’en assurer une diffusion plus large et de donner aux les moyens de développer leur propre créativité. De même, le copyleft consiste pour une entreprise à utiliser le droit d’auteur pour garantir que les tiers bénéficieront de la liberté d’utiliser les produits de l’entreprise, de les étudier, de les copier et d’en redistribuer des versions modifiées sous les mêmes conditions juridiques. Ces pratiques responsables en matière de propriété intellectuelle encouragent la démocratisation de l’innovation et rendent possibles de nouveaux modèles économiques basés sur l’encouragement de la créativité des clients (marché des pro-amateurs et du do-it-yourself) ou sur la valorisation de la relation avec les créateurs (organisations de concerts, consulting, support…).

Les exclus

Le mécénat de solidarité, même lorsqu’il n’associe pas les salariés, est un autre moyen de soutenir la survie ou le développement humain des personnes les plus éloignées de l’entreprise par le biais du soutien financier aux associations de solidarité. Ceci peut se traduire par la création d’une fondation d’entreprise dédiée à ce soutien ou, pour utiliser une forme juridique plus récente et plus souple, par la création d’un fonds de dotation.

Parfois, l’offre de produits ou services de l’entreprise a pour objet direct la réponse à un besoin insatisfait de ses populations, en France ou à l’étranger. L’activité a alors un impact social direct significatif. C’est le cas par exemple de certaines offres de microcrédit ou de micro-assurance qui permettent aux plus pauvres d’accéder aux services bancaires ou assurantiels dont ils étaient exclus.

Pour pousser à son extrémité la recherche d’impact social au profit des plus démunis, certaines entreprises adoptent le principe du social business. Il s’agit de viser exclusivement la création d’un impact social ou environnemental positif et de ne reverser aucun dividende aux investisseurs tout en leur permettant de sortir du capital. Les bénéfices d’un social business sont réinvestis ou servent à rembourser les investisseurs pour leur permettre de sortir du capital mais sans intérêts financiers. Les parts ainsi libérées deviennent alors la propriété d’un organisme d’intérêt général gouverné démocratiquement par les personnes en difficulté bénéficiant de l’entreprise. C’est le cas de la Grameen Bank du prix Nobel de la Paix Mumahad Yunus, au Bangladesh et de toutes ses filiales. C’est aussi le cas de la joint-venture Danone-Grameen qui est dédiée à l’amélioration de la nutrition et du développement économique des populations pauvres au Bangladesh et qui est le premier exemple au monde de social business filiale d’un grand groupe privé « classique ». Une entreprise en social business est faite pour “faire le bien” de manière économique viable mais pas pour “faire de l’argent”.

Dans un esprit similaire, pour lutter contre la pauvreté, 800 entrepreneurs du mouvement chrétien des Focolari ont décidé de mettre leur entreprise au service des plus pauvres. Quel meilleur moyen, pour “faire de l’argent” et l’offrir aux plus démunis, que de créer ou développer une entreprise performante, responsable et profitable ? L’ambition de ce mouvement de l’économie de communion est double : lutter contre la pauvreté grâce aux dons des dividendes et montrer que l’on peut vivre, jusque dans le management quotidien de l’entreprise, une culture du don qui met l’entreprise au service de l’ “amour de son prochain”.

L’entreprise peut-elle devenir sociale ?

De l’environnemental au social en passant par l’économique, le spectre de responsabilité des entreprises est large. Et le curseur peut être poussé plus ou moins loin : depuis l’entreprise qui respecte ses obligations légales (et notamment fiscales) jusqu’à celle dont la finalité est davantage (voire exclusivement) environnemental ou social qu’économique en passant par l’entreprise “à forte RSE”. La notion d’entreprise sociale désigne justement cette catégorie d’entreprises pour lesquelles la recherche d’impact environnemental ou social dépasse significativement la recherche de profitabilité financière. L’avenir semble être fait d’entreprises appelées à être plus responsables. Mais l’entreprise responsable peut-elle évoluer progressivement jusqu’à devenir sociale ? Ou ce luxe est-il est-il trop révolutionnaire et réservé aux entrepreneurs sociaux qui inscrivent cette finalité de solidarité dans l’ADN-même de leur création ?

SVG as an alternative to Flash, here comes bliotux

As a follow-up to my SMIL-animated SVG for accessible textbooks article, here is a copy of the README file of wecena.bliotux. I currently have 4 full-time wecena volunteers currently making accessible textbooks for children with cognitive disabilities (mainly dyspraxia) under the supervision of an INSERM medical research lab and of a dyspraxia-related non-profit organization, Dyspraxique Mais Fantastique. They currently use Didapages, a Flash-powered proprietary authoring tool to make these would-be accessible textbooks. But we are not satisfied by this tool and I wanted to propose an open-standards free software alternative. So I wrote wecena.bliotux as a proof-of-concept of such an alternative technological framework.

Beyond dyspraxia and children with disabilities, I think bliotux may be of some use for any developer looking for an alternative to Flash as a technology to make highly-graphical, ineractive and animated offline or online applications. The source code is available under the wecena subversion repository (until I create a dedicated repository). Here is a full copy of the README file :

wecena.bliotux

This software package is a framework for building web applications having the following buzzwords

  • web
    apps: run in your web browser
  • offline
    apps: no web server, no Internet connection required
  • rich
    applications : highly graphical user interfaces, using SVG
  • animated
    applications : pages can include (interactive) animations using (SMIL-powered) animated SVG templates
  • interactive
    : interaction/behaviour is defined in a simple Javascript file corresponding to a given page
  • with persistence
    of user data and application state : using local storage with persistence engines such as Google Gears (or HTML5 localstorage when it’s mature enough in Firefox)
  • template-based
    : pages sharing a common layout/structure are based on template files
  • document-oriented: a simple data structure in a data.js file defines the data used to populate the corresponding SVG template for any given page
  • free software: distributed under the Affero GPL License (even though I am not 100% sure of the exact meaning of the Affero version for offline applications BTW…)
  • based on open standards: SVG now (Daisy Profile for SMIL+SVG, CSS and WAI-ARIA in the roadmap) rather than based on proprietary technologies such as Microsoft Silverlight or Adobe Flash
  • highly accessible
    even though using JavaScript (see open standards…)
  • as cross-browser
    compatible as possible: apps should run on any web browser as long as they offer some support for SVG and Javascript; and bliotux users should not have to care much about browser compatibily.

The original aim of this package is to build a non-Flash interactive animations management framework so thataccessible
textbooks can be made for children with cognitive disabilities (mainly dyspraxia)
.
But it could be used to produce any set of interactive animations
such as books, websites, interactive animations or I don’t know what.
You imagine.
You experiment.
You tell me what it may be useful for !

The following JavaScript libraries are used

Disclaimer with regards to JavaScript as a programming language :
Ahemm… Javascript was selected because we wanted to have one and only one language to be used both for the making
of bliotux-powered templates and pages and for their execution.
And their execution should not require any
prior installation of software : the web browser should be the only required stuff.
And Javascript seems to be the only open-standards-oriented way to offer rich interactivity to SVG in web browsers.
Too bad.

How to use wecena.bliotux ?

At the moment wecena.bliotux is nothing but a proof-of-concept.
More will come in case the project I’m working on selects this technology
as a viable alternative to the Flash-based proprietary product we are
currently using in order to make accessible textbooks for children
with cognitive disabilities.

Download and install bliotux

It’s in a subversion repository.
There is some subversion documentation available in
case you don’t know how to download software from a subversion repository
. Bliotux is stored
in the wecena repository but it will get its own repository some day.

Create a template

Bliotux pages are based on templates.
Let’s create a first template.

Name your template

Choose a name for your template. In this example,
the name is

simpleOperation

because it is a template page for textbooks
for children learning additions and other simple mathematical operations.

Name a template folder accordingly.
For instance, I have

wecena.bliotux/templates/simpleOperation/

Define the layout of your template

This part is the job of a graphics designer.

The layout of a template is defined by a SVG file.
(Download, install and) use any SVG editor to create such a file.
I personnally use Inkscape, which is free software.

Your SVG template should be named

layout.svg

and
should be stored under the template folder.
Here it goes:

wecena.bliotux/templates/simpleOperation/layout.svg

The next version of Inkscape should allow you to use its new timeline-based animation editor capabilities to add
animation to your template.
At the moment, you will have to have an XML developer edit the source code of your SVG
template and add animation (animated SVG) instructions « by hand » if needed.

Here is a clue about how to possibly accelerate the development of such SVG animations without waiting for the
next version of Inkscape :

  1. Download and install Open Office Impress
  2. Make a (duplicate) sketch of your layout in Impress
  3. Add the desired animation effects to it using the rich set of animation features Impress offers
  4. Save your animated Impress presentation in its native .ODP format
  5. Open this file using an archive handler (such as winzip under windows) :
    Open Office files are nothing but ZIP archives containing XML and graphics
  6. Edit the source code of the main XML file this .ODP archive contains.
  7. Ask your XML developer to copy, paste and adapt the animations instructions therein
    into your

    layout.svg

    file.
    (The animation instructions can easily be located : they use the

    anim:

    namespace).

Define the interactivity of your template

This part is the job of a Javascript developer.

This is the hardest part if you are not a developer.
It should be easy if you have any experience in web development.

In the case of a children textbook for teaching additions and other simple mathematical operations,
we’d like our « simpleOperation » template to display a simplified virtual keyboard with numbers.
When the child clicks on a number, this number is added to a « result » text element in the template layout.
So we need to know how to use an SVG element (the number we want to click on) as an interactive button
which will display some text result as the content of an other SVG element.

The interactivity of your template is first prepared in your

layout.svg

file.
Using Inkscape XML Editor (Ctrl + Shift + X), you add event attributes
to the SVG elements you want to add some interactivity to. This involves accessing
the XML source code of the SVG file, which you should not be afraid of thanks to
Inkscape XML Editor.

For instance, let’s say you have a SVG group of elements which you want to
act as a button. You select this group using Inkscape. You press Ctrl+Shift+X. The
XML Editor opens. There you see the group of elements as a <g … > element.
You then want to add interactivity to this group. You have to add a

onclick

attribute.
The value of this attribute should be « clickButton(evt) ». This means that whenever the
user mouse clicks on this button, a MouseEvent event called « evt » will be fired and
some Javascript function called « clickButton » will have to handle this event so that
something special happens.

Now you have injected some interactivity attributes into the XML source code of
the SVG file of your template. This source code now includes things like this :

<g onclick="clickButton(evt)" ...

Let’s develop this clickButton Javascript function so that you define what should
happen whenever the button is clicked. This definition is written in a Javascript file
you have to name « interaction.js » and which sits under the template folder:

wecena.bliotux/templates/simpleOperation/interaction.js

For instance, this file could contain the code below (see included examples, too, if needed) :

function clickButton(evt){
    alert('You clicked the button !');
    $('.whereResultShouldBeDisplayed', svg.root()).html('Clicked !');
    $('.someSVGElementsWhichShouldBeEmptiedWhenButtonGetsClicked', svg.root()).html('');
    storageSave('.whereResultShouldBeDisplayed', 'Clicked !');
    storageSave('.someSVGElementsWhichShouldBeEmptiedWhenButtonGetsClicked, '');
}

If you are as unfamiliar with Javascript as I am, you need some more explanations here.
What does this function says ?

It says that it takes an input parameter called « evt ». But it won’t use it in this case.

It first displays a popup alert window with a message (‘You clicked…’)

Then it changes the content of the SVG displayed in the web browser. It writes the text ‘Clicked !’ in
every SVG (or HTML BTW) element which has an attribute called « class » (the same attribute which can be used
for CSS files) including the value « whereResultShouldBeDisplayed ».

For instance, let’s say you have this text element in your layout.svg file :

<text
  id="text4790"
  y="386.98224"
  x="454.43787">
  <tspan
    y="386.98224"
    x="454.43787"
    id="tspan4786"
    class="whereResultShoudlBeDisplayed someOtherClass">Not clicked yet.</tspan>
</text>

Then, once the user clicks the button, your interaction.js file will have this text element changed into this :

<text
  id="text4790"
  y="386.98224"
  x="454.43787">
  <tspan
    y="386.98224"
    x="454.43787"
    id="tspan4786"
    class="whereResultShoudlBeDisplayed someOtherClass">Clicked !</tspan>
</text>

Can you see the difference ?

For more information about how Javascript can have the web browser manipulate
the content of the page at runtime, please see jQuery API documentation. Just remember to
apply jQuery selectors to the root of the SVG document (

svg.root()
) and you should be fine.

There is also this call to storageSave in your interactivity function. What does it mean ?


storageSave

is a function defined by bliotux.
It takes 2 input parameters : a key and its value.
It will have this pair of (key, value) made persistent in the local web browser.
Even if the browser (and possibly computer) is closed (shutdown), this (key, value) pair is still available
and can be later retrieved using another bliotux function :

storageLoad(key)
.
Next time the same page is displayed, any SVG element which corresponds to key (as a jQuery selector) will have
its content filled with value.

In this example, storing the text

"Clicked !"

as
the value of the key

.whereResultShouldBeDisplayed

means 2 things:

  1. this text

    "Clicked !"

    can be further retrieved with any Javascript call to

    storageLoad('.whereResultShouldBeDisplayed')
  2. next time this page is displayed using the same web browser, the

    "Clicked !"

    text will be added to all SVG elements which have the

    whereResultShouldBeDisplayed

    class attribute in their source code.

As a result of this, the state of each page can be made persistent
so that when the user returns to a given page he already interacted with
this page displays the exact same info/aspect/behaviour as before.

Now you have your

interaction.js

file which defines the full interactivity of your template document.

Create a page

Creating a page is much easier than creating the template a page is based on.
But it requires writing some (extremely simple) code using any text editor (Windows notepad…).
Any brave user should be enabled to do so.

You have a full bliotux template, including an SVG layout (possibly including animation) and Javascript interactivity.
Now let’s create a page based on this template.

Name the folder with the page name

In this example, let’s name a first page

Sesamath_CP_page-094_exercice-001

along the name of a French free (as in free speech) textbook vendor.
In order to do so, we create this folder:

wecena.bliotux/pages/Sesamath_CP_page-094_exercice-001/

When we want to access this page, we’ll have to direct our web browser to such an URL as

file:///home/jean/wecena.bliotux/index.xhtml?page=Sesamath_CP_page-094_exercice-001

Define the template this page uses

Which template will this page use ?
The answer comes as a Javascript file we have to create:

wecena.bliotux/pages/Sesamath_CP_page-094_exercice-001/data.js

This file contains the declaration of variables describing this page.
The variable called template defines the template to be used for this page:

var template = 'simpleOperation';

Populate the template

The next variable in this

data.js

file define data which will get injected into the template so that
the page is built :

var data = {
  '.pageCentaine':'',
  '.pageDizaine':'9',
  '.pageUnite':'4',
  '.exerciceCentaine':'',
  '.exerciceDizaine':'',
  '.exerciceUnite':'2',
  '.operande1Centaine':'',
  '.operande1Dizaine':'',
  '.operande1Unite':'7',
  '.operateur':'-',
  '.operande2Centaine':'',
  '.operande2Dizaine':'',
  '.operande2Unite':'5',
  '.resultatCentaine':'',
  '.resultatDizaine':'',
  '.resultatUnite':'',
};

This data associative array lists (key, value) pairs which define which content should be injected where.
The key (for instance

.pageCentaine

) is a jQuery selector to be applied to the root of the SVG template.
The value is some SVG code which is to be inserted as the content of any SVG element matching the key.

Rather than using

id

attributes as selectors (

#pageCentaine

), it seems preferable to use

class

attributes (

.pageCentaine

) which carry the meaning (semantics) of the corresponding SVG element and can be reused
several times in the same template (whereas IDs should be unique, I suppose).
Anyway, the SVG template should be edited so that the corresponding

class

attribute are present where needed.

Include some page-specific graphics

Using the mechanism of templates and the data.js file, you may have your SVG template include some areas where
pages could have specific bitmap (JPEG, PNG) files displayed.
This is just the matter of including such a JPEG file in the

layout.svg

file,
giving the corresponding SVG element an appropriate class attribute (using Inkscape XML editor for instance)
and then defining in

data.js

the name of the picture file to insert in this area of your layout for this specific page.

But you can also have given pages include full SVG files.
For instance, the left part of

simpleOperation/layout.svg

is meant to display a funny but didactic illustration
where characters (such as Tux the penguin) invite the child to perform the mathematical operation at hand.
Such an illustration could contain page-specific animations.
Adding an animated GIF file would not be enough.
The full power of SVG for animations may be required.
In such cases, you can define an svgParts variable in the data.js file of the page :

var svgParts = {
  '#illustration': 'illustration.svg'
}

This variable says : « Hey, bliotux, please look at my template
and find the SVG element with

illustration

as the value of its

id

attribute.
Then replace this full SVG element with the first

g

element (SVG group) you will find
in the

illustration.svg

file sitting under this page folder. Thanks. »

That’s it

You can access and test your page at a URL which should look a bit like that (the exact path depends on the folder hierarchy
on your hard drive):

file:///home/jean/wecena.bliotux/index.xhtml?page=Sesamath_CP_page-094_exercice-001

Side note : Now I realize I can’t use doctestjs for this document so it’s pretty useless to me.
It would have been much useful if only I had figured out a way to have some Javascript code generate
a template document in the filesystem during the doctest so that I can further test bliotux on it
using doctestjs. Maybe later…

The « social horror stories » prize

« Technologie et Innovation Sociale » is a French initiative which aims at having more technology-based solutions available to solve major social issues. It’s a would-be incubator for hightech social enterprises. As a first step, Technologie et Innovation Sociale wants to identify those major social issues : which ones are real stakes ? which ones are to be prioritized ? which ones are the most urgent ones ? How to proceed ? If plain surveys are to be published on the Internet, then we will identify social issues for geeks and internauts, for the information haves. What about the information have-nots ? How to leverage the power of Web 2.0 technologies and have online volunteers sort, classify and prioritize those issues ? How to gain some legitimity and to preserve some representativeness ? Here are my suggestions.

Let’s launch a « social horror stories » prize and website. It’s an open and collaborative website where any user can register and publish any social horror story : « John Doe is a bank employee. He is also homeless. This week, it’s snowing and it’s -12°C at night. The homeless shelters are full and John Doe could not find any bed yesterday. It was so cold he stuffed his coat with personal papers before trying to sleep in the park. He died of hypothermia. One of the papers he was using in his coat was his last last paysheet. Read the full story « Homeless dying without bonus » in the Coldcity New Tribune Dec 10, 2009. » The more they propose such stories the higher their « storytelling » score.

The story (and any data published on the site) is published under a share-alike Creative Commons license. All content and data can be fully downloaded, copied, aggregated, analyzed, criticized and redistributed by anyone under the same license. Hence users get the guarantee that their contributions are kept from being owned and controlled by some editors for their sole interest.

The user adds any available reference in order to check the facts.

Further contributors read this story as a blog post. They tag this story with freely chosen keywords (selecting from or added to a search-as-you-type list) :  « homeless, weather, death, cold, bank, shelters, urgent, revolting, astonishing, fact-checked, important, life-or-death, so-modern, poverty, … ». The more they tag, the higher their « tagging » score. Some tags are worth a higher increase in score : these are tags selected by the site editor for special purposes (« worth-donating-my-money, worth-petitioning, worth-more-attention-by-the-government, illustrative-of-a-very-common-issue, unsolvable, … »).

The story itself can be edited by any reader (wikipedia-style), and the record of subsequent changes are being kept and displayed with a click. Comments allow users to self-regulate these changes through discussion. If needed, controversial stories can be locked by a group of power-contributors and displayed as such, following a (hopefully rare) vote by commenters about the « controversiness » of editions for this stories by commenters.

The site proeminently displays a list of tags : « urgent, important, incredible, imaginary, cheesy, …« . Clicking on the « revolting » tag (or any other tag) displays an (almost-randomly-picked) pair of stories sharing this tag. The user is presented with a simple question : In your opinion, which one of these stories and the underlying social issues they illustrate is the most « revolting » one ? The user clicks their answer and is given another pair of horror storie/social issues to compare in a given dimension. The more they click such story-fights, the higher their « ranking » score. Stories are also ranked along tags according to the number of pair-fights they win.

The higher a story gets ranked on a tag, the higher the « tagging » score of the person who put this tag on the story and the higher the « storytelling » score of the authors of this story.

The site is invite-only. Each user has a single sponsor (the person who sent them the invitation). The higher a score for a person (+1), the higher the score for their sponsor (+1/2), the higher the score of the sponsor of this sponsor (+1/4), etc. This multi-level scoring gives a strong incentive for users to recruit good storytellers, good rankers, good recruiters and so on.

What can are these scores used for ? First, it’s like a game : there is a hall of fame for best taggers, best storytellers, best recruiters, best rankers, best overall user and so on. In each category and for the overall ranking, the top best gamers/users win the prize. What’s the prize ? It’s money of course !

Not usual money users can save in their bank accounts though. It’s money donated to the NGO of their choice (proabably selected in a huge pre-filtered list). There will be money donated to some NGOs. But which ones ? The winner choose.

How much money is to be donated ? There is a jauge on the home page displaying the amount of donation at stake. The initial amount may be low. But any user can donate to the game (paypal or similar micropayment systems). Corporate sponsors can bid on special category prizes (check the « Hilton Hotels prize for the most revolting homeless story »). Philanthropists money is donated to the NGOs picked by the users.

In the end what do we get ? Much fun. Better awareness and illustration of a wide variety of more or less common and revolting social issues. A huge and free (as in « free speech », not as in « free beer ») base of content and data which can be used as a rich and stimulating source of inspiration for would-be social entrepreneurs and social innovators. Some insights about the perception people have of social issues and topics. Further data analysis can nourish a democratic debate about these issues and their relative importance and prioritization by public policy makers and social innovators. The site can act as a specialized social news aggregators platform as well as an advertising platform for social innovators proposing solutions in their respective field of action (along the corresponding tag).

That’s it.

At the moment, my best source of inspiration for a somehow similar implementation of such ideas (beyond the wikipedia) is Stack Overflow (which is still far from implementing all aspects of this though).

In fact I first had this whole idea for Wecena, my own social venture. I think such a scheme could be used to have volunteer contributors collaboratively rank and analyze the potential social impact of nonprofit projects. This would not be a « social horror stories prize » but a « social innovation project » prize in my very case. Some sort of a collaborative alternative to Social Return On Investment (SROI) analysis. And the multilevel-scoring-coupled-with-donations scheme could be used by me in order to recruit additional IT corporations as philanthropists for the nonprofits organizations I serve. I remixed my initial idea for the purpose of stimulating the conversation at Technologie et Innovation Solidaire. I hope this can be useful.

Please tell me what you think.

SMIL-animated SVG for accessible textbooks

Dyspraxia is a serious learning disability for 250.000 children in elementary schools in France. Not that French children are particularly disadvantaged. It just happens that it seems to be a very wide spread kind of disability and the proportion of dyspraxic children should roughly be the same from country to country. In order to overcome this obstacle, the nonprofit organization I currently work for is leading the way toward adapting the ergonomy of existing paper textbooks and helping textbook editors creating the accessible (and digital) textbook of the future. Maybe you’ve heard of any similar initiatives ?

Their first attemps were made using a French e-learning authoring tool called Didapages. Up to version 1.1 it was free for non-commerciale uses. Version 2 is much more commercially oriented. And closed-source. And only runs on Windows. And despite its ease of use for educators and non-IT specialists, it has several drawbacks and limitations, partly due to the technology it uses, Flash, and partly because its developer does not think he can build a sustainable business model using free software licensing. Too bad. I am looking for an alternative solution, as some part of its user community does.

Free software packages such as Xerte, eXe, Scenari, Docebo and others look attractive. But none is the ideal solution : either they are also based on Flash, or their community is almost non-existant and their development may have stopped some time ago. Educators are not developers. And the crowd of educators might be missing a critical mass of developers in order for a very striving free software community to have developped around any elearning authoring tool. The bells and whistles of proprietary products have much more appeal to the average teacher.

From a technology perspective, I had a look at open standards for acessible, animated and interactive contents. W3C, please show me the way. The relevant standards seem to be :

  • HTML 5 for content, with its Javascript-animated « canvas » element for sprite-based animations (for bitmaps graphics) ;
  • SMIL for animated documents and for limited interactivity, possibly also combined/extended with Ecmascript for more interactivity ;
  • CSS for styling, possibly some day with Webkit-like CSS animation but this option does not excite me much ; CSS animation may require Javascript or SMIL
  • SVG for graphics : there is such a thing as SVG Animation, and Ecmascript can be embedded in a SVG file in order to provide more interactivity and to overcome some current interactivity limitation of SMIL ; SVG is for vector graphics but could also embed (and animate) bitmap graphics (used as sprites).

The advantage of SMIL and SMIL-animated SVG over Flash seems to be that SMIL is a declarative technology. This « document » model allows less dependency on scripting and more flexibility through earlier or further transformations (with templating, XSLT or content management engines). This allows the animation and, to a lesser extent, interactivity aspects of educational content to be a native part of the content itself and not to be an afterthought. It facilitate later and looser coupling with further technologies. It allows more ReSTfullness (restafari !). It does not cause cancer. Well, I don’t know. It tastes good. (note to myself : consider discarding this whole paragraph) :)

Flash applets, on the other hand, can be made somewhat accessible but this may not be an easy task for the average Flash developer, and SMIL sounds like a much more accessibility-friendly technology. There even is a DAISY profile for SMIL documents. I should have a deeper look into these profiles.

But interactivity with specific application logic seems to require a bit of scripting anyway, doesn’t it ? Here comes Ecmascript with SMIL, which should probably be limited to a minimum. Can you always provide accessibility-safe fallback mechanisms for a SMIL document if you introduce scripting for interactivity ? I am not sure. I will have to figure this out. Maybe the DAISY SMIL profile tells me more about this.

After a first glance at these standards and being an non-expert in animated contents, it seems to me that there ARE available and mature open standards which cover most of the accessible and digital textbook related concerns. There should be no need to develop any addiction for Flash authoring systems.

But the problem is that these standards are still « emerging ». They were proposed several years ago, are slowly maturing and their support in modern web browsers only starts to become a reality. The most advanced support for SMIL-animated SVG comes with Opera. And is said to be available in Firefox 3.6 as far as I understood. I’ll test this stuff with Opera until Firefox 3.6 comes to ubuntu. The lack of consistent support for SMIL and SVG animation can be overcome with the use of free software SDK or Javascript libraries which take SMIL elements as input and generate equivalent Javascript instructions as output. For instance, the RaphaelJS Javascript library allows browsers to support animated SVG even if such a support is not built-in for them. As far as I understand, the Ample SDK allows SMIL animations to be supported by non SMILable browsers, too.

The main problem is not in web browser support, though. The main problem is that there is almost no (free software) authoring tools for such animation and interactivity technologies. Limsee2 is a code editor/development environment for SMIL (does it support SVG animation ?) but its INRIA authors stopped working on it some time ago. And there seems to be no real community behind it. Limsee3 is not a further version of Limsee 2 (despite the name). It is a WYSIWYG SMIL authoring tool but it does not seem to support SVG animation (does it ?). And it may also probably stop being developed as soon as the governmental subsidies behind the corresponding research project end. Yet another research package soon to be dying on the labs shelves ?

This sends me back to my above observation about the non-existence of a sufficiently-big or proficient-enough community of educators who can use AND develop such advanced authoring tools with accessibility in mind. Too bad…

Madswatter and Ajax animator are very early prototypes for animation authoring environments. There are other free software attempts currently aiming at proposing a proper animation editor: clash/geesas (which is a fork of pencil) and moing… Maybe you’ve heard of other projects ? Inkscape has some plan for introducing SMIL authoring capabilities. There even is a mockup of the user interface for the timeline-based authoring of animations. This is work in progress. Well, maybe this is more than just a work on blueprints : the Inkscape roadmap mentions simple and limited animation authoring as a feature for their next release (version 0.48) ! The 0.49 version should focus on much more support for animated SVG. Exciting ! This topic is hot right now. Itches are starting to be scratched a lot !

That being said, I realize I already have a tool for authoring animations. It’s Open Office Impress. And the Impress wiki tells me that its animation are based on SMIL ! When I have a look at the xml file saved by Impress (inside its ODP zipped archive), I can indeed see SMIL element names and attribute names mixed with Open Office specific elements and attributes, even though the resulting document may not be SMIL compliant, strictly speaking. A limited effort (XLST or a custom extension) may allow to produce real SMIL documents.

Instead of using elearning-specific authoring tools (think Xerte, eXe, …), what if futur editing software for educational contents were tools I (or any educator) already have on my desk : Inkscape for the creation of bits of animated graphics and/or Open Office Impress for the layout and animation of the overall animated document? In Inkscape, the « properties » window of any object even reveals some event fields for Ecmascript/Javascript instructions (onclick, onmouseover, etc.). Too bad Impress can’t properly import SVG content. But maybe this is not required. In the end, e-learning specific tools would be required anyway for the packaging of the resulting animated and interactive content into Learning Management Systems such as Moodle. Such content packages would need to be made SCORM or AICC compatible so that they expose their navigational and educational structure to these platforms via a standard API. I read the SCORM is not ideal as such an API from an accessibility perspective because it heavily relies on Javascript (it is a Javascript API). But does the use of a scripting language always prevent accessibility ? I don’t know. SCORM may be nice for portability from LMS to LMS. But so nice for accessibility.

At the moment, I feel like the ideal authoring chain of tools for educational content / textbooks would be as follows :

  1. Inkscape in order to create the graphism, layout and animation of individual educational « applets » : cross words, coloring books, simulations, geometry tools, … the result being saved as an animated (and partial SMIL-interactivity) SVG file with event-hooks being defined so that we can go to the next step
  2. an ECMAscript code editor (I am not into this emacs thing… Eclipse anyone ?) in order to transform this animated SVG file into an animated AND interactive SVG piece of content
  3. Open Office Impress in order to create the layout, structure and general content of your course/manual/textbook chapter/whatever, inserting the SVG file and adding further animations as well as individual multimedia items (sound clips, videos, hyperlinks), the result being saved as a SMIL/HTML document
  4. More scripting edition of this document if needed (but would it be needed at this stage ? I can’t tell)
  5. CSS styling would be made ready for the document at this stage or earlier (can Open Office make any use of existing CSS stylesheets or would it always mix them into its own content format ?)
  6. a SCORM packager such as Reload Editor would import this content and allow the author to specify the SCORM relevant bits of information, the result being saved as a Moodle-ready package
  7. Your favority Moodle-like LMS platform would serve the content to users, possibly running on their laptop in an offline fashion

This whole chain of tools would probably benefit from being powered by a web content management system (Plone ? Drupal ?) so that the assembly line is smoother and allows widespread collaboration, with workflows, access control and so on. No need to get stuck back to the Dreamweaver era of the I-am-waiting-for-the-Dreamweaver-guy-to-update-my-textbook.

Now it’s your turn. What do you think ?

La téléconférence du geek

Une grande SSII a enfin signé avec l’une des associations qui bénéficie du wecena. Le communiqué de presse est prêt. L’appel au volontariat destiné aux 4000 salarié est prêt à être envoyé. Il ne me manquait plus qu’une chose pour faire nickel : avoir une solution de téléconférence gratuite pour accueillir les volontaires à distance, répondre aux questions des personnes intéressées (managers, volontaires en puissance, etc.). J’ai donc dû mettre au point un système de téléconférence spécial geek dont j’espère bientôt faire la démo. Voici mes notes de travail, prenez-en soin !

Sous ubuntu 9.04, j’ai installé webcamstudio, téléchargeable via http://www.ws4gl.org/, installable depuis un dépôt ou bien depuis les sources, facile à compiler avec NetBeans sous Ubuntu (installer le paquet NetBeans). Webcamstudio est un logiciel en Java qui permet de créer une webcam virtuelle qui peut capture l’image de votre bureau, des animations, du texte, un canal IRC, une vidéo Youtube, le flux video d’une vraie webcam branchée sur le PC…
Mettre la sortie en 320×240 pour éviter tout risque d’incompatibilité avec le site qui va diffuser la vidéo (ustream.tv par exemple).
WCS créé un device « Video loopback » de type « Video 4 Linux » (et pas Video 4 Linux 2).
Lancer l’utilitaire gstreamer-properties pour vérifier que ubuntu arrive à lire cette webcam et informe ubuntu de la webcam par défaut. Video / entrée / Video for linux 1, device = Video Loopback 1. Faire un test pour vérifier que ubuntu détecte bien la webcam virtuelle créée par webcamstudio.
Aller sur ustream.tv et y créer son compte utilisateur.
Sur le site de webcamstudio, il y a une explication pour savoir comment faire en sorte que flashplayer accepte d’utiliser comme il se doit la webcam virtuelle : fait aller sur un site macromedia.com pour y régler les paramètres de sécurité du flashplayer de votre navigateur : « toujours autoriser www.ustream.tv, cdn1.ustream.tv » (et aussi quantserve. com ?).
Puis se logger dans ustream et aller dans l’interface de broadcast. Y sélectionner son périphérique vidéo (video loopback) et son périphérique audio (« linux microphone »).
Ensuite, il y a un certain nombre de réglages à faire pour avoir du son diffusé. On lance donc l’utilitaire « pavucontrol » de pulseaudio sur ubuntu (à partir de la 9.04). Cet utilitaire permet de :

  • régler chaque périphérique audio d’entrée (les sources) et de sortie (les sinks)
  • régler aussi les « moniteurs » qui sont des genres de périphériques virtuels créés par pulseaudio ; notamment, pulseaudio créée un « moniteur » associé à votre périphérique de sortie son (vos hauts-parleurs) ; ce moniteur se comporte comme une sorte de microphone virtuel qui serait branché sur vos hauts-parleurs et vous permet de capturer tout son émis par votre PC pour pouvoir l’enregistrer à nouveau ou le diffuser en streaming par exemple,
  • relier chaque logiciel qui produit du son (lecture) ou en capture (enregistrement) à un périphérique de sortie son de son choix, y compris aux « moniteurs » ; en l’occurence avec une seule carte son en sortie (pas de casque audio USB), vous n’avez qu’un seul choix pour les logiciels de lecture. Par contre, pour les logiciels de capture, vous pouvez choisir de capturer ce qui entre dans le microphone ou bien ce qui entre dans le moniteur de la sortie de votre carte son, à savoir ce qui sort de la carte son… Vous suivez ? J’explique…

En pratique, le périphérique de sortie par défaut, c’est la sortie carte son (un casque dans mon cas). Et le périphérique d’entrée par défaut, c’est mon microphone du casque audio. Je mets en sourdine le microphone de ma webcam.
De plus, le site ustream.tv qui diffuse votre video et votre son est utilisé via votre navigateur web, firefox dans mon cas. Firefox apparaît donc dans pavucontrol de 2 manières :

  1. en tant que logiciel de lecture (c’est le son joué par firefox), je le relie à la sortie de ma carte son mais je le mets en sourdine le temps de mon broadcast (sinon, ça pourrait faire de l’écho).
  2. mais aussi et surtout en tant que logiciel d’enregistrement (c’est l’applet flash de ustream.tv qui capture mon son) que je relie au moniteur pulseaudio de ma carte son de manière à enregistrer tout le son qui sort de ma carte et pas seulement ma voix captée par mon microphone mais aussi les MP3 joués en local, les conversations téléphoniques via un softphone, etc.

Le problème, c’est que ma voix qui entre dans le microphone ne ressort pas dans la sortie de ma carte son. Sinon, ça me ferait de l’écho dans les oreilles. Donc ma voix n’est plus capturée par l’applet flash de firefox/ustream puisque celle-ci est maintenant associée au moniteur de la sortie son.
Pour contourner ce problème, on créé une loopback audio grâce à 2 utilitaires de pulseaudio. Ouvrez une fenêtre de terminal et tapez-y parec | pacat.
parec apparaît dans pavucontrol en tant que logiciel de capture son à qui on demande de capter l’entrée son du microphone. Il envoie ce son (ma voix) vers pacat via un pipe. pacat, lui, apparaît dans pavucontrol comme logiciel de lecture. Et il envoie forcément sa sortie (ma voix) vers la carte son. Donc ya de l’écho. Tant pis, on diminue le son dans le casque (physiquement), si ça gêne.
Mais on obtient le résultat recherché : à savoir permettre à firefox/ustream de capturer non seulement ma voix mais également tout ce qui sort des logiciels audio du PC.
Maintenant, l’audioconférence. Pour cela, j’utilise un softphone, en l’occurence Twinkle (ou parfois Ekiga). J’ai un compte SIP chez un opérateur de voix sur IP. Je recommande ippi.fr, c’est gratuit. Ippi.fr offre (gratuitement via SIP) des salles d’audioconférence. J’appelle donc avec twinkle cette salle d’audioconférence. Twinkle apparaît dans pavucontrol à la fois comme logiciel de lecture et comme logiciel d’enregistrement. En tant que logiciel d’enregistrement, je lui demande simplement d’enregistrer ma voix. En tant que logiciel de lecture, je lui demande juste de faire son travail, c’est-à-dire d’envoyer le son produit par les interlocuteurs de l’audioconférence vers la sortie de ma carte son, de manière à ce qu’il puisse être capté, comme ma voix à travers le moniteur pulseaudio de cette sortie, sur lequel est branché la capture audio de firefox/ustream.
Et voila.
Les inconvénients actuels :

  • ça bouffe un max de CPU tout ça : twinkle, webcamstudio, firefox avec l’applet flash de ustream, pulseaudio en plus. C’est tout juste tenable sur mon laptop dual core 2×1,2 GHz. On peut rendre les choses vivables grâce à un ajustement des priorités via « sudo htop ». pulseaudio tourne d’office à haute priorité (-11). Je mets manuellement twinkle à -2 (prioritaire). Et firefox à -1 et on laisse webcamstudio à 0. Toutes les applis non prioritaires (applets Gnome par exemple) peuvent être passées à 1 (non prioritaires). Faute de ce type de réglages, l’audioconférence peut être ingérable ou la capture sur ustream de trop mauvaise qualité (y compris des pertes de trames entraînant une désynchronisation de la voix et de l’image si on demande à ustream d’enregistrer le broadcast pour la postérité). Autre possibilité de contournement : faire tourner le tout sur un PC plus puissant. Autre possibilité de contournement, faire une conférence main libre avec un téléphone normal. On évite ainsi le softphone mais le son capté le sera via un microphone près du téléphone.
  • j’entends de l’écho quand je parle (à cause de parec|pacat). Possibilités de contournement : est-ce qu’utiliser le module-loopback de pulseaudio règlerait ce problème (pacmd load-module module-loopback) ? a priori non. Autre possibilité de contournement : le téléphone main libre à côté du PC. Autre possibilité : baisser le son du casque quand je parle et le remonter quand j’ai fini de parler. Autre possibilité : trouver un moyen pour dire à pulseaudio qu’un logiciel de capture devrait combiner 2 périphériques d’entrées au lieu d’un seul : le microphone qui capte ma voix et le moniteur de la sortie son qui ne capterait plus ma voix (on se passerait de parec|pacat).
  • ma webcam est une caméra sur batterie, il faut que je pense à la brancher sur secteur sinon… elle se vide.
  • il faudrait voir si on ne peut pas diffuser une meilleure qualité d’image (640×480) et ce que ça implique en terme de CPU.

Au final, je me dis qu’il faut que je remette la main sur mon téléphone SIP matériel (Gigaset de Siemens) et ça simplifera mon problème de CPU. Mais ça ne donne pas une solution « portable »…

Mobile health applications for Africa

My friends at Pesinet are building a mobile health technology and system which will save the life of thousands of babies in poor countries such as Mali, in Africa. It happens that I identified several similar solutions and I want to share these pointers with them (and with you !).

The open mobile consortium (OMC) is definitely an organization Pesinet should get to know in details and consider joining. RapidSMS is a mobile, SMS-based, data collection solution promoted by the OMC.Rapid Android is a mobile, Android-based system also by the OMC. The Open Data Kit is another OMC solution for mobile data collection and exploitation. Mesh4X, yet another OMC solution, for information sharing. CommCare aims at supporting mobile health workers. The OMC does not only provide technology but also access to expertise and insights from other social innovators.

LittleFish is another open source initiative which aims (aimed until 2002 ?) at providing  technologies for mobile health workiers. Why do they seem to have stopped ? Maybe there are some interesting lessons to learn from their experience for Pesinet ?

The Grameen Foundation runs an « AppLab » program which aims at creating applications and technologies for social development. One of their project builds technology for community health workers in Ghana (also funded by the Bill and Melinda Gates Foundation).

Do you know any other similar initiatives ?

Le code du wecena est libre

« Vive le wecena libre ! » comme qui dirait l’autre. Ce petit message pour signaler à ceux que cela intèresse que j’ai libéré le code qui me permet de faire tourner wecena.com. En d’autres termes, ce logiciel libre est désormais distribué (publiquement) sous licence GNU Affero General Public License v.3.

Le code en question constitue une suite de produits d’extension pour le système de gestion de contenu Web Plone. Certains de ces produits sont spécifiques au fonctionnement du wecena (les produits wecena_core et wecena_integration). Certains autres sont plus génériques et peuvent avoir leur utilité hors wecena. Je pense notamment à wecena_dynamicroles pour améliorer la flexibilité du système de sécurité de Plone et à wecena_ldapuser pour synchroniser de manière bidirectionnelle les utilisateurs Plone avec les entrées d’un annuaire LDAP.

Votre expertise python/Zope/Plone est plus que bienvenue si vous voulez vous amuser avec ces produits et filer un coup de main au passage !

Altruistic Capital, semifinalist of Echoing Green 2009

Albeit disappointed, I enjoyed the results of the 1st selection phase of the 2009 Echoing Green fellowship program. Of course, it had some positive consequences on my venture. But the most positive side of this is that Thierry Klein brought my attention to the fact that his own (French : Cocorico ! as we say here)  initiative, namely the Altruistic Capital, is selected as a semifinalist. I wish he will be at the next Echoing Green selection week-end in New York this spring and, hopefully, the Altruistic Capital project will be boosted by a 60.000 USD grant.

The Altruistic Capital concept is a nice and innovative way for tightening the public good to the performance of for-profit corporations, by letting nonprofit organizations receive a share of these profits. They indeed become shareholders of the forprofit, as the name « Altruistic Capital » suggests.

Next questions for me are :

  • how can I let some open source businesses become more familiar (and hopefully fond of) such initiatives (this is also an open question for the economy of communion which shares so much in spirit with some aspects of free software)
  • when, how and to which nonprofit(s) will I donate a part of the capital of my nonprofit ? this question is a bit difficult for me to handle given that my customers are nonprofits and I may prefer not to create interferences between business itself and the altruism of my capital… or maybe I should let this happen ?

I definitely have to spend some time with Thierry, face to face. Maybe next time he comes to Paris if our schedules can be synchronized.

Good luck, Altruistic Capital and Thierry, for the next phase of the EG selection process !

Mécénat open source

[J’ai la flemme de faire un nouveau billet alors je remets celui-ci à jour, en gras.] Ce lundi 13 octobre [puis, après report, ce lundi 20 octobre], Nicolas Sarkozy devrait rendre public le rapport « Plan Numérique 2012 » d’Eric Besson, le secrétaire d’Etat français en charge du développement de l’économie numérique. [Finalement, c’est Eric Besson qui a fait la présentation car M. Sarkozy était occupé par l’actualité de la crise financière]. L‘une des mesures phares consisterait [aurait pu consister] à faire bénéficier du régime fiscal du mécénat toute contribution aux logiciels libres. Cette recommandation reprendrait alors [aurait alors repris] celle formulée par Jacques Attali dans son rapport sur les freins de la croissance.

[Finalement, le gouvernement a préféré éliminé du rapport toute proposition relative aux logiciels libres, ce que je regrette, comme l’April.]

Si cette [une] recommandation [de ce type] est un jour traduite dans la loi (et il faut [on aurait pu] l’espérer), cela signifierait que toute entreprise distribuant sous licence libre les résultats de certains de ses travaux pourrait bénéficier d’une réduction d’impôt nette de 26,67% de la valeur de ces travaux (60% moins le surplus d’impôt sur les sociétés qu’il faudra alors payer sur la valeur de ce don) et un peu plus encore dans le cas des très petites entreprises (car l’impôt sur les sociétés y est plus bas). La valeur des contributions est habituellement égale à leur coût de revient (rémunération et charges sociales des développeurs, au prorata temporis), dans la limite de 5 pour mille du chiffre d’affaires de la société contributrice. Cette économie d’impôts est reportable sur 5 ans en cas de dépassement du plafond ou de résultats négatifs.

Qu’est-ce qu’on attend pour faire la fête ?

Le mécénat open source serait, à mon avis, une excellente nouvelle pour les communautés du libre puisque cela inciterait les sociétés utilisatrices et les sociétés de service à porter encore plus d’attention à l’importance de leur engagement open source et les encouragerait à partager davantage de leurs travaux. Mais ce serait aussi un bel espoir pour l’industrie française des services informatiques qui pourrait ainsi s’afficher en première place mondiale des pays soutenant le plus l’informatique libre. On pourrait même espérer que le dispositif soit étendu aux contenus libres, au cinéma open source, à la science libre, à l’architecture libre… Bref, ce serait une belle évolution de l’économie de la propriété intellectuelle.

Cependant, les SSII et certaines communautés du libre ignorent sans doute qu’elles peuvent dores et déjà se lancer dans le mécénat open source, sans attendre de nouvelle loi. En effet, la loi actuelle sur le mécénat impose « seulement », comme condition supplémentaire, que le projet open source soutenu par un mécène soit d’intérêt général. Un projet est d’intérêt général lorsqu’il est non lucratif (non commercial, à nette utilité sociale), à vocation philanthropique, humanitaire, éducative, scientifique, sociale, culturelle ou environnementale (etc.) et lorsqu’il est piloté par une organisation (par exemple une association) dont les véritables dirigeants ne sont pas rémunérés (gestion désintéressée) ou bien encore lorsqu’il s’agit d’un projet de recherche se traduisant par une thèse de doctorat.

C’est pourquoi j’ai créé une entreprise dont la vocation est de faire avancer les projets informatiques d’associations d’intérêt général en leur donnant accès au mécénat de sociétés de services informatiques.

L’important, à mes yeux et à ceux des SSII que je mobilise comme mécènes de ces associations, est que le projet soutenu ait un véritable impact social: qu’il change la vie de personnes en difficulté, qu’il rende efficacement le monde meilleur, bref que ce ne soit pas qu’un projet cool du point de vue technologique mais aussi du point de vue social, environnemental ou culturel. La loi actuelle sur le mécénat favorise déjà cela avec le mécanisme fiscal décrit plus haut. Et de plus en plus d’associations d’intérêt général appuient toute leur stratégie de croissance sur les technologies du libre, en tant que créatrices/contributrices du libre ou en tant que simples utilisatrices.

Bref, sans attendre le plan numérique 2012, communautés du libre et sociétés de services soucieuses de leur responsabilité sociale (développement durable) peuvent déjà se lancer dans l’aventure du mécénat informatique. Pour cela, elles peuvent s’appuyer sur l’effort fiscal consenti par l’Etat à travers la loi de 2003 sur le mécénat et… sur moi !

3D scannerless scanning for fabbers

For several weeks (or more), I have been dreaming of the day I’ll get my hands on a Reprap (self-parts-printing 3D desktop printer, a DIY fabber). I have been lucky enough to have a good friend promise me he would give his free time for assembling such a printer for me as long as I pay for the parts. 3 days of work are required to assemble the parts which you can order via the web in case you don’t already have access to such a reprap, which is my case. I will try to wait for the next major release of Reprap, namely Mendel 2.0 (current version = Darwin 1.0) unless I can’t resist temptation long enough…

Anyway, I have mainly been dreaming of possible applications of fabbers. Their use is extremely competitive (and disruptively innovative) as soon as you want to print customized 3D shapes which can’t be bought from the mass-manufacturing market. For instance, a reprap is cool when you want to print a chocolate 3D version of your face (see the Fab@Home project) or a miniature plastic representation of your home or anything that has a shape which is very specific to your case (not to mention the future goal of printing 90% of complex systems such as robots, portable electronic devices including phones and… fabber-assembling robots…). And this is where 3D scanning is a must : with a 3D scanner, you can scan an existing object and build a 3D model from it which you can then modify and print at the scale you want.

So my dreams lead me to this question : I could get a fabber some time soon but how to also get a desktop 3D scanner ? Some people have already started hacking home 3D scanners. But I had also heard of techniques that allow users to build 3D models from existing objects using either a single picture of the object, 2 pictures, several images or even a small movie. Some techniques require that the parameters of the camera(s) are known (position, angles, distance, …). Some techniques require 2 cameras in a fixed and known setup (stereophotography). Some techniques require that the camera is fixed and the object lies on a turntable. I really know nothing about computer vision and the world of 3D techniques so I was happy to learn new words such as « close-range photogrammetry« , « videogrammetry« , « structure from motion« , « matchmoving« , « motion tracking » (which is the same as matchmoving) or « 3D reconstruction« . After some Web wandering, I identified several open source (of course) software packages that could offer some workable path from existing physical objects to 3D models of them using plain cameras or video cameras.

The idea would be the following :

  1. you take an existing, very personal object, for instance your head !
  2. with a common digital camera, you take pictures of your head from several angles
  3. you load these pictures into your favorite 3D reconstruction free software package
  4. it creates a 3D model of your head which you can then export to a 3D editor for possible adjustments (think Blender)
  5. you export your corrected 3D model into the reprap software stuff
  6. your reprap fabs your head out of plastic (or chocolate ?)

Here are the software projects I identified :

  • From a single image :
    • jSVR, Single View Reconstruction, a semi-automatic process for identifying and exporting three-dimensional information from a single un-calibrated image, dead project ?
  • Using a turntable :
  • From stereo images :
  • From a movie or a sequence of pictures :
    • e-Foto, a free GNU/GPL educational digital photogrammetric workstation, but is it suitable for close-range photogrammetry ?
    • Voodoo Camera Tracker, a tool for the integration of virtual and real scenes, estimates camera parameters and reconstructs a 3D scene from image sequences ; oops, this is not free software but freeware only
    • Octave vision, Algorithms for the recovery of structure and motion, using Octave, a one-shot development, no future…
    • Tracking / Structure from Motion, another piece of student homework
    • libmv, a structure from motion library, which plans to one day take raw video footage or photographs, and produce full camera calibration information and dense 3D models, very promising but being rewritten at the moment (August 2008)
    • GPU KLT a high-performance research implementation
  • Using the shadow of a stick (!) :
    • Scanning with Shadows (see also this site), wave a stick in front of a light source to cast a shadow on the object of interest, and figure out its 3D shape by observing the distortion of the shadow
  • Don’t know which technique is used :
    • OpenCV (see also this site), Intel’s Open Computer Vision library may some day contain some 3D reconstruction capabilities
    • Voxelization, a .NET based framework, designed for helping in development of different volume reconstruction, 3D voxel visualization and color consistency algorithms in multi view dynamic scenes, dead project ?

My personal conclusion :

I haven’t tested any of these packages. At the moment, there seems to be no easy-to-use free software package that would compare to commercial stuff such as Photomodeler or ImageModeler or research works such as Microsoft Photosynth. However these techniques and algorithms seem to be mature enough to become present as open source package soon, especially given the emerging interest in 3D scanning for fabbers ! Most promising free packages for scannerless 3D scanning for fabbers are probably Stereo and libmv.

What do you think ?

Alitheia core de SQO-OSS pour mesurer la qualité du code

Un projet de recherche financé par la commission européenne (SQO-OSS) distribue, sous licence open source bien entendu, un logiciel qui analyse la qualité du code source d’un logiciel. Ce logiciel s’appelle Alitheia.

Alitheia parcourt des dépôts de code du style subversion/CVS (et notamment ceux de sourceforge). Des plugins fournissent des mesures du code (nombre de lignes de code, nombre de lignes de commentaires, etc.). Des modules d’Alitheia effectuent des statistiques à partir de ces mesures afin d’estimer la qualité globale du produit analysé. Alitheia se présente soit sous forme d’une application Web, soit, bientôt, sous forme d’un plugin pour Eclipse.

L’intérêt pratique d’Alitheia me semble actuellement limité: il y a peu de mesures disponibles dans la version de démo en ligne, la version pour Eclipse n’est pas encore disponible, les mesures sont effectuées au niveau de chaque fichier source et ne semblent pas encore agrégées au niveau du projet en lui-même (on peut savoir combien de lignes de commentaires il y a dans tel fichier mais pas dans le projet complet). Actuellement, la fonction la plus amusante semble être la mesure de la « productivité » de chaque développeur.

A terme, ce logiciel me semble très prometteur. Son intérêt dépendra essentiellement de la richesse des plugins de mesure disponibles, de l’existence d’un site public permettant de comparer entre eux les projets phare de sourceforge et tigris par exemple, et de la capacité d’Alitheia à produire des indicateurs agrégés significatifs. En ce qui concerne les plugins de mesure, j’espère qu’on va non seulement avoir des plugins mesurant des caractéristiques du code mais aussi (voire même surtout), des plugins mesurant la qualité de la communauté du projet: fréquence et délai des réponses sur les mailing lists, fréquentation du canal IRC de support, nombre et qualité des plugins et modules additionnels, durée de vie d’une version, etc. A suivre !

(via Le Monde Informatique)

Appel à projets informatiques d’intérêt général

Vous connaissez un projet informatique qui pourrait contribuer à rendre le monde meilleur ? A sauver la planète ? A créer une innovation Internet d’utilité publique ? Ou juste à faciliter la vie de votre association ? A faire avancer une grande cause ou une toute petite ? A faire avancer la science ? Alors répondez à cet appel car je pense pouvoir booster ce projet en recrutant pour lui des mécènes informatiques.

En effet, dans le cadre de ma nouvelle entreprise, je propose mes services professionnels à tout projet informatique d’intérêt général: je fournis (à coût zéro, cf plus bas) mes compétences en tant que directeur de projets informatiques innovants ainsi que l’accès aux compétences de très nombreux autres ingénieurs informaticiens, sur leur temps de travail. Vous voulez des compétences d’ingénieurs informaticiens pour rendre le monde meilleur ? En voila !

Notez que je ne place, a priori, aucune limitation de thème ou de domaine : lutte contre la pauvreté, recherche scientifique, défense de l’environnement, santé, handicap, protection de l’enfance, etc. peu importe du moment que ce projet va vraiment dans le sens de l’intérêt général et de l’utilité publique (cf. ci-dessous).

Les conditions à remplir

Pour que mon entreprise puisse intervenir, votre projet informatique doit absolument :

  • être « d’intérêt général », c’est-à-dire être porté par un organisme ayant le droit, en France, d’émettre des reçus fiscaux en échange des dons reçus (mécénat)
  • ne pas être un tout petit projet: il doit nécessiter, de la part des mécènes, au moins 1 ingénieur à temps plein
  • être porté par une équipe déjà active : je peux fournir entre 2 fois et 5 fois le temps que vous passez déjà sur le projet, en tant que bénévoles ou salariés ; si vous ne travaillez pas déjà sur le projet, je ne peux rien faire (0 fois 2 égal 0 !)
  • être un projet qui en vaut vraiment la peine: avoir un véritable impact social, direct ou indirect, une utilité clairement mesurable et motivante, répondre à un défi de société à petite ou à grande échelle, être source, levier ou moteur de changement pour la société…
  • ne pas nécessiter de présence physique importante en dehors de la région parisienne (je démarre petit et près de chez moi, même si je suis un adepte du travail à distance et des « conf call »), bref être plutôt localisé près de Paris

Qu’est-ce qu’un projet informatique d’intérêt général ?

Un projet informatique est d’intérêt général si il est porté par un organisme bénéficiant du régime fiscal français du mécénat. Ah, ah… mystère, qu’est-ce que c’est que ce truc ? La loi française d’août 2003 sur le mécénat reste mal connue mais elle représente une source de revenus importante pour les organismes d’intérêt général. Plusieurs types d’organismes répondent à ce critère. Pour faire simple, il peut s’agir d’une association loi 1901 :

  • à but non lucratif : elle ne reverse pas de TVA, ne paye pas d’impôts sur les sociétés, a des administrateurs et un bureau bénévoles et désintéressés, ne vient pas concurrencer des entreprises commerciales ou alors elle le fait à des prix beaucoup plus bas que le marché et principalement pour un public défavorisé et sans « pratiques commerciales » (publicité, …) ; demandez l’avis d’un comptable si besoin
  • et dont l’objet est à caractère philanthropique, éducatif, social, humanitaire, sportif, familial, culturel, artistique, environnemental, culturel, littéraire, scientifique…
  • et dont les activités ne bénéficient pas à un cercle restreint de personnes (contrairement aux syndicats ou aux associations d’anciens élèves d’une école par exemple …)

Au besoin, une association loi 1901 peut être facilement créée pour porter ce projet (statuts et déclaration en préfecture) et réunir les conditions de l’intérêt général. Il n’y a pas de condition d’ancienneté ni de taille de l’association. Il n’y a pas non plus forcément besoin d’obtenir un agrément administratif (comme ce serait le cas pour les associations « reconnues d’utilité publique », ce qui est une reconnaissance très difficile à obtenir de nos jours).

Pour en savoir plus sur la notion d’intérêt général, je vous invite à consulter le site mécénat du ministère de la culture ainsi que les explications de l’Association pour le Développement du Mécénat Industriel et Commercial (ADMICAL).

Comment je peux aider, en pratique ?

Si vous consacrez déjà du temps à votre projet, je peux donc démultiplier cet effort.

Exemple: avec 4 autres bénévoles, vous consacrez au moins, chacun, une journée par semaine à votre projet (soit un équivalent temps plein, 5 jours de travail par semaine), alors je peux vous fournir, en complément, l’équivalent de 2 ingénieurs à temps plein (10 jours de travail par semaine), voire plus si votre projet est très simple à gérer.

Cette aide prendra la forme de:

  • un accompagnement permanent par mon entreprise : au moins une demi-journée d’assistance et de conseil par semaine, en fonction du volume de votre projet ; plus un service de représentation et de suivi de votre projet auprès des entreprises mécènes,
  • des interventions individuelles d’un grand nombre (50, 100, 200…?) de professionnels de l’informatique, ingénieurs, techniciens ou consultants, pour des durées variables et parfois courtes (par exemple une semaine), sur leur temps de travail,
  • la possibilité de renforcer votre équipe bénévole par les contributions ultérieures de certains de ces intervenants sur leur temps libre (constitution éventuelle d’une communauté à la mode open source si votre projet s’y prête)
  • l’accès à un système d’information sécurisé sur le Web pour gérer votre projet, vos intervenants, vos relations avec les mécènes et automatiser la gestion de toute la paperasse administrative qui va avec (contrats, convention de mécénat, reçus fiscaux, …)

Comment ça marche ?

Je créé actuellement une entreprise à vocation sociale dont l’objectif est de fournir aux innovateurs sociaux les mêmes moyens informatiques que ceux dont disposent les entreprises les plus modernes. Mon activité s’appuie sur le mécénat de sociétés de services en informatique (SSII) qui s’engagent dans des démarches de « développement durable » (ou, plus exactement, de « responsabilité sociale de l’entreprise »). Elles souhaitent faire du mécénat de compétences en informatique par mon intermédiaire : faire don du temps de travail de leurs ingénieurs et consultants sous la forme d’une prestation de service gratuite gérée via le Web. J’appelle ça « faire du wecena » (Wecena, c’est le nom de ma boîte !).

Le financement de cette aide est indirectement assuré à 100% par l’Etat français, grâce à la loi sur le mécénat des entreprises. En effet, l’Etat accorde une réduction d’impôts importante à toute entreprise qui décide d’aider concrètement un organisme d’intérêt général (don d’argent, don en nature, don de compétences et temps de travail…). Les SSII mécènes que je rencontre sont prêtes à se lancer dans l’aventure en proposant à leurs ingénieurs de faire avancer votre projet pendant ces périodes de temps que l’on appelle l' »inter-contrat » (ou intercontrat ou « période de stand-by » ou …) : il s’agit de ces périodes de quelques jours à quelques mois qui commencent lorsque l’ingénieur termine un projet pour un client et n’est pas encore affecté à un autre projet pour un nouveau client.

Cela impose une contrainte importante dans la gestion de votre projet: les ingénieurs réalisant la prestation de service vont se relayer à un rythme très rapide, certains ne seront présents que 48H tandis que d’autres seront disponibles 2 ou 3 mois dans l’année. La durée moyenne d’intervention individuelle se situe quelque part entre une semaine et un mois (selon le métier de l’intervenant et l’état du marché de l’informatique, et aussi selon la politique du mécène). C’est le rôle de mon entreprise que de vous aider à gérer cette contrainte. Notez que cette contrainte a également quelques avantages : si votre projet est suffisament simple et « découpable » en petites tâches (à l’aide de méthodes et d’outils de gestion adaptées, que je vous fournis), vous aurez ainsi l’occasion de proposer votre cause à une multitude d’intervenants que vous pourrez recruter en autant de bénévoles potentiels une fois leur mission de wecena terminée. C’est par exemple le cas de projets portant sur de l’initiation à l’informatique, de l’animation d’atelier informatique auprès de personnes défavorisées, d’interventions multiples d’installation de PC ou de réseau local… Pour des projets plus complexes (développement, conseil, …), votre implication est plus importante et le wecena ne peut pas représenter plus de 2 fois le temps que vous y consacrez déjà.

Quelques exemples de projet

Pour vous aider à vous faire une idée du type de projet qui peuvent bénéficier du wecena, voici quelques exemples de projets que j’ai déjà présenté à des mécènes :

  • conception et réalisation d’un logiciel innovant pour faciliter l’utilisation du clavier et de la souris par des personnes ayant un handicap moteur
  • amélioration de l’infrastructure informatique d’une ONG travaillant dans la lutte contre l’exclusion: remplacement d’un parc de postes de travail, interventions d’administration système sur des serveurs de fichiers et d’application, …
  • déploiement d’un progiciel de reporting financier sur des prestations de services en mode projet pour une association recevant d’importantes subventions publiques
  • refonte d’applicatifs Web pour la gestion documentaire, la gestion des relations et contacts et la gestion des adhésions pour une association Internet dans le domaine de la famille et de la protection de l’enfance
  • création d’un blog par un écrivain public d’une ONG franco-africaine pour sensibiliser des étudiants français au problématiques du développement Nord-Sud
  • assistance à la webisation d’un système de gestion d’établissements de santé pour une association du secteur sanitaire et social
  • initiations informatiques et formation aux logiciels internes pour des bénévoles retraités d’une association humanitaire

Ce ne sont que quelques exemples pour vous donner le ton. Aucun de ces projets n’a encore démarré.

Avertissement

Mon entreprise en est encore à une phase de démarrage et d’expérimentation. Je ne peux actuellement vous garantir ni que votre projet en particulier sera sélectionné par un mécène (les projets les plus solides et les plus ambitieux auront plus de chances bien entendu) ni même de pouvoir démarrer mon accompagnement tout de suite. En effet, l’aide que je peux vous apporter est en soi un projet (créer une entreprise…) : j’y crois énormément puisque j’ai quitté mon employeur précédent pour me lancer dans cette aventure, et j’y consacre tout mon temps et mes compétences. Mais, ceci dit, démarrer ce genre d’entreprise sociale innovante prend du temps et représente aussi une part de risque, d’incertitude, bref d’aventure… Le premier projet que j’accompagnerai pourrait démarrer fin 2008 (si les étoiles s’alignent comme prévu) ou au plus tard début 2009 (si j’ai moins de chance). Les mécènes que je rencontre sont déjà sur le pied de guerre et ont déjà commencé à examiner les projets informatiques que je leur présente. Certains ont déjà exprimé leur préférence et se mettent en ordre de bataille… En croisant les doigts, j’espère qu’un premier projet pourrait démarrer peu après la rentrée scolaire 2008.

Pour participer à l’aventure…

Vous connaissez une équipe qui porte un projet informatique d’intérêt général et a besoin de temps d’informaticiens pour aller plus loin et plus vite ? Faites-lui suivre l’adresse de cet article !

Votre projet répond aux conditions présentées ci-dessus ?  Pour vous en assurer, posez la question via un commentaire ci-dessous ou contactez-moi directement par email à l’adresse suivante: projets (chez) wecena (point) com ou bien encore à mon adresse de blogueur: sig (chez) akasig (point) org. Le site Web de mon entreprise ne devrait pas ouvrir ses portes avant le démarrage du premier projet. En attendant, c’est ici que ça se passe. Vous avez des conseils à me donner, des avis ou des contacts à partager ou des suggestions à faire ? Ils seront bienvenus: je vous invite également à utiliser la fonction commentaires de ce blog.