vendredi, juin 11, 2010

La machine virtuelle virtuelle




La semaine passée, en sortant de la conférence de Douglas Hofstadter sur la centralité de l'analogie dans les sciences cognitives (cours de Serge Haroche) et, dans le cas d'espèce, sur son importance indubitable dans la traduction poétique à partir de l'exemple d'Eugène Onéguine d'Alexandre Pouchkine, je tombai à l'improviste sur mon amie Claude Computing, que je n'avais pas vue depuis quelque temps, et qui, à mon grand étonnement, sortait aussi de cette même conférence du Collège de France.



Je l'entraînai donc rapidement vers une terrasse ensoleillée pour lui demander autour d'un café quel rapport pouvait bien exister entre la structure particulière de la strophe onéguinienne (14 vers, aBaBccDDeFeFGG) et ses propres travaux avancés de psychopathologie virtualisante des hyperviseurs qui justifiât de sa présence ce jour là au cours (polyglotte) d'Hofstadter ? Si l'on peut dire de Claude qu'elle a parfois la tête dans les nuages, ses sources d'information et ses travaux techniques sont, en revanche, d'une rare exactitude. « Vois-tu, » me dit-elle, « la qualité de la traduction poétique, vient de nous démontrer Hofstadter, repose sur l'habileté du traducteur à respecter non seulement l'analogie de fond mais également l'analogie de forme dans le passage d'une langue à l'autre. C'est précisément la même chose dans la virtualisation ! »



Devant mes yeux agrandis de surprise, elle me décrivit rapidement la situation d'un de ses patients, OSGi (désigné par ses initiales pour préserver son identité), souffrant de troubles de la personnalité multiple. Dans le cas d'OSGi, ces personnalités ou bundles, dans le jargon des thérapeutes, regroupent un ensemble de composants Java chargés par un class loader spécifique. Mais chez ce patient, un bundle n'est pas protégé contre les exactions éventuelles d'un autre bundle, malicieux ou simplement bogué. Pour y remédier, Claude s'intéressait aux travaux communs du LIP6, de l'INSA et du Forschungszentrum Informatik de Karlsruhe, autour d'une machine virtuelle Java, JVM-I, qui embarque un mécanisme d'isolement entre bundles. La communication reste permise entre bundles par un contrôle maîtrisé de la migration des threads d'une cellule d'isolement - un isolat - à une autre. JVM-I isole la mémoire (en rendant privés à l'isolat les variables statiques, chaînes et autres objets associés à java.lang.class, autrement partagés entre tous les bundles) ; entretient une comptabilité des ressources mémoire et CPU (en gardant trace de l'isolat dans lesquels s'exécute une thread) ; et gère le cycle de vie des isolats (en assurant qu'une fois terminé, une invocation de ses classes provoque une exception).



« Mais le plus intéressant, » continua-t-elle, « c'est l'architecture de cette machine virtuelle Java : c'est une machine virtuelle virtuelle ! ».



Deuxième effet spéculaire qui accrut ma perplexité !



Au fait, les exemples de machines virtuelles pour les langages de programmation sont bien connus : machine virtuelle Java JVM, à l'origine pour le langage Java mais également maintenant utile pour Jython, JRuby, Groovy, Scala et quelques autres ; la Common Language Infrastructure (CLI) proposée par Microsoft devenu standards ECMA qui sous-tend une variété de langages de programmation, de C# à F#, d'IronPython à IronRuby, de Boo à Cobra et bien d'autres encore, sans oublier Mono, une implémentation Open Source. Ces machines virtuelles ont demandé des années d'effort pour la conception de leur architecture et leur développement. Bâtir une nouvelle machine virtuelle apparaît donc à l'observateur averti comme bien plus difficile que de porter ou d'inventer un langage de programmation pour ces machines virtuelles déjà bien établies.



Et cependant, l'idée fascinante de l'équipe du LIP6/INRIA/Regal est de virtualiser les machines virtuelles. VMKit, le premier produit de cette réflexion méta-programmatique (qui nous ramène inévitablement à l'oeuvre d'Hofstadter qui lui valut un Pulitzer), est donc un Managed Runtime Environment (MRE) générique : une plate-forme permettant à moindre coût de développer une machine virtuelle spécifique. Un outillage complet pour des Domain-Specific Virtual Machines. Pour réussir ce tour de force, insista Claude, les recommandations d'Hofstadter ont été suivies à la lettre : abstraire la traduction tant du fond que de la forme d'une machine virtuelle à une autre. Dans le cas d'espèce, la JVM et CLI ont été entièrement et facilement ré-implémentées, sous les noms respectifs de J3 et N3, sur le même substrat VMKit.



Les perspectives me donnaient soudain le tournis.



J'avais à peu près réalisé que créer des langages de programmation spécifiques à un besoin ou un domaine d'application particulier était devenu pratiquement chose courante (les Domain-Specific Languages) grâce à leur compilation vers un bytecode directement exécutable par les machines virtuelles Java ou CLI. J'avais même compris que l'instrumentation moderne permettait de compiler son propre compilateur spécifique. Mais ici, Claude allait encore un cran plus loin, puisque c'est la machine virtuelle elle-même, chargée d'exécuter le bytecode, que l'on peut maintenant spécifier, une machine donc deux fois virtuelle se chargeant de son exécution... Superbe mise en abyme, théâtre dans le théâtre, méta-récit des threads et de la mémoire !



À l'examen, la diégétique de VMKit s'articule autour d'un compilateur à la volée (JIT) - le fameux traducteur dynamique dont il est question chez Hofstadter pour la strophe onéguinienne -, un gestionnaire de mémoire avec ramasse-miettes et un gestionnaire de threads. Ces trois fonctions sont les hypostases indispensables à la plupart des MRE (Cacao, Harmony, Mono ou JikesRVM), même si elles ne sont pas forcément toutes utilisées dans une implémentation d'un MRE particulier.



Ainsi, grâce à VMKit et pour la beauté du geste, ses concepteurs ont pu développer : (i) une machine virtuelle Java complète, J3, dont 96% du code provient de la plate-forme VMKit et seulement 4% lui donne la personnalité JVM ; puis (ii) en moins d'un mois, à la lueur de l'expérience acquise avec J3, une seconde machine virtuelle, baptisée N3, implémentant la CLI pour un ratio de code spécifique à générique similaire !



Je commandai précipitamment une infusion de ballote fétide et d'escholtzia pour tenter d'apaiser le bouillonnement de mes pensées. Claude était passée au brou d'ashwagandha à ma très vive inquiétude.



Pour construire le compilateur à la volée de VMKit, le choix s'est porté naturellement sur LLVM, qui au-delà d'un jeu d'instructions complet et d'un modèle de machine à une infinité de registres, peut être facilement étendu de nouvelles fonctions système internes (intrinsics) et effectuer une compilation à la demande (lazy compilation).



Pour le choix du gestionnaire de mémoire, MMTk a été retenu. Les ramasse-miettes de MMTk sont employés dans Jikes/RVM, une machine virtuelle de « recherche » et d'expérimentation implémentée en Java, d'ailleurs exécuté par elle-même - aïe, aïe, perspective de migraine méta-diégétique ! MMTk permet de définir l'architecture de sa mémoire virtuelle, ses mécanismes d'allocation de la mémoire et de ramasse-miettes, et calcule les statistiques d'utilisation. MMTk, qui est implémenté en Java, offre donc un toolkit complet pour écrire son propre gestionnaire mémoire que l'on peut ainsi adapter à des modèles objet ou des hiérarchies de types spécifiques. (Comme MMTk est en Java on a évidemment un problème de poule et d'oeuf puisqu'il faut une machine virtuelle Java pour exécuter le gestionnaire de mémoire du MRE. Qu'à cela ne tienne ! On recompile MMTk avec LLVM pour obtenir un bitcode LLVM neutre qui est compilé au vol et chargé à l'initialisation de VMKit.)



Enfin le thread manager est simplement le standard POSIX Threads (PThreads). Dans l'environnement multi-thread du MRE, l'interaction entre threads et mémoire pour le ramasse-miettes est implémentée en associant à chaque thread une mémoire locale contenant les informations nécessaires au ramasse-miettes (les barrières).



La machine virtuelle Java, J3, développée avec VMKit et les classes Java de GNU Classpath - même si ce MRE virtuel est toujours en cours de développement, research in progress - est déjà capable de faire tourner des programmes qui sont loin d'être triviaux comme Tomcat ou Eclipse. N3, qui utilise VMKit et les librairies DotGNU Portable .NET ou Mono, affiche déjà des performances comparables à celles de Mono.



Claude Computing, appelée à d'autres obligations, me laissa donc abîmé dans mes réflexions et la réalisation soudaine que si le choix d'un langage de programmation est pour beaucoup souvent guidé par les préférences personnelles des développeurs et pour le reste par des différences objectives, les progrès actuels de LLVM et de VMKit laissaient peut-être présager de la disparition pure et simple de ces différences objectives. Babel reconstruit ?






vendredi, juin 04, 2010

L'inteprétation chomskienne du discours sur le contrôle d'Internet : Orwell à très haut débit


L'un des sujets évoqués par Noam Chomsky lors de la brève visite à Paris qui provoqua, la semaine dernière, quelques remous et querelles de préséance dans l'intelligentsia parisienne, est celui qu'il apelle le « problème Orwellien ». Au plan philosophique, le linguiste qui n'a pas la langue dans sa poche met en effet en perspective le « problème platonicien », comment développe-t-on une connaissance si profonde du monde alors que notre perception en est si limitée ?, et le problème Orwellien, comment développe-t-on une connaissance si limitée du monde alors que notre perception en est si vaste ?

 



Dans son livre Knowledge of Language (1986), l'un de ses efforts les plus réussis pour faire une synthèse abordable de sa théorie linguistique — controversée elle-aussi —, Chomsky conclut par un bref chapitre intitulé «  Notes on Orwell's Problem  » (Notes sur le problème d'Orwell). Après une discussion sur la Nov-langue, Chomsky cite Harold Lasswell (1902-1978), un sociologue américain ayant étudié les mécanismes de la propagande et qui a conclu que «  we must avoid 'democratic dogmatisms', such as the belief that people are 'the best judges of their own interests'  » (« on doit éviter les 'dogmatismes démocratiques', comme la doctrine qui veuille que les gens soient 'les meilleurs juges de leurs propres intérêt' »). Selon Chomsky qui reprend cette conclusion, «  Propaganda is to democracy as violence is to totalitarianism » (« la propagande est à la démocratie ce que la violence est au totalitarisme »). L'étude du langage placé, selon Chomsky, à l'intersection de la pensée (connaissante) et de la perception, a donc résolument engagé Chomsky sur le terrain de la critique politique et, en particulier, de celle de la politique étrangère des USA. À écouter sa conférence au Collège de France, on se demandait comment Chomsky pouvait réconcilier la fabrication orwellienne du consentement avec la créativité linguistique infinie qu'il théorise précisément dans sa « grammaire générative universelle ».

 



Ne regardons pas plus loin que la Commission juridique du Parlement européen à Bruxelles pour trouver une magnifique illustration du problème orwellien de Chomsky, d'ailleurs pratiquement simultanée au déminage par l'explication de texte du linguiste à Paris. La commission a en effet adopté, mardi 1er juin, le rapport Gallo sur la propriété intellectuelle sur Internet, à 13 voix contre 8. Ce rapport d'initiative, c'est-à-dire non législatif, vise à « renforcer l'application des droits d'auteur sur le Web », explique l'eurodéputée UMP Marielle Gallo. La lecture du rapport montre, d'après la Quadrature du Net, l'usage de la langue administrative assimilant piratage numérique à contrefaçon physique (Attendu G), donc à infraction des droits de propriété intellectuelle et donc violation de la propriété intellectuelle (Attendus A, E, et F) , d'où lien avec le crime organisé (Attendu J) — on s'arrête juste avant l'inférence suivante, que nos modèles américains franchissent parfois pour amener du crime organisé au terrorisme, mais on laisse notre grammaire générative, entraînée par la séquence, poursuivre la logique à son terme. Il y est essentiellement proposé de reproduire au niveau européen un dispositif comparable à celui adopté en France avec la loi Hadopi 2 : un Observatoire européen du piratage et un dispositif de répression avec riposte graduée. Comme dans le cas de Chomsky, on s'inquiète donc vivement de la réconciliation éventuelle des deux positions contradictoires : d'un côté, la logique répressive doucereuse du rapport contre le partage de fichiers en ligne, et au passage de son soutien à l'accord ACTA et à la création de « polices privées » du droit d'auteur — des Blackwater de la guerre contre le piratage en ligne —, et de l'autre côté, la compréhension qu'une économie florissante de la création se construit aussi avec les internautes et non contre eux. Partage, piratage, pistage — c'est bien de la linguistique !

 



Débat linguistique chomskien qui agite aussi les allées du pouvoir : discret en France, les « zones noires » à raser après le passage de Xynthia devenues des « zones de solidarité » où l'on ne pourra désormais, à cet énoncé, que verser des larmes de joie solidaire au spectacle du bulldozer pénétrant dans le salon de la demeure familiale au travers de la porte vitrée, et bien plus bruyant au Parlement américain à propos des plans prétendumment ourdis par la FCC pour « prendre le contrôle d'Internet ». Les parlementaires américains s'inquiètent soudain des vélléités attribuées à l'administration Obama à contrôler Internet. Attention : Nov-langue à l'oeuvre ! Premier rappel, d'esprit parfaitement chomskien : le gouvernement contrôle déjà Internet aux USA par le moyen d'une myriade de lois CFAA, ECPA, DMCA, and CALEA par exemple. Mais, seconde constatation d'importance, le terme « Internet » lui-même englobe à la fois le réseau de transport des communications et ces communications elles-mêmes : synecdoque sans nul doute intéressée ! À l'heure où la FCC s'interroge sur une révision de sa doctrine sur la réglementation du haut débit, à la lueur du cas Comcast/BitTorrent, le Congrès américain, quant à lui, s'interroge carrément sur la pertinence même de la FCC. L'argument est, ici encore, tout linguistique — ontologique, pour être pédant. L'esprit de libéralisation de l'accès à Internet prévalant dans les années 95-96, à l'adoption du 1996 Telecommunications Act, amena la FCC à le classer comme «  telecommunications service  » au titre I du Communications Act de... 1934, avec, au final, peu de contraintes. De nombreuses contestations s'en suivirent, en particulier des opérateurs américains qui militaient pour reclasser l'accès à Internet comme «  information service  » au titre II de cette même loi. Ce titre II leur permettait alors de réclamer l'ouverture de l'accès (le dégroupement), en particulier auprès des cablo-opérateurs, pour le dernier mile. En 2005 une cour jugeait que la classification au Titre I était inacceptable, arrêt qui fut lui-même cassé par la Cour Suprême immédiatement après. Aujourd'hui le chairman de la FCC, Julius Genachowski, ressort l'idée de la reclassification au Titre II comme nécessité vitale au développement de la liberté de parole — la langue, vous dis-je —, de l'économie et des emplois américains. Ses détracteurs n'ont pas tardé à réagir en dénonçant l'instauration à venir d'une « Nouvelle surveillance » d'Internet sous le contrôle panoptique d'une FCC totalitariste.

 



Chomsky, tout éminent linguiste qu'il soit, n'aurait pas dit mieux.

 



mardi, juin 01, 2010

Microsoft au secours des jeunes pousses européennes


Alors que la valorisation boursière d'Apple s'envolait cette semaine pour dépasser celle de Microsoft (234 milliards de dollars contre 226 encore au 30 mai), le géant dépassé en appelait au souvenir de l'Apple des années 1980 pour la 6ème Journée Européenne Bizspark, présentée à Paris mardi dernier, en les personnes de Guy Kawasaki et Dan'l Lewin. En effet, si Dan'l Lewin est aujourd'hui Corporate Vice President for Strategic and Emerging Business Development, il eut par le passé la chance (et la force d'âme !) d'accompagner Steve Jobs, chez Apple puis chez Next. Quant à Guy Kawasaki, il n'est plus utile de le présenter : c'est lui qui a inventé, pour le lancement du Macintosh, l'extraordinaire qualification de « Software Evangelist », le titre qui resplendissait sur la carte de visite qu'il remit, il y a vingt-cinq ans, à un jeune entrepreneur français ébahi, venu lui présenter un système expert sur Mac !

 



À l'époque, les software evangelists d'Apple constituaient le corps des prosélytes d'une machine révolutionnaire mais à l'origine pauvre de logiciels. Leur mission radicale était donc d'attirer les développeurs à ce changement de paradigme de l'interface utilisateur graphique, de la souris et de la programmation événementielle (en Pascal !), pour faire fleurir un écosystème d'éditeurs partenaires. Hébergés dans le saint des saints chez Apple, à Bandley Drive même, se côtoyaient ainsi les impétrants entrepreneurs des jeunes Lotus (Jazz, au flop retentissant), Adobe, qui y développait Illustrator et portait PostScript (succès phénoménal, en revanche), votre serviteur, un Laurent Ribardière acharné sur Silver Surfer qui deviendrait vite 4D — dont Guy Kawasaki, parti d'Apple, créerait ensuite la filiale américaine ACIUS en 1987 — et bien d'autres. Parmi lesquels... Microsoft déjà, qui lié par un pacte secret à Apple, avait promis de développer des logiciels pour le Macintosh.

 



Vingt-cinq ans plus tard, sur le même thème, le programme BizSpark mis à l'échelle du Microsoft de 2010 est une formidable serre où fleurissent les jeunes pousses puisant à la sève des .NET, SilverLight, Azure, WP7 et autres technologies innovantes de Redmond. C'est qu'entre temps tout le secteur des logiciels et de l'informatique s'est véritablement industrialisé et que l'évangélisation est devenue l'un des instruments basiques de la promotion des nouveaux produits et des nouveaux services. Des titans comme SAP, Cisco, Intel et Applied Materials, par exemple, la pratiquent depuis très longtemps, ayant même poussé plus loin encore la stratégie et institué, par exemple, des relais de financement sous la forme de fonds de capital risque corporate dédiés afin de nourrir leur écosystème.

 



Le contraste ne pouvait être d'ailleurs plus douloureusement mis en scène mardi dernier, que c'est bien en Europe que l'éclatante constatation de l'organisation impeccable de l'événement — bravo à Julien Codorniou, de retour de Seattle, et à toute son équipe ! — rappelait combien l'UE est désespérément à la traîne dans ces secteurs.

 



Bien rare est, en effet, le volontarisme d'un Bernard Liautaud, interviewé dans l'après-midi, qui, à la question de Jennifer Schenker : « Pourquoi êtes-vous rentré ? », répondit simplement que de la Silicon Valley il pouvait choisir d'observer ce qui se passait en Europe ou bien il pouvait rentrer et essayer d'agir sur ce qu'il s'y passe. (Notons cependant que, téméraire mais prudent et fiscalement avisé, peut-être à l'image de son co-fondateur Denis Payre, apôtre des stock-options discrètement délocalisé à Uccle, Bernard Liautaud s'est précipité dans les bras d'un grand fonds d'investissement britannique dès son retour et a finalement posé ses pénates à Londres d'où l'on pense gouverner splendidement l'Open Source européen — MySQL, Talend.)

 



Impression de décalage vivement renforcée lors du panel qui suivait sur «  Building a virtuous ecosystem in Europe  » au cours duquel étaient rendus patents tous les maux dont souffrent les petites et moyennes entreprises en Europe. Une sortie de Peter Jungen, Président de la SME Union du European People's Party, en particulier, reste en mémoire, qui faisait remarquer que dans les épais documents d'élaboration de la stratégie européenne Europe 2020, qui se substituera à l'excellente « Stratégie de Lisbonne » qui connut le succès que l'on sait, il avait du batailler pour qu'y figurent même les mots d'entrepreneur et d'entrepreunariat. Et malgré le satisfecit que s'auto-décernait le représentant du Fonds stratégique d'investissement pour l'accompagnement financier des PME (Vallourec, Carbone Lorraine, Daher, DailyMotion — un hapax ? —, Nexans, Gemalto, 3S Photonics, Limagrain, Daher, Valeo...), il y aurait beaucoup à dire sur la déshérence du capital-investissement early stage pour l'innovation en France.

 



Alors ? Alors, il reste l'énergie inépuisable et rafraîchissante des dix huit startups qui, faisant fi du contexte récessif spécifique, portaient haut et fort leur inaltérable confiance en elles. Nous vîmes sur scène, venues de toute l'Europe, leurs vaillantes équipes appliquer avec plus ou moins de bonheur — mais toujours avec sincérité et fraîcheur — les principes de The Art of Start commentés par Guy Kawasaki en début de matinée. Quel que soient leurs sorts ultérieur et leurs parcours d'entreperise, les jeunes pousses Acumatica, Artesian, Captain Dash, HRLocker, Kobojo, MoneyDashboard, No Excuse Accounting, ProtectedNetworks.com, Red Carpet, Restopolitan, Sharpcloud, Siondo, Sones, Sopima, Sordu, Threeplicate, Time Cockpit, Tooio et les autres du programme BizSpark et IDEES témoignent de la vivacité de l'esprit d'entreprise en France et en Europe et de leur ténacité à surmonter les difficultés.



ShareThis