Mot-clé - recherche

Fil des billets - Fil des commentaires

dimanche 18 septembre 2011

Pourquoi je crée mon entreprise

Oui, pourquoi au juste ?

Je m'intéresse actuellement aux Ƀitcoins; je souhaite étudier leurs usages et implications en France. Par exemple :

  • impôts et taxes : comment sont-ils classés ?
  • législation : c’est quoi, juridiquement, un Ƀitcoin ? Et un achat/vente de Ƀitcoin en France, en Europe, à l'international ?
  • utilisation quotidienne : comment on les manipule, on les échange, on les place et les emprunte…

Les questions que je me pose sont du genre : Mascotte Ƀitcoins

  • Que signifie faire un usage nominal du Ƀitcoin ?
  • Quelle est la perception du Ƀitcoin par les citoyens français ? CF les monnaies alternatives (SEL, abeille)

Je pourrais naturellement étudier ces questions du point de vue de l'individu, mais j'ai trouvé intéressant de changer mes habitudes et de regarder cela au travers du cadre professionnel. Un particulier n'est pas une association, qui elle-même n'est pas une entreprise.

Uh, Ƀitcoin ?

Le Ƀitcoin est une « monnaie » (à défaut d’un meilleur terme) décentralisée, anonyme (si utilisée correctement), sans structure de régulation.

Le statut juridique

Le gouvernement a récemment mis en place une série de lois pour faciliter l'entrepreneuriat : simplification des procédures administratives, ajustement de l'imposition par rapport à l'activité réelle, absence de cotisation sociale, etc. Ce qui était alors impossible (créer sans frais indécents une entreprise) le devient. Et du coup, cela change tout.

Le statut que j'ai retenu est celui de la micro-entreprise associé à celui d'auto-entrepreneur; avec par la suite le passage en EIRL. Ces dispositions correspondent très bien aux activités que je vais mettre en place. Ce statut me permet de ne pas payer d’impôts s’il n’y a pas de chiffre d’affaire; ce qui est le cas car Galère est une plate-forme juridique pour me permettre de tester des idées sans objectifs de gains supérieurs à 100 €.

Pirate coulé dans Astérix

Pourquoi le nom « Galère » ?

Parce qu’il permet de faire des phrases amusantes : « Le Ƀitcoin, c’est Galère ! », « L’informatique, c’est Galère ! », « La recherche, c’est Galère ! » :)

Et donc, le blog ?

En science, la démarche est aussi (si ce n'est plus) importante que le résultat, donc je vais prendre le temps de détailler les différentes démarches afin de permettre à d'autres de reprendre mon travail. Je suis adepte des données ouvertes[1] sous licence libre.

Note

[1] essayons de parler français : je ne vais pas utiliser le terme « Open Data » :)

dimanche 24 avril 2011

TraceFS, grep, et plus si affinités

Concept

L'idée est de présenter une trace modélisée sous forme d'arborescence de fichiers, via FUSE. Les accès se font par une combinaison d'utilisateur, de modèle, de trace, et d'observé. On peut alors avoir des choses comme /utilisateur/utilisateur4/modèles/modèle5/trace/trace3/observé/observé6.

L'intérêt est ensuite d'extraire les données avec des outils standards POSIX, pour consulter et éventuellement modifier les traces. Le format des fichiers peut être de différente sorte, selon l'option de montage du système de fichier (flat, json, n3, etc)

Exemple

Pour l'utilisateur « Damien », dans la trace « Exercice2 » de « WeeChat », savoir combien d'observés sont de type frappeClavier. On constate que la trace accédée directement par son nom via le sujet de la trace : le modèle est passé sous silence car ces informations suffisent à discriminer la trace dans la base de traces.

$ grep -irc "type=frappeClavier" /utilisateur/Damien/trace/Exercice2/ | wc -l
3151

[1]

L'avantage est de pouvoir directement interroger le SGBT avec des outils standards. Pour l'utilisateur, cela signifie :

  • une grande simplicité : pas besoin de concevoir de scripts python, d'apprendre des API ou de déployer du code sur le SGBT. Toutes les opérations se font avec des outils standards UNIX, voir POSIX, ce qui signifie une prise en main immédiate.
  • un important gain de temps : accéder au contenu d'un observé est immédiat, et ne nécessite que la lecture d'un fichier

Durant la phase de travail sur la conception d'un modèle de trace, ou l'instrumentation d'un outil, je vois un intérêt à ce genre d'approche.

Note

[1] les geeks auront repéré la blague dans la commande :)

jeudi 19 août 2010

Les chercheurs, la voiture et le plot : une réflexion sur l'usage de la force brute

Au LIRIS, nous n'hésitons à pas donner de notre personne pour résoudre les problèmes. Surtout quand il ne sont pas du domaine de nos spécialités. Laissez-moi vous raconter une histoire.

L'histoire

Il était une fois, un groupe de chercheurs qui sortaient de leur laboratoire afin de rentrer chez-eux.

Chemin faisant, ils se firent héler par une splendide demoiselle aux doux yeux maquillés tel le dieu Ra. La jeune fille était bien en peine car sa voiture, suite à une mauvaise manœuvre, se trouvait perchée sur un plot de béton.

Voiture coincée

Les chercheurs étaient emplis de bonne volonté et s’approchèrent afin d’examiner cette curiosité. Ils se mirent à tourner autour de la voiture, à palper des éléments, à poser des hypothèses et à estimer les différents paramètres.

Leur conclusion fut sans appel : oui, cette voiture était effectivement bloquée sur le plot en béton, et le dégagement allait être une opération délicate car son dessous commençait à être endommagé.

Voiture coincée, vue de dessous avant, protection endommagée
Voiture coincée, vue de dessous avant, protection endommagée

Une fois ce constat établit, restait aux chercheurs à proposer et à mettre en œuvre une solution. En effet, la demoiselle en détresse n'avait pas fait appel à eux pour lui apprendre ce qu'elle savait déjà (à savoir que sa voiture était coincée sur un plot de béton), mais bien pour y apporter une réponse.

Comme nos chercheurs étaient emplis de bonne volonté et se sentaient d'humeur virile, ils affirmèrent vouloir relever ce défi. Mais comment faire ? Deux courants de pensée apparurent.

Il y avait d'une part des chercheurs, emportés dans un élan idéaliste, qui songeaient à fournir des appuis supplémentaires à la voiture afin de lui permettre de se mouvoir de nouveau; et donc de se dégager par elle-même. En langage courant on appelle cette technique « mettre une rampe sous les roues ».

Et d'autre part, des chercheurs (sans doute pressés de rentrer chez eux vu l'heure déjà tardive; qui pourrait leur en vouloir ?) préféraient dégager la voiture à la main en la portant.

En personnes civilisées, les chercheurs se sont mis à débattre du pour et du contre de ces deux approches. Pendant que la demoiselle en détresse commençait à désespérer de voir son problème résolu (surtout que, apparemment, la voiture n'était pas à elle…).

Ne pouvant arbitrer, mais restant toujours bons collègues, les chercheurs établirent le compromis de réaliser les deux solutions.

Le premier petit groupe de chercheurs s'en allât emprunter sur un chantier voisins des matériaux de construction : parpaings, planches épaisses, cales… ils étaient certains d'y trouver les ressources nécessaires à leur entreprise.

Pendant ce temps, hésitant sur la conduite à tenir durant l'expédition du premier groupe, le second groupe de chercheurs rassurait la demoiselle en détresse. Se faisant, les chercheurs examinaient aussi la voiture; cherchant qui des points de levage, qui estimant l'effort à fournir pour lever et porter la voiture, etc.

Voiture libérée

Finalement, n'y tenant plus et ne voyant toujours pas revenir le premier groupe, les chercheurs du second se rassemblèrent autour de la voiture, la levèrent et la portèrent au delà du plot bétonné.

Folle de bonheur, la demoiselle remercia ses sauveurs et s'en allât rejoindre son prince charmant. Ne voyant toujours pas revenir ceux du premier le groupe, les chercheurs se dispersèrent pour rentrer chez eux.

Nul ne sut jamais ce qu'il advint des autres chercheurs partis en quête de matériaux.

Conclusion

Il ne faut pas sous-estimer la capacité de la force brute à résoudre un problème complexe ou sensible.


Discussion

Régulièrement dénigrée dans le monde de la recherche où elle peut être qualifiée d' « inélégante » et de « simpliste », la force brute n'est pas pour autant dénuée de qualités.

En effet, utilisée correctement, elle permet de répondre à un besoin avec des coûts modérés et une mise en œuvre rapide.

Par exemple, supposons que nous aillons à examiner 30000 heures de vidéo provenant de caméras de surveillance pour en relever les passages d'un personne. Les images, qui proviennent d'appareils de qualité moyenne, sont régulièrement floues ou bruitées.

Quelle est la solution la plus rentable ? Concevoir et développer un logiciel d'analyse d'image avec détection de formes et reconnaissance de visages, ou d'embaucher 100 chinois 10 heures par jour durant 30 jours ?

Dans le premier cas, il faut recruter des experts, des ingénieurs et des développeurs dans de nombreuses disciplines : génie logiciel, analyse de signal, traitement de données temporelles, etc. Cela coûte cher et l'estimation du temps nécessaire à la mise en œuvre est imprécise.

Dans le second cas, avec 100 chinois payés $5 par jour durant 30 jours, le coût sera de $15000 et le travail aisé à planifier.

Certes, on peut avancer que le développement du logiciel de reconnaissance est un investissement et permet donc de diminuer le coût unitaire à la longue. Mais en contrepartie, il est moins adaptable que les humains à qui on pourra demander de rechercher dans les images une voiture, une personne portant une valise précise, etc.

Il est également important d'évaluer le coût de maintenance : revient-il plus cher de remplacer un élément déficient (pour cause de maladie ou de casse) d'un système base sur la force brute (tel un ouvrier chinois ou encore un ordinateur basic), ou bien de remplacer un élément d'un système sophistiqué (tel un expert international ou un supercalculateur intégré) ?

Malgré tout, il ne faut pas oublier que l’apparente simplicité d'une solution à base de force brute est illusoire. Cette approche demande des investissements en coordination et en gestion des nombreux éléments : il est loin d'être évident d'interconnecter des milliers d'ordinateurs, et lorsqu'il s'agit de travailleurs humains le support devient une tâche à part entière (rotation d'équipes, restauration, commodités, etc.)

Le choix de la stratégie d'approche intervient tôt dans le cycle de résolution de problème; on constate qu'il peut avoir un impact significatif sur le reste du projet. il est donc important d'évoquer la question suffisamment tôt, par exemple durant la phase d'analyse, afin de ne pas se retrouver piéger.

lundi 12 juillet 2010

Le manager d'innovations

Accompagnant l'évolution du travail centré sur la gestion des connaissances, les rôles et compétences nécessaires dans les entreprises évoluent. Ainsi, on a vu apparaître il y a quelques années le « manager d'innovations ».

La définition du manager d'innovations et ses domaines d'interventions sont encore flous, mais un consensus se forme pour tendre vers un cadre unique :

Conception d'un modèle de traces

Que peut-on alors retenir pour définir le rôle du manager d'innovations ? Une liste de compétences, et des domaines d'interventions; l'innovation étant par nature variée il est difficile de proposer un cadre très strict :

  • participer à ou diriger la recherche;
  • participer à la conception de la stratégie marketing de l'innovation;
  • piloter le cycle entier de la recherche sur un produit;
  • réaliser la veille technologique;
  • réaliser la veille scientifique;
  • faire le lien entre l'entreprise, les programmes de recherche nationaux et européens, et les laboratoires publics;
  • évaluation des risques et enjeux liés à la R&D.

Tout ceci est en fait très lié aux besoins et objectifs de l'entreprise : un service de R&D industriel n'aura pas les mêmes besoins, en terme d'innovations, qu'une société proposant de l'accompagnement dans les projets scientifiques. Et pourtant, dans les deux cas elles feront appel à un manager d'innovations.

Une autre façon d'aborder la question est de considérer le manager d'innovations comme une redistribution des casquettes de :

Ces différents rôles dépendront bien sûr des spécialités propres à chaque personne. Mais une constante demeure dans la capacité du manager d'innovation à établir des passerelles transversales entre les différents pôles de son entreprise. Il est certes spécialisé dans ses thématiques personnelles, mais son expérience (et sa capacité d'apprentissage !) lui permet d'aller vers les secteurs qui ne lui sont pas familiers afin de servir d'interface avec le reste de son équipe.

Rôle du manager d'innovations

mercredi 28 octobre 2009

Classement des auteurs pour un article

Une fois de plus revient ce vieux serpent de mer qu'est la question de l'ordre des auteurs d'un article rédigé à plusieurs mains. On aurait pu croire le problème simple, mais manifestement ce n'est pas le cas (pour tous). Je ne peux pas résister au plaisir de faire un billet rapide sur la question (juste pour vous faire réagir :)

PhDcomics_author_list.gif Illustration tirée de Cham, Jorge : Author List, dans Piled Higher and Deeper, 13/3/2005

Quand il s'agit de déterminer l'ordre des auteurs d'un article, les gens sont capable d'une imagination débordante : simple ou double tris imbriqués selon le poste, l'âge, le domaine ou encore la météo du jour, ou bien par importance de contribution, de besoins administratifs ou encore de positionnement. Chaque fois qu'on pense avoir tout vu, on tombe sur une nouvelle fantaisie.

Au final, si c'est très distrayant à regarder, c'est surtout très casse-pied à démêler. Surtout quand on est face à un discours multiple :

  • d'un côté, il y a (quasi ?) unanimité sur l'absurdité de la bibliométrie telle qu'elle est pratiquée par les agences gouvernementales en charge de la recherche;
  • d'un autre côté, quand on regarde la liste des auteurs d'un article inconnu, on ne peut faire aucune déduction sur l'intention qu'ont eu les auteurs en adoptant un ordre précis. Est-ce que Machin est plus respectable que Truc, ou a encore plus contribué que Bidule ? Impossible à savoir;
  • et bien sur, il y a également l'aspect de déterminer quel ordre va adopter un groupe de personnes quand il s'agira, pour elles, de publier.

La solution est à mes yeux évidente : affirmer ses idées et n'utiliser que l'ordre alphabétique [1], au besoin en mentionnant ce détail pour plus de clarté.

Comme de toute façon personne ne peut en déduire quoi que ce soit, et que tout le monde s'en fout, autant faire simple. Honnêtement, vous faites l'effort de suivre des auteurs pour savoir si leur position dans la liste des rédacteurs de leurs publications augmente ou régresse ? Moi pas.

L'ordre alphabétique est simple, compréhensible par tous, « juste » (quand on connait l'importance de ce critère...) et permet surtout de se débarrasser d'un problème humain empoisonnant.

Note

[1] le choix des méthodes de comparaison est laissé comme amusette à l'intention du lecteur : comment déterminer la précédence entre caractères accentués (é, ê et e, par exemple), ou pire entre caractères non-latin (チ, ϐ, Ж...) ?

lundi 21 septembre 2009

Les 10 ans de Créalys

Créalys, l'incubateur d'entreprises issues de la recherche, fête ses 10 années d'existence. Et comme il se doit, cela se traduit par un buffet accompagné de discours.

Livre blanc de l'innovation

Étaient présentes une bonne centaine de personnes, principalement des chefs de (jeunes) entreprises (en tenue de ville), des banquiers/investisseurs/financiers (en costumes cravatés), des gens de la région/département/etc (aux cheveux poivre et sel) et des doctorants (avec des t-shirts variés). Bref, que du normal.

J'ai trouvé qu'il y avait un nombre important de doctorants, pour ce genre d'évènement : environ 10%, quasiment tous en fin de thèse ou en début de post-thèse. Un bon nombre était en train de porter un projet de conception d'entreprise, à partir de travaux auxquels ils avaient participé dans leurs équipes de recherche.

Niveau recherche, il y avait beaucoup de personnes du LIP (doctorants principalement), et l'INSERM était bien représenté. Les SHS étaient quasi absentes, et curieusement les sciences de la vie étaient en retrait. Le gros des troupes était orienté physique, chimie, et sciences de l'information (surtout réseau)

J'ai discuté avec plusieurs personnes sur les questions du financement initial, fait un lâché de cartes de visites, et globalement réseauté en attendant que le buffet ouvre. Malheureusement, il a fallu attendre que passe la série de discours et de petits films d'autopromo, pour ensuite être rejoint par Olivier et enfin attraper quelque chose à manger.

Bref, un évènement quelconque servant surtout à se faire voir et à prendre de la doc; mais ça valait le coup d'y aller en étant sur place.

jeudi 30 juillet 2009

Pourquoi je ne crois pas (encore) en la trace modélisée

Non, non, ne hurlez pas; je vous vois venir avec vos mais qu'est-ce qu'il va encore nous inventer cette fois-ci ? :)

Lisez, vous allez voir, ça va vous intéresser.

Avant-propos

Je travaille depuis maintenant un bon moment à mettre en place une partie de nos idées sur les traces, concernant la visualisation d'activité (individuelle ou collaborative, a/synchrone, ici on s'en fout). Architecture, conception de modèles, instrumentation d'application, couche réseau, formats de données, parsers, etc; vous l'avez compris, tout passe entre mes mains excepté le SGBT qui est pour moi une boîte noire. Si vous pouvez imaginer quelque chose relatif aux traces (RàPC excepté), alors je me suis certainement penché dessus à un moment durant ces six derniers mois.

Je vous présente ici un retour sur l'expérience que j'ai développé, à base de réflexions personnelles. Le constat est plutôt mitigé, je vous préviens d'avance. Rien de dramatique, mais il faudra en tenir compte pour la suite de nos travaux car ça a des conséquences importantes. Je vais essayer de faire un découpage propre, mais vous allez voir que tout est lié.

Ma réflexion est orientée sur le transfert vers l'entreprise (non, ce n'est pas un gros mot) de nos travaux de recherche. C'est à dire : « qu'est-ce qu'il faut prendre en compte lorsqu'on va essayer de vendre la trace modélisée à un industriel ».

La conception de modèle

La première étape de l'enrichissement d'une situation informatique par les traces (sous-entendu, après tout le blabla d'analyse) est la conception d'un modèle de traces de logiciel(s). Cela :

Demande des compétences très spécialisées

Soyons réalistes, comprendre la théorie de la trace modélisée et être capable d'expliciter des interactions dans son formalisme n'est pas à la portée de tout le monde. Non pas que cela soit particulièrement complexe, mais cela exige un certain nombre de connaissances et de compétences qui ne se trouvent pas partout.

Que ce soit par une méthode ascendante ou descendante, concevoir des modèles de trace d'applications ne peut être fait que par un petit nombre de personnes. Or, ce qui est rare est cher. Il va donc falloir convaincre l'entreprise de réaliser cet investissement. Cela peut passer par une mission d'un expert extérieur, la formation d'une personne déjà en place, un partenariat avec une structure compétente, etc. Plusieurs possibilités existent, mais toutes ont un coût qui n'est pas négligeable.

Nécessite beaucoup de temps

Un logiciel, même très simple, est riche en possibilités d'interactions. On peut retenir l'utilisation de menus, de boutons, de paramètres, de zones de saisie, de fonctions, etc, ainsi que des opérations plus globales impliquant les périphériques d'entrée et de sortie.

Au final, on se retrouve à manipuler un très grand nombre d'observés et de relations, ce qui nécessite plusieurs jours semaines de travail. La richesse en observés étant exponentielle par rapport à la complexité d'un logiciel, essayez de visualiser ce à quoi pourrait ressembler le modèle de trace d'OpenOffice. Oui, c'est plus que gros : c'est énorme. Et on ne peut pas se permettre de laisser de côté certaines parties du modèle car cela impliquerait de ne pas être capable de représenter correctement les interactions de l'utilisateur sur ce logiciel.

L'entreprise ayant besoin de tracer une activité, un environnement ou que sais-je encore, va devoir y passer du temps (qui est aussi de l'argent, comme nous le rappel le célèbre adage). Ce temps sera pris au dépend d'autres activités, peut-être plus facilement et rapidement rentables.

Comprend aussi la conception des règles de transformations usuelles

Tout comme sans maîtrise, la puissance n'est rien, des traces qu'on ne peut pas manipuler sont tout de suite moins intéressantes. La conception de jeux de règles de transformations adaptées aux modèles de traces est un des à-côté du travail conceptuel de la trace.

En effet, on ne peut pas simplement donner un modèle de trace à une entreprise en lui disant « voilà, tu as ton modèle, à toi de te débrouiller pour faire ce que tu veux avec ». Il faut donc en parallèle du modèle construire les règles de transformations qui vont les utiliser, afin d'obtenir un résultat final qui corresponde aux attentes de l'entreprise. L'entreprise pourra certes produire en interne de nouvelles règles de transformations (par une tactique de copie/adaptation), mais il faudra lui préparer le terrain. Et qui est-ce qui va se taper le travail ? Gagné, c'est l'expert qui s'occupe déjà du modèle. Cela augmente sensiblement sa charge de travail, et donc le coût pour l'entreprise.

Instrumentation des logiciels

Selon le logiciel à instrumenter, le travail technique pour réaliser la collecte d'observés varie grandement. J'ai identifié 3 catégories d'instrumentation :

  • édition en profondeur du code source : méthode qui nécessite d'avoir accès au code source du logiciel, et d'être en mesure d'y apporter des modifications;
  • création de greffons présentant des interfaces pour interroger le contenu de variables d'état : ici, on ajoute des fonctionnalités à l'application en s'appuyant sur ses API. On est limité par ce que propose l'application en terme d'accès aux ressources internes.
  • création de préparateurs de traces qui récupèrent des données exportées par l'application pour produire des observés : cette approche consiste à récupérer des informations sorties de l'application via ses méthodes standard (par exemple, flux RSS ou AppleEvent). Cette méthode apporte le découpage le plus fort dans le tandem application/traçage, et est limitée par l'application elle-même.

Selon les applications à instrumenter et les méthodes utilisées, le coût de l'adaptation logicielle varie énormément. Malheureusement, il n'est pas possible d'identifier un petit nombre de critères précis permettant de quantifier simplement ce coût. C'est uniquement en prenant en compte une combinaison de nombreux facteurs qu'on peut le déterminer. À titre d'idée, on peut citer sans s'y restreindre :

  • la complexité du travail;
  • la durée du travail;
  • le langage de programmation (allez trouver quelqu'un qui fait encore du COBOL, tiens :)
  • la documentation disponibles (humain, référentiel de développement, etc);
  • l'urgence;
  • etc.

Il y a également les coûts liés; par exemple, les structurels : achat d'un serveur pour le SGBT, mise à jour des matériels, adaptation de l'architecture réseau...

Les cycles de vie logiciel dans environnements tracés

Un logiciel peut être vu comme quelque chose de « vivant », évoluant au fur et à mesure des versions. Ces évolutions sont nécessaires pour de nombreuses raisons : changement dans l'environnement d'accueil (le système d'exploitation), sécurité, nouvelles fonctionnalités, etc.

Tout naturellement, il faut que les éléments du traçage accompagnent ces évolutions. Tout s'enchaînent très rapidement de façon implacable :

  1. modifier le logiciel tracé (peut) oblige(r) à modifier la collecte
  2. modifier le logiciel tracé oblige (pas moyen d'y échapper, là) à modifier le modèle de traces
  3. modifier le modèle de traces oblige à modifier les transformations de traces (et oui...)
  4. modifier les transformations de traces impacte sur la visualisation des traces (j'y reviendrais plus tard)

On se rend compte alors que la mise à jour est coûteuse car il faut de nouveau faire appel à notre expert. Vous souvenez de lui, celui de la 1e étape, qui avait conçu les modèles ? Et bien il va falloir retourner le voir pour lui demander de se pencher sur les modifications. Ceci dit, ça tombe bien car il pourra tout traiter d'un seul coup : l'évolution des modèles et celle des transformations. Et si en plus derrière il peut assurer la formation ça ne sera pas perdu.

Le plus problématique est qu'il faut répéter ce cycle à chaque nouvelle version du logiciel. C'est réellement un surcoût, car la rentabilité n'est pas évidente à dégager (comptablement parlant).

Mentalement, insérez ici un joli schéma de traces complet d'une application, montrant côte à côte les modèles de traces pour la version N et la version N+1. Imaginez de gros, gros (mais alors gros), graphes avec des nœuds et des arcs dans tous les sens, qui seraient différents de seulement quelques détails : observés en plus ou en moins, déplacement de relations, changement d'attributs, etc.

Je mettrais les schémas quand je les aurais fini, le but est ici de vous faire prendre conscience du volume de travail que ça représente.

Pratiques des utilisateurs liées aux traces

En ce qui concerne l'utilisateur final, c'est plus simple pour lui. Une évolution de son environnement tracé se traduit non seulement par une modification de sa pratique métier, mais également de sa pratique réflexive via les traces. Ben oui, vous ne croyez quand même pas qu'au final rien ne change ? Et comme nous le savons, tout ce qui change les habitudes de l'utilisateur le fait râler (sauf si c'est Génial, mais ça seul Apple arrive à le faire :)

De petites modifications dans un logiciel peuvent avoir de grandes répercutions sur le modèle de trace, et donc sur la visualisation interactive de la trace par l'utilisateur. Il va donc lui falloir un temps d'adaptation (ce qui influera sur sa productivité), voir même une formation.

Également, les changements dans les traces et modèles pourront se propager à d'autres environnements, tracés ou non. C'est le cas lors de la documentarisation de traces en vue de générer des productions (textes, hypermédia, etc.) Même si ces outils ne sont pas tracés, ils sont impactés par les changements sur les données d'entré.

Que retenir au final ?

On peut dire qu'instrumenter un environnement pour lui faire générer des traces est long, pas toujours simple, et n'est pas nécessairement faisable de façon clairement rentable.

Les problèmes apparaissent à tous les niveaux : conceptuel (modèles), technique (instrumentation) et humain (usage). Les principaux étant le coût (je crois l'avoir suffisamment répété :) de la mise en œuvre de la trace dans un système existant, et les compétences spécialisées requises dans chacune des étapes de la réalisation.

Convaincre un industriel d'investir dans la trace est alors réellement un problème, car les gains à dégager sont difficilement calculables, et la mise initiale est élevée.

Au final, pour moi la théorie de la trace est attirante sur le papier, mais les difficultés liées à la réalisation sont vraiment rebutantes.

Pistes envisageables

Tout n'est pas perdu ! Maintenant que nous avons regardé le problème droit dans les yeux, on peut louvoyer en évitant ce qui justement nous embête.

Ainsi, on peut songer à cibler en priorité les systèmes figés, qui n'évoluent pas ou très peu :

  • machine-outil : une chaîne de production change rarement, car son utilisation est planifiée en amont. Du coup, pas besoin non plus de faire évoluer les trucs-de-la-traces \o/
  • systèmes critiques : les outils comme ceux du contrôle aérien n'ont pas le même cycle de vie que les logiciels grand public; on ne passe pas son temps à les mettre à jour. Il sont conçus pour durer, et c'est au contraire les autres systèmes qui s'adaptent pour interagir avec eux. En gros, une fois le traçage dedans, il n'en bouge plus.
  • logiciels arrivés à maturité; ils peuvent être complexes (Lotus Notes) ou très simples (calepin de Windows). De par leur nature, rôle ou histoire, certains logiciels sont intouchables; on se contente au plus de les recompiler, mais en veillant à ne rien changer afin de ne pas provoquer d'effets de bord (comme par exemple un changement de modèle de trace).

Une autre approche est de se poser la question de savoir qui a suffisamment d'argent à dépenser pour se lancer dans un projet pareil, sans que le responsable risque de se faire virer après la réception de la facture par le service compta :

  • les grands comptes : la Poste, EDF (eh, ça tombe bien :), etc;
  • la fonction publique : quand l'administration investie, elle ne le fait pas à moitié; souvenons-nous du « Plan informatique pour tous »;
  • les Décideurs Pressés qui imposent contre l'avis de leurs DSI des solutions qu'ils jugent intéressantes. Avec un joli PowerPoint®™©, on arrive à vendre des glaçons au Pôle Nord.

Vous l'avez compris, j'exclus tout ce qui est grand public dans les cibles potentielles. Il y a éventuellement le monde du Libre qui pourrait mettre en place et maintenir des utilisations de traces modélisées, mais il faudrait vraiment que ça soit pertinent.

dimanche 21 juin 2009

Vie quotidienne au CNRS : censure des opinions personnelles

Thibaud Hulin travaille avec moi au LIRIS, CNRS UMR5205, dans l'équipe SILEX. Thibaud Hulin et moi partageons le même statut, à savoir contractuel et non pas titulaire.

Dans le contexte de l’affaire Vincent Geisser, Thibaud relai les évènements en cours et les commente. Quelques jours plus tard, il reçoit un appel téléphonique (quand on connait l'état de l'annuaire du LIRIS, c'est déjà en soit une surprise :) du directeur de laboratoire lui demandant de supprimer son billet; la demande venant du service du Fonctionnaire de Sécurité Défense (FSD).

Au delà d'un soutien normal envers mon collègue de travail, je ne peux pas m'empêcher de m'interroger sur les prérogatives et droits de ce fameux FSD qui agit tant mais dont on ne sait rien.

Sur cette affaire, je ne prend pas position sur les travaux de Vincent Geisser, que je ne connais pas, mais sur le contrôle de la liberté de parole des personnes travaillant au CNRS.

En savoir plus :

lundi 15 juin 2009

Vie quotidienne au CNRS : recrutement sauvage et paupérisation des informaticiens

Des listes de diffusion sur la recherche informatique en France diffusent régulièrement des annonces de recrutement. Il s'agit la plupart du temps d'offres de stage, de post-doc ou encore d'assistant de recherche; mais on y trouve aussi parfois des offres pour ingénieurs.

Celle-ci a attiré mon attention :

Offre d’emploi
Docteur / ingénieur
IA – jeux vidéo - middleware
...
Candidat idéal
Profil : docteur en IA + ingénieur informatique
Spécialité : programmation (C++) - intelligence artificielle (agents autonomes, vie artificielle, apprentissage, évolution)
Expérience :
- Développement de jeux vidéo
- Intelligence artificielle
- Développement de middleware
...
Embauche
Salaire : Le salaire brut prévu pour cette mission sera de l’ordre 2000 € / mois.

Je ne vous cache pas que c'est très en dessous des prix du marché pour recruter un docteur :

  • qui soit également ingénieur
  • polyvalent (IA, web, développement, middleware...)
  • sur des domaines pointus
  • avec de l'expérience
  • pour une mission courte
  • sans avantages particuliers

On peut donc envisager plusieurs possibilités :

  • le marché de l'emploi sur ces domaines est vraiment encombré, au point de faire chuter de façon vertigineuses les salaires. Ce n'est pas le cas.
  • l'entreprise espère, sur un malentendu, parvenir à trouver la perle rare. Pourquoi pas.
  • l'entreprise n'a aucune notion du salaire en adéquation avec un tel profil. Là, c'est plus inquiétant car cela soulève des interrogations sur la gestion de cette entreprise.

Personnellement, sur ce profil je ne demanderais pas moins de 40k€ net par an, avec avantages (PERCO, 13e mois, congés, frais, etc).

mercredi 10 juin 2009

Appel à commentaires sur les modèles de trace

Avant propos

Il y a deux abréviations à connaitre.

i18n (internationalization) internationalisation

Les adaptations à faire sur les formats de données, selon les pays. Par exemple, comment on exprime une date (JJ/MM/AA, MM/DD/AA, etc), une monnaie ($123, 123€), un nombre (123.456 ou 123,456), etc. C'est un travail technique qui demande à faire abstraction du contenu pour en décrire sa structure.

CF l18n

l10n (localization) régionalisation

Il s'agit de la traduction à proprement parler.

WP :

La régionalisation de logiciel concerne le processus de traduction de l'interface utilisateur d'un logiciel d'une langue vers une autre et en l'adaptant à la culture locale. On utilise parfois le terme localisation, qui est une transposition du mot anglais localization (faux ami). On écrit parfois l10n car le mot localization est composé de dix lettres encadrées par un l et un n.

Avant qu'un logiciel ne soit régionalisé, il faut au préalable qu'il ait été internationalisé, c’est-à-dire qu'il ait été écrit pour pouvoir être traduit dans différentes langues et cultures.

CF l10n

Discussion sur les modèles

Pour construire l'interface de l'outil générique de visualisation interactive de trace (OGVIT), il faut que chaque attribut ait un nom compréhensible pour l'utilisateur. Ce qui veut dire qu'au couple attribut+valeur (par exemple, ktbs:hasTime et 1244638257), il faut ajouter un 3e élément qui est le « nom humain » (mercredi 10 juin 2009, 14:50:57)

De plus , ce nom humain doit pouvoir être internationalisé (et localisé), car tout le monde n'utilise pas la même langue. Ce qui veut dire qu'un observé, au final, doit autant être compréhensible par la machine que par l'humain. Si l'humain sait vaguement s'adapter, la machine elle a besoin d'un formalisme explicite.

Il existe plusieurs endroits où ajouter ces élément de i18n et de l10n :

Dans l'observé lui-même

  • avantage : l'information est immédiatement présente, on peut la traiter directement
  • inconvénients :
    • ça prend de la place, on répète l'information autant de fois qu'on a d'observés.
    • pour gérer plusieurs langues, il faudra ajouter autant d'éléments de traduction; c'est du gaspillage.

Dans le modèle de trace

  • avantage : c'est définit une fois pour toute; on économise de la place et du temps
  • inconvénients :
    • on se retrouve à trimbaler dans le modèles des informations dont on n'a pas besoin. Par exemple, moi je n'ai pas besoin de pouvoir exprimer mes dates en japonais.
    • ajouter une langue revient à reprendre le modèle, ce qui n'est pas toujours évident à faire car celui-ci n'est pas forcément modifiable. Par exemple, il peut être intégré dans une application dont on n'a pas les sources.

Dans un document à côté du modèle

  • avantages :
    • on peut modifier et compléter les traductions et formats sans toucher au modèle.
    • le modèle ne contient que la définition de la trace, le reste étant dans un document associé.
  • inconvénients :
    • quand on veut manipuler un modèle, il faut alors manipuler deux fichiers pour avoir les littéraux. Pas pratique.
    • ça complique le schmilblick.

Reste à décider. Vos avis sur la question ?

Exemple concret

Je souhaite visualiser la trace de ma (« Damien_traces ») frappe clavier dans weechat, mon client IRC tracé. La trace correspondant à l'envoi du message « bonjour » sur le canal #LIRIS de Freenode est la suivante :

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ktbs: <http://liris.cnrs.fr/~ithaca/ns/ktbs/0.1/> .
@prefix : <http://example.com/trace-model/> .

[ a :presseTouche;
:versionDeWeechat "0.2.6.1";
:monPseudo "Damien_traces";
:nomDuCanal "#LIRIS";
:nomDuServeur "freenode";
:typeDeTampon (0=standard, 1=DCC, 2=données IRC brutes) "0";
:caractère "*b";
:zoneDeSaisieAvantCaractère "";
:zoneDeSaisieAprèsCaractère "b";
:drapeauAway "0";
:contenuDeLaZoneDeSaisie "b";
:contenuDuMasqueDeCouleurDeLaZoneDeSaisie " ";
:positionDuCurseurDansLaZoneDeSaisie "1";
ktbs:hasBegin "1244635383";
ktbs:hasEnd "1244635383";
ktbs:hasTrace <> ;
].

[ a :presseTouche;
:versionDeWeechat "0.2.6.1";
:monPseudo "Damien_traces";
:nomDuCanal "#LIRIS";
:nomDuServeur "freenode";
:typeDeTampon (0=standard, 1=DCC, 2=données IRC brutes) "0";
:caractère "*o";
:zoneDeSaisieAvantCaractère "b";
:zoneDeSaisieAprèsCaractère "bo";
:drapeauAway "0";
:contenuDeLaZoneDeSaisie "bo";
:contenuDuMasqueDeCouleurDeLaZoneDeSaisie "  ";
:positionDuCurseurDansLaZoneDeSaisie "2";
ktbs:hasBegin "1244635383";
ktbs:hasEnd "1244635383";
ktbs:hasTrace <> ;
].

[ a :presseTouche;
:versionDeWeechat "0.2.6.1";
:monPseudo "Damien_traces";
:nomDuCanal "#LIRIS";
:nomDuServeur "freenode";
:typeDeTampon (0=standard, 1=DCC, 2=données IRC brutes) "0";
:caractère "*n";
:zoneDeSaisieAvantCaractère "bo";
:zoneDeSaisieAprèsCaractère "bon";
:drapeauAway "0";
:contenuDeLaZoneDeSaisie "bon";
:contenuDuMasqueDeCouleurDeLaZoneDeSaisie "   ";
:positionDuCurseurDansLaZoneDeSaisie "3";
ktbs:hasBegin "1244635383";
ktbs:hasEnd "1244635383";
ktbs:hasTrace <> ;
].

[ a :presseTouche;
:versionDeWeechat "0.2.6.1";
:monPseudo "Damien_traces";
:nomDuCanal "#LIRIS";
:nomDuServeur "freenode";
:typeDeTampon (0=standard, 1=DCC, 2=données IRC brutes) "0";
:caractère "*j";
:zoneDeSaisieAvantCaractère "bon";
:zoneDeSaisieAprèsCaractère "bonj";
:drapeauAway "0";
:contenuDeLaZoneDeSaisie "bonj";
:contenuDuMasqueDeCouleurDeLaZoneDeSaisie "    ";
:positionDuCurseurDansLaZoneDeSaisie "4";
ktbs:hasBegin "1244635384";
ktbs:hasEnd "1244635384";
ktbs:hasTrace <> ;
].

[ a :presseTouche;
:versionDeWeechat "0.2.6.1";
:monPseudo "Damien_traces";
:nomDuCanal "#LIRIS";
:nomDuServeur "freenode";
:typeDeTampon (0=standard, 1=DCC, 2=données IRC brutes) "0";
:caractère "*o";
:zoneDeSaisieAvantCaractère "bonj";
:zoneDeSaisieAprèsCaractère "bonjo";
:drapeauAway "0";
:contenuDeLaZoneDeSaisie "bonjo";
:contenuDuMasqueDeCouleurDeLaZoneDeSaisie "     ";
:positionDuCurseurDansLaZoneDeSaisie "5";
ktbs:hasBegin "1244635384";
ktbs:hasEnd "1244635384";
ktbs:hasTrace <> ;
].

[ a :presseTouche;
:versionDeWeechat "0.2.6.1";
:monPseudo "Damien_traces";
:nomDuCanal "#LIRIS";
:nomDuServeur "freenode";
:typeDeTampon (0=standard, 1=DCC, 2=données IRC brutes) "0";
:caractère "*u";
:zoneDeSaisieAvantCaractère "bonjo";
:zoneDeSaisieAprèsCaractère "bonjou";
:drapeauAway "0";
:contenuDeLaZoneDeSaisie "bonjou";
:contenuDuMasqueDeCouleurDeLaZoneDeSaisie "      ";
:positionDuCurseurDansLaZoneDeSaisie "6";
ktbs:hasBegin "1244635385";
ktbs:hasEnd "1244635385";
ktbs:hasTrace <> ;
].

[ a :presseTouche;
:versionDeWeechat "0.2.6.1";
:monPseudo "Damien_traces";
:nomDuCanal "#LIRIS";
:nomDuServeur "freenode";
:typeDeTampon (0=standard, 1=DCC, 2=données IRC brutes) "0";
:caractère "*r";
:zoneDeSaisieAvantCaractère "bonjou";
:zoneDeSaisieAprèsCaractère "bonjour";
:drapeauAway "0";
:contenuDeLaZoneDeSaisie "bonjour";
:contenuDuMasqueDeCouleurDeLaZoneDeSaisie "       ";
:positionDuCurseurDansLaZoneDeSaisie "7";
ktbs:hasBegin "1244635385";
ktbs:hasEnd "1244635385";
ktbs:hasTrace <> ;
].

[ a :presseTouche;
:versionDeWeechat "0.2.6.1";
:monPseudo "Damien_traces";
:nomDuCanal "#LIRIS";
:nomDuServeur "freenode";
:typeDeTampon (0=standard, 1=DCC, 2=données IRC brutes) "0";
:caractère "return";
:zoneDeSaisieAvantCaractère "bonjour";
:zoneDeSaisieAprèsCaractère "";
:drapeauAway "0";
:contenuDeLaZoneDeSaisie "";
:contenuDuMasqueDeCouleurDeLaZoneDeSaisie "";
:positionDuCurseurDansLaZoneDeSaisie "0";
ktbs:hasBegin "1244635386";
ktbs:hasEnd "1244635386";
ktbs:hasTrace <> ;
].

L'OGVIT est supposé construire automatiquement, à partir du modèle de la trace, la visualisation suivante.

Interface pour la visualisation de la trace des frappes clavier de weechat

On constate plusieurs choses :

  • c'est vide : ben oui, car je n'ai pas le modèle de cette trace, et d'une façon plus générale le format d'un modèle
  • il manque des informations pour construire la représentation de la trace : les noms (humains) des colonnes doivent provenir du modèle, ou du fichier de l10n associé.

Comme quoi, c'est vraiment là un problème technique et non pas scientifique. Il faut qu'on se force à prendre des décisions pour avancer.

- page 1 de 2