Archives pour la catégorie Open source

Plone + Freemind = eternal love ?

Congratulations to Plone and Freemind, two great open source software packages, which have celebrated weddings recently and have promptly released a new born « Plone Freemind v.1.0 » extension product for Plone. I have been really fond of Plone and Freemind for several years now. It’s good news to learn that Freemind mindmaps can now be published and managed via a Plone site… even though I yet have to imagine some valuable use for this ! :)

Parler malgré un handicap: l’exemple de Steria

Steria fait partie de ces SSII pionnières du mécénat. Via sa fondation, elle soutient des projets informatiques d’intérêt général sous la forme d’un soutien financier et aussi grâce à un « parrainage » bénévole d’un employé, encouragé par sa boîte. Un exemple de projet soutenu : un logiciel (open source bien sûr! mais dont je n’ai pas trouvé le site…) qui permet à des enfants handicapés moteurs de s’exprimer via une synthèse vocale et des pictogrammes.

Personnalisation via Slashdot

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

Mon nouveau projet

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

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

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

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

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

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

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

Appel à l’agilité

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

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

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

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

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

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

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

How to install dozens of linux boxes with FAI?

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

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

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

Requirements and architecture

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

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

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

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

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

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

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

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

A bit of FAI magic

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

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

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

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

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

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

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

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

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

More things to do

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

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

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

Déployer 40 PCs dans les banlieues

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

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

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

Mon pote JM me dit:

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

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

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

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

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

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

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

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

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

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

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

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

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

DRM: effaceur sélectif de souvenirs

Plutôt que de faire de la recherche appliquée en intelligence artificielle, je me demande si je ne vais pas me tourner vers l’écriture de nouvelles de science-fiction… Blague à part, voici une idée de départ pour écrire une nouvelle de S-F: imaginez un avenir dans lequel la DRM domine. Dans cet avenir, une société a commercialisé la technologie DRM ultime: l’effaceur sélectif de souvenirs (version mobile, bien sûr). L’effaceur est tout petit: il loge dans le casque de votre baladeur MP3 préféré. Régulièrement, il scanne votre cerveau à la recherche de vos souvenirs. Vous venez d’écouter un tube à la mode? L’effaceur repère la trace qu’il a laissé dans votre cerveau et, puisque vous avez déjà écouté trois fois ce tube, il en efface le souvenir.

Quel plaisir, peu après, de redécouvrir ce tube chez votre marchand de chansons iTubes Musiques Shop! Vous ne l’aviez jamais entendu, vous semble-t-il, et vous vous empressez de l’acheter pour le savourer.

Dans cette société idéale, les profits des « ayant droits » sont maximisés, le commerce électronique bat son plein et les consommateurs sont satisfaits. Les Droits d’Auteur et Droits Voisins dans la Société de l’Information (DADVSI) sont respectés. Bien sûr, les fabricants de baladeurs qui n’y avaient pas inclus l’effaceur de souvenirs ont été poursuivis et mis en prison pour incitation au piratage.

Seul bémol: il n’y a plus qu’un seul tube en magasin.

Prior art search for patents

Here is a « random patent generator« . The basic idea is to randomly generate ideas of inventions in the hope that they would constitute prior art capable of invalidating some of the stupid patents that get granted by patent offices. It is even inspiring some novel business models. Of course, it’s meant to be a joke and a surrealist poetry exercise.
But beyond the joke, random sentence generators that can be fed with corpus of documents raise questions about the nature of prior art in patenting issues, as the author of the random patent generator says. How far are we from leaving the domains of jokes and entering the domain of possible threats to the legal patent system?

Inventions évidentes made in USA

C’est peut-être aux USA que se prépare l’avenir du droit de la propriété intellectuelle pour l’Europe. C’est en tout cas ce que me fait croire l’adoption par la France de la loi DADVSI: j’ai tendance à y voir l’efficacité des lobbies des multinationales de haute technologie, principalement américaines, qui cherchent à freiner l’innovation de leurs concurrents pour prolonger la durée de vie de leurs propres vaches à lait technologiques (c’est en partie à ça que servent les brevets: ils ressemblent alors à des mines anti-innovation créées par des inventeurs). Notez que j’essaie de ne pas non plus cracher dans la soupe: je bosse pour l’une de ces boîtes et je suis notamment payé pour créer des brevets…

Ceci dit, il se passe actuellement Outre-Atlantique un truc intéressant: la plus haute juridiction des USA (la cour suprême) est poussée à définir ce que c’est qu’une invention « évidente ». En effet, pour qu’une invention puisse faire l’objet d’un brevet, il faut qu’elle apporte une véritable nouveauté et qu’il ne s’agisse pas d’une exploitation « évidente » d’une technique déjà connue. Or, aujourd’hui, les magistrats américains n’ont pas de référence claire dans leur droit pour faire la différence entre une idée « évidente » (et qui ne mérite donc pas d’en réserver le monopole d’exploitation à son inventeur par un brevet) et une idée qui ne l’est pas. Morale de l’histoire, les offices de brevets croulent sous des demandes de brevets concernant des inventions qui n’en sont pas et, faute de savoir leur dire non, leur octroient pourtant des brevets. Conséquence: des sociétés fantômes (les méchants « trolls ») sont créées par des faux inventeurs qui obtiennent ainsi des brevets pour des « inventions évidentes » et menacent ensuite d’autres inventeurs de leur faire de coûteux procès si ils ne leur versent pas de l’argent. Une forme de racket à grande échelle sous couvert de protection des idées par les brevets, qui commence à faire grincer pas mal de dents, y compris des grosses multinationales qui en ont un peu marre d’avoir à se défendre contre ces hordes de trulls hurlants. C’est peut-être ce qui suffira à convaincre la Supreme Court de préciser les critères qui permettent de déterminer ce qui distingue une invention évidente d’une invention méritant brevet.

Mais derrière cette bagarre se profile aussi un phénomène intéressant concernant les innovateurs open source. En effet, ceux-ci sont au premier rang des victimes des trolls: comment un innovateur open source qui contribue à titre individuel à un projet libre peut-il se défendre contre un troll armé d’une massue d’avocat et qui le menace de procès interminables et coûteux? C’est pourquoi l’ Electronic Frontier Foundation monte actuellement au créneau et appelle la Cour Suprême à empêcher le massacre. L’argumentation employée me semble pleine de promesses pour l’avenir du droit de la propriété intellectuelle en Europe: l’EFF rappelle que les logiciels libres constituent un bien commun informationnel qui doit être protégé par les Etats au nom de l’intérêt public. La notion de bien commun informationnel est très bien développée et défendue par des intellectuels français tels que Philippe Aigrain. Espérons que toutes ces bonnes idées seront entendus par les magistrats américains et que, par contamination, le droit Européen et Français suivront.

WikiCalc: Web 2.0 spreadsheets wikified

WikiCalc is a nice piece of GPLed software that pusblishes wiki pages that are structured like Excel spreadsheets are: one can view and edit tables, modify calculation formulas in cells, manage their formatting through the web browser, etc. It brings to spreadsheets the inherent advantages of many wikis: ease of use for Web publications, ease of modification, revisions track for undoing unwanted changes by other users, RSS views on recent changes made to the page. It brings to wikis the inherent advantages of spreadsheets: live calculations, nice formatting, compliance with corporate way of thinking and managing things (will we see a WikiSlides with bulletpoints and animations in some future?). More than this, WikiCalc lets spreadsheets grab input data from external web sites and do live calculations from it: some formulas generate HTTP requests to web services in order to retrieve the latest value for a stock quote, weather forecasts, and so on. Last but not least, the flexible architecture of WikiCalc allows an offline use still via the user’s browser and a synchronization mechanism will let the online version get updated once the connection is restored.

A nice 10 min long WikiCalc screencast with audio is available here.

In a former life, I was managing a team of web project managers in a multinational industrial corporation. As my boss wanted to get simple-to-update weekly/monthly status report about every project, we had tried using a wiki page per project in order to publish and update those reports. It was tedious and not nicely formatted for a corporate environment. I imagine that a nice immediate use of WikiCalc would be to let small project teams update project status reports on an intranet, including nicely formatted timelines and budget indicators. It would still maintain the update effort at a minimal and convenient level and would preserve the wiki flexibility of linking to the project documentation and resources.

We knew structured wiki pages for managing forms or category schemes. WikiCalc introduces spreadsheet structures while preserving the open and unstructured spirit of wikis. Next steps for future wikis would be to allow semantic structures to be managed the wiki-way, like in some early semantic wiki prototypes. [update: see Danny Ayers blog entries on how WikiCalc could relate to the Semantic Web vision]

Le modèle open source

Voici quelques articles de référence pour qui veut comprendre comment les principes de fonctionnement des communautés open source.

Internet Actu fait le point sur le « crowd-sourcing »

Moi, j’avais tendance à appeler ça l’open sourcing: le fait de déléguer des tâches à une communauté ouverte de contributeurs, dans l’esprit de la wikipedia ou du cliquage de cratères pour la NASA. Le terme plus général qui s’impose semble maintenant être le « crowd-sourcing », notamment pour englober les cas où le résultat fourni par la communauté n’est pas partagé ouvertement mais réservé à l’initiateur/propriétaire du projet. Ainsi, le « crowd-sourcing fermé » (non libre) a-t-il besoin du micropaiement comme source de motivation. Le concept me paraît particulièrement prometteur si l’on adhère à la vision de l’intelligence collective. Mais le modèle libre (open sourcing) me semble supérieur et plus durable que celui qui s’appuie sur le micro-paiement.

Apprendre à taper au clavier avec ses dix doigts

Vous avez une vocation de dactylo? Des enfants qui découvrent l’informatique? Vous bavez d’envie devant vos potes qui tapent à la vitesse de la lumière sur les systèmes de messagerie instantanée (MSN…)? Ou vous en avez simplement marre de passer pour un flic de deuxième zone qui tape ses PV à deux doigts? Accessoirement, vous souhaitez devenir plus performant dans votre boulot sur clavier? Alors ces deux logiciels sont faits pour vous. Ils vous offrent: des leçons pour apprendre comment taper avec quels doigts, des exercices systématiques de dactylographie et des jeux d’arcade très amusants pour améliorer vos performances. Ces logiciels sont open source (GPL) donc pas de souci de piratage. Ils fonctionnent en français aussi bien qu’en anglais, avec clavier azerty comme avec clavier qwerty (ou autre): il suffit d’aller cocher les bonnes options dans les menus de configuration. Ca tourne sous Windows comme sous linux.

  • TypeFaster, c’est du sérieux et de la performance, les exercices sont personnalisés (le logiciel vous propose de vous entraîner sur les touches que vous avez le plus de mal à bien taper d’après ses observations lors des exercices précédents); il permet notamment de bien s’entraîner également sur les accents et caractères de ponctuation. Il propose même un fonctionnement adapté pour les mal-voyants.
  • TuxType est beaucoup plus amusant et vous propose de vous améliorer en permettant à Tux, le pingouin mascotte de linux, de manger des poissons qui tombent du ciel et de sauver la planète menacée par des pluies de météorites. Avantage: c’est beaucoup plus motivant de taper vite (si on aime les poissons et si on n’aime pas les météorites). Inconvénients: on ne peut pas modifier les listes de mots qui défilent et ceux-ci ne contiennent que des lettres en majuscules ce qui ne suffit pas pour apprendre à taper des mots de tous les jours (il faut savoir jouer de la touche majuscule, des accents et des signes de ponctuation…).

Conclusion: les deux sont assez complémentaires: TypeFaster pour l’apprentissage et l’entraînement sérieux, TuxType pour le jeu et la motivation à devenir toujours plus performants dans sa force de frappe!

Tapez bien!

Fabriquer le futur

La semaine dernière, j’ai entraperçu le futur en train de se fabriquer dans un restau chinois de Massy. En effet, j’ai eu le plaisir de déjeuner avec Eric Seulliet, l’auteur du livre « Fabriquer le Futur ». Nous avons parlé ensemble innovation ascendante, innovation open source, do-it-yourself innovation ou mouvement Pro/Am (pour Professionals/Amateurs), selon le terme que l’on emploie, pour des concepts qui se recouvrent plus ou moins bien. Réflexions en vrac, suite à ce déjeuner:

De la place de la créativité dans l’innovation privée:

En fait, quelques jours après qu’Eric Seulliet a pris contact avec moi, j’ai reçu un mail du service documentaire de notre centre de recherche qui m’informait que son bouquin venait d’arriver chez nous, à la demande d’un collègue. Je vais voir le collègue: « un peu trop loin de mon quotidien pour moi, je cherchais plutôt un bouquin sur ‘comment rendre mes équipes plus créatives' », me dit-il en me le passant. C’est vrai que le premier chapitre est très académique: la place de l’imaginaire dans l’innovation. Dans le service R&D où je travaille, dans une grosse boîte high-tech privée, la place de l’imaginaire est curieuse: elle est à la fois inexistante officiellement (on n’y fait jamais référence, ça ne fait ni sérieux, ni gérable) et omniprésente (références permanentes à l’idée que l’on se fait de la concurrence, aux success stories de l’Internet et aux images du futur que l’on se renvoie de labo en labo à travers nos projets). L’imaginaire est implicite ici-bas. On osera parle plutôt parler de créativité (en termes de… combien de propositions de brevets as-tu produites cette année?) sans référence explicite à ce qui la sous-tend: imaginaire, croyances…

Pour revenir au bouquin, j’ai bien aimé un témoignage du troisième chapitre, sur lequel a plus particulièrement travaillé Eric Seulliet. Il s’agit de l’interview d’un consultant qui explique que la difficulté pour les entreprises innovantes n’est pas de manager la technologie nouvelle mais de manager la personnalité de ses créatifs. J’ai bien rigolé en lisant ça, en pensant à des réflexions de certains anciens collègues: « tu es parfois ingérable… », « un peu difficile à contrôler… ». Amusant quand on entend tant d’entreprises clamer qu’elles cherchent des « intrapreneurs » capable de prendre des initiatives. Là aussi, il y a un imaginaire (« les entreprises modernes aiment les créatifs ») et une réalité qui n’est pas forcément en phase (« zut alors, comment bien gérer des preneurs d’initiative? »). Il n’y a qu’à voir les processus de recrutement d’informaticiens: on recrute des clones pour profiter d’armées de clones à faire du SAP et du J2EE, pas des créateurs de technologie et encore moins des créateurs d’innovation. Dur, dur, de ne pas se retrouver dans un « métier à la con » comme me le fait remarquer un contributeur à ce blog.

De l’innovation open source et du développement durable

En déjeunant ensemble, j’ai pu observé un phénomène étrange: les gens qui aiment l’innovation ascendante aiment généralement le développement durable et peut-être vice-versa. C’est une généralité un peu bête mais, en première approximation, qui m’a l’air assez vraie. L’une des raisons pour lesquelles Eric Seulliet m’a rencontré, c’est que je prétends parfois m’intéresser au « développement durable », à l' »associatif », à l' »économie sociale »… « tu devrais faire dans l’humanitaire » me dit-on parfois pour me taquiner. Le directeur telecoms de la multinationale industrielle dans laquelle je bossais jusqu’à l’an dernier ne m’avait-il pas dit lui-même « linux, c’est bon pour les lanceurs de pavé des sommets altermondialistes ». Il est parti à la retraite, depuis… Et l’open source envahit l’entreprise.

Plus sérieusement, pourquoi y a-t-il une corrélation entre open source et altruisme? Innovation ascendante et développement durable, c’est le rendez-vous des rêveurs et des utopistes? Ou bien c’est quelque chose qui peut s’ancrer dans la réalité et nourrir des entreprises et des emplois? Pour faire plus sérieux, plus économique et efficace, ne devrait-on pas au moins essayer de gérer prudemment cette corrélation ou moins de rester humble et d’éviter d’en parler trop? Pas mal d’acteurs économiques de l’open source (sociétés de services autour des logiciels libres) prennent leur distance vis-à-vis des idéologies libertaires ou au moins altruistes que semblent véhiculer les communautés open source. Moi-même, j’ai du mal avec le côté nanar (anarchiste) même si je suis très attaché aux valeurs de partage et de don… Alors quoi? un modèle économique peut-il être en soi porteur de valeurs morales? L’éthique et l’économique ça va ensemble? J’aimerais bien répondre oui. Tant qu’on en est au discours et à la théorie, pas de problème. Mais quand on en arrive à se poser la question « comment faire du développement durable à grande échelle (avec du profit et des moyens financiers) avec de l’innovation ascendante? » il est plus dur de trouver des réponses concrètes. Et quand on rêve à convaincre une multinationale de la possibilité de faire du business avec de l’open source et dans une optique d’entreprenariat social ou de développement durable, on retombe facilement dans l’utopie ou la quête chevaleresque…

De l’odeur et du goût du futur

Dans une grosse boîte privée innovante, pour obtenir des budgets de recherche, l’odeur et le goût d’un projet ont leur importance. En effet, pour obtenir un financement spécial, il faut convaincre que le projet présenté a l’odeur de l’argent et le moins possible le goût du risque. Pas assez profitable ou un tout petit trop risqué et ce n’est pas un projet qui sera retenu. Etant donné qu’on ne peut parfois pas faire grand chose aux aspects risques, il faut souvent que « ça pue le fric ». D’où l’intérêt des machines à retransmettre les odeurs à travers l’Internet (cf. France Telecom par exemple): vous branchez le bidule sur votre PC, vous affichez le descriptif d’un bon projet de R&D et, hop, vous sentez une bonne odeur de blé et d’oseille envahir votre bureau… OK. Le problème, c’est que tout ce qui sent le fric n’est pas profitable. Et l’imaginaire des nez des grandes entreprises est empreint de subjectivité: dur d’anticiper le profit. Morale de l’histoire: on ne peut financer que ce qui pue tellement le fric qu’on ne peut plus se boucher les narines. Je caricature pour le plaisir, certes. Mais tout de même, quelle place pour le développement durable dans tout ça? Le credo du développement durable, c’est de dire que le profit sera triple: pas seulement économique mais également environnemental et social. Alors pour favoriser le financement privé de projet teintés D.D., il faudra sans doute d’abord éduquer le nez et l’imaginaire des entreprises. C’est quoi un projet qui pue le triple profit du DD? Vous sauriez anticiper la profitabilité de tels projets? Pas facile…
Quant au financement de l’innovation open source/innovation ascendante, là il me manque encore des clefs et il faut que je finisse de lire le bouquin de Philippe Aigrain, Cause Commune, pour espérer imaginer de bonnes réponses.

Trophées Le Monde Informatique: victoire pour l’open source

Les magazines Le Monde Informatique et CIO viennent de remettre leurs trophées 2006 aux meilleurs projets informatiques. Sur les 9 prix remis:

  • 2 reposent sur des progiciels vendus par des éditeurs classiques: une CRM sur Siebel et Microsoft (Grand Prix, pour la SNCF) et un EDI sur technologie Soget/Bull (Trophée Distribution, Logistique & Transports, pour une communauté portuaire de Guadeloupe)
  • 3 reposent sur des solution spécifiques non open source: un dossier médical partagé réalisé avec SQLI (Prix Spécial Initiative Locale, pour l’ARH Franche Comté), une traçabilité de palette avec technologie RFID (Trophée PME, pour Bénédicta), une carte de contrôle d’accès électronique avec technologies PKI et service de SSO (Trophée Industries et Services, pour le groupe Areva)
  • 4 reposent sur des plates-formes très teintées open source: information aux automobilistes sur technologie LAMP et Flash (Trophée Administrations & Collectivités locales, pour Nantes Métropole), intranet collaboratif sur technologie LAMP (Trophée Associations & Humanitaire, pour l’Association des Paralysés de France), apprentissage chirurgical avec simulation 3D sur technologie LAMP (Trophée Santé, pour l’IRCAD) et portails documentaires sur technologie Zope (Trophée Services Publics, pour le CEA).

Ma lecture très personnelle de ces résultats est la suivante. Les technologies open source sont les technologies les plus célébrées dans le domaine des portails, de la collaboration et de la gestion de contenu Web. Et ceux qui ont le plus de succès dans le domaine sont… les secteurs public et parapublic. Les progiciels vendus par des éditeurs sont les solutions les plus appréciées pour des projets « usine à gaz » (CRM, EDI, …) de grosses entreprises tandis que les architectures sur-mesure sans odeur technologique particulière se disputent le reste du gâteau (sécurité, traçabilité, …).

Et qu’on ne vienne pas me redire que J2EE façon IBM ou BEA, c’est la voie royale de l’intranet !

Sur ce, je vais aller déjeuner avec mes anciens collègues. Ils viennent de me raconter que l’open source a continué à percer depuis mon départ de chez mon ancien employeur (industriel du CAC40) au point que ce sujet est officiellement abordé comme sujet de travail lors des comités informatiques groupe. Ca y est, LAMP s’est taillé une place de choix dans la presse informatique et la mentalité des DSI du CAC40!

Bookcrossing : le monde est une bibliothèque

Si vous trouvez un livre dans un lieu public, ne concluez pas trop vite qu’il y a été abandonné. Il se pourrait bien qu’il y ait été libéré (released) par un bookcrosseur généreux. Pour le savoir, vérifiez si, sur la couverture ou dans les premières pages, il ne dispose pas d’un identifiant BCID. Si c’est le cas, alors vous êtes invité à le lire (ou le laisser sur place si il ne vous intéresse pas, bien sûr), à le libérer ailleurs et à laisser un message sur le site du bookcrossing. Avec le bookcrossing, le monde devient une bibliothèque ouverte à tous. Vous êtes vous jamais imaginé la vie d’une goutte d’eau ou d’une pièce de monnaie ? Avec un peu de chance, la vie de vos livres préférés vous sera racontée étape par étape grâce à la traçabilité des BCID. Une nouvelle manière de créer des liens entre lecteurs et de développer des communautés ouvertes de bibliophiles. Et une nouvelle manière d’appliquer la maxime open source : « Release soon, release often ».

Comparator

Comparator is a small Plone product I recently hacked for my pleasure. It’s called comparator until it gets a nicer name, if ever. I distribute it here under the GNU General Public License. It allows users to select any existing content type (object class) and to calculate a personnalized comparison of the instances of this class. For example, if you choose to compare « News Items », then you select the news items properties you want to base your comparison upon (title, creation date, description, …). You give marks to any value of these properties (somewhat a tedious process at the moment but much room for improvement in the future, there). Comparator then let’s you give relative weights to these properties so that the given marks are processed and the compared instances are ranked globally.

It’s a kind of basic block for building a comparison framework, for building Plone applications that compare stuff (any kind of stuff that exists within your portal, including semantically agregated stuff). Let’s say that your Plone portal is full of descriptions of beers (with many details about all kinds of beers). Then adding a comparator to your portal will let your users give weights to every beer property and rank all the beers according to their personal tastes.

Comparator is based on Archetypes and was built from an UML diagram with ArchgenXML. Comparator fits well in my vision of semantic agregation. I hope you can see how. Comments welcome !