mardi, avril 09, 2013

L'approche radicaliste de l'architecture des applications Web : l'assembleur

Un grand quotidien du soir s'alarmait dans ses colonnes, pourtant rarement ouvertes à la technique, du blocage des cookies tiers par défaut de la nouvelle version du navigateur Web de Mozilla, Firefox 22. Les zélateurs de la publicité ciblée font assaut de promptitude pour faire entendre leur voix. Après Google, fossoyeur de la presse écrite, Apple pourfendeur de la gratuité peccamineuse offerte par nos startups nationales dans le mobile, Mozilla, éradicateur de nos publicitaires culturellement exceptionnels ? Faut-il donc laisser le Web aux mains de quelques architectes programmeurs dont le radicalisme se fait entendre avec une certaine insistance ces derniers temps ?

 

Pour cantonner la réflexion au plan technique, quelques initiatives notables visent aujourd'hui à une redéfinition, à vrai dire plutôt une définition, de l'API du Web. Qu'est-ce à dire  ?

 

Il est utile de rappeler que le Web n'a pas été initialement créé par des programmeurs pour des programmeurs. Aussi surprenant que cela puisse paraître aux yeux de la Génération Y, la « récupération » du Web par les entreprises comme territoire d'expansion est une opération de grande ampleur mais somme toute récente. Cette guerre de prédation primitive qui ne dit pas son nom est à l'origine de certaines des tensions aujourd'hui sensibles dans l'analyse du développement du Net : neutralité, sécurité, accès et contrôle sociétal, données et statistiques, propriété et Open Source, sont tous des sujets qui ont largement débordé des marches de l'empire des directions informatiques d'entreprise pour envahir la discussion globale du Web.

 

Dans un billet récent (#), John Resig, le démiurge du toolkit Javascript JQuery, succès fulgurant chez les développeurs d'applications Web, tresse des louanges que cette auréole JQuery revêt d'une qualité semi-divine à asm.js (#). C'est un projet de la fondation Mozilla visant à une spécification d'un langage assembleur pour les applications Web à partir du langage script Javascript, la lingua franca actuelle des programmeurs Web.

 

Faut-il rappeler à nos jeunes lecteurs que l'assembleur est un séducteur faustien qui apparaît dans la splendeur de la beauté du Diable. Il compense l'expression aride de ses phonèmes gutturaux par une performance d'exécution inégalée : sa proximité concupiscente des instructions machines du hardware emporte ainsi toutes les préventions linguistiques. Prenons, par exemple, ce court fragment de code source assembleur :

 

020252,000178: 35,2000                                          SETLOC   CSI/CDH
020253,000179: 35,2000                                          BANK
020254,000180: 35,2000  E4,1770                                 EBANK=   SUBEXIT
020255,000181: 35,2000                                          COUNT    35/P3474
020256,000182:
020257,000183: 35,2000           04627        P34               TC       AVFLAGA
020258,000184: 35,2001           02003                          TC       P34/P74A
020259,000185: 35,2002           04642        P74               TC       AVFLAGP
020260,000186: 35,2003           04647        P34/P74A          TC       P20FLGON                              #  SET UPDATFLG, TRACKFLG

Même aux âmes les plus rébarbatives cet extrait insufflera une poésie musicale ineffable, et c'est miraculeusement ce même code qui mit en 1969 deux hommes sur la lune (#). Que l'invention géniale du stored program de Von Neumann retrouve à l'ère du Web toute sa portée conceptuelle est une joie toute pascalienne !

 

Car, comme l'indique Resig, un nouveau clan — un Clang pourrait-on dire — d'applications Javascript s'apprête à déferler sur le Web, signant le grand retour du Compilateur. On connaissait le retour en grâce, modeste néanmoins jusqu'à présent, du compilateur dans les navigateurs Web. Ces compilateurs Just In Time (JIT), comme IonMonkey (#) de Mozilla, utilisent les techniques éprouvées de l'indien Sioux en flairant des traces d'exécution des langages dynamiques laissées dans leurs interpréteurs (#) pour optimiser l'exécution ultérieure. Cette compilation JIT n'est pas propre au Web ; elle s'applique tout autant à Javascript qu'à d'autres langages populaires comme Python et qu'à des langages intermédiaires pour machines virtuelles comme CIL chez Microsoft ou le bytecode Java lui-même. Mais dans le cas présent, nous parlons bien du retour de Compilateur Khan, de l'idée pure et essentielle de recompiler des applications classiques et historiques, laborieusement écrites en C et C++ par les vétérans aux catogans grisonnants, vers Javascript, ramenant de facto le navigateur au rang d'environnement runtime.

 

Pour réussir ce retour en force, ces applications C/C++ traversent une nouvelle chaîne de compilation et de génération de code dont les développements, ces dernièes années, ont réussi à laisser quelque peu dans l'ombre le précurseur irrédentiste GNU. Les compilateurs paramétrables LLVM (#), habillés de frontaux comme CLang (#), qui nous avaient déjà esbaudis dans cette chronique (#), produisent un bytecode générique ouvert, que l'extraordinaire Emscripten (#) peut à son tour compiler en Javascript — et faire tourner ainsi sur le client dans le navigateur Web comme sur le serveur avec, par exemple, node.js (#), lui aussi initiateur d'un véritable écosystème Javascript pour le cloud. Dans le cas d'émerveillement évangélisé par Resig, la compilation produit un sous-ensemble de Javascript, appelé asm.js et présenté comme « l'assembleur » des applications Web.

 

Par conception, asm.js est de fonctionnalité limitée, un compromis accepté en échange d'une exécution ultra-rapide. La proximité d'asm.js avec les instructions machines permet en effet — et c'est l'idée directrice de Mozilla — au compilateur JIT Javascript embarqué dans le navigateur de reconnaître du code asm.js et de le passer, pratiquement sans transformation supplémentaire, à l'assembleur machine correspondant.

 

Bien sûr, les poètes d'entre nous ne trouveront peut-être pas dans asm.js :

 

function Vb(d) {
  d = d | 0;
  var e = 0, f = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0,
    o = 0, p = 0, q = 0, r = 0, s = 0;
  e = i;
  i = i + 12 | 0;
  f = e | 0;
  h = d + 12 | 0;
  j = c[h >> 2] | 0;
  if ((j | 0) > 0) {
    c[h >> 2] = 0;
    k = 0
  } else {
    k = j
  }
  j = d + 24 | 0;
  if ((c[j >> 2] | 0) > 0) {
    c[j >> 2] = 0
  }
  l = d + 28 | 0;
  c[l >> 2] = 0;
  c[l + 4 >> 2] = 0;
  l = (c[1384465] | 0) + 3 | 0;
  do {
    if (l >>> 0 < 26) {
      if ((4980736 >>> (l >>> 0) & 1 | 0) == 0) {
      break
    }

le même impair si soluble dans l'air qu'exhale un authentique assembleur S/370 transpirant le cambouis et l'huile de vidange :

 

//IEFBR14  JOB CLASS=A,MSGCLASS=A,RESTART=ASMF
//*--------------------------------------------------------------------
//IEHPROGM EXEC PGM=IEHPROGM
//SYSPRINT  DD SYSOUT=*
//MVS3380   DD UNIT=3380,VOL=SER=MVS809,DISP=SHR
//SYSIN     DD *
 SCRATCH DSNAME=JMM.S370ASM.LOAD,VOL=3380=MVS809
 UNCATLG DSNAME=JMM.S370ASM.LOAD
//*--------------------------------------------------------------------
//ALLOC    EXEC PGM=IEFBR14
//LOAD      DD DSN=JMM.S370ASM.LOAD,
//             UNIT=3380,VOL=SER=MVS809,
//             SPACE=(CYL,(20,0,15)),
//             DCB=(RECFM=U,BLKSIZE=32760),
//             DISP=(,CATLG)
//*--------------------------------------------------------------------
//ASMF     EXEC PGM=IFOX00,REGION=2048K
//SYSLIB    DD DSN=SYS1.AMODGEN,DISP=SHR
//          DD DSN=SYS1.AMACLIB,DISP=SHR
//SYSUT1    DD DISP=(NEW,DELETE),SPACE=(1700,(900,100)),UNIT=SYSDA
//SYSUT2    DD DISP=(NEW,DELETE),SPACE=(1700,(600,100)),UNIT=SYSDA
//SYSUT3    DD DISP=(NEW,DELETE),SPACE=(1700,(600,100)),UNIT=SYSDA
//SYSPRINT  DD SYSOUT=*
//SYSPUNCH  DD DSN=&&OBJ,UNIT=SYSDA,SPACE=(CYL,1),DISP=(,PASS)
//SYSIN     DD *
IEFBR14  CSECT ,
         SLR   15,15
         BR    14
         END   ,
//*-------------------------------------------------------------------
//LKED     EXEC PGM=IEWL,
//             COND=(5,LT,ASMF),
//             PARM='LIST,MAP,XREF,LET,NCAL,RENT'
//SYSPRINT  DD SYSOUT=*
//SYSLMOD   DD DSN=JMM.S370ASM.LOAD,DISP=SHR
//* SLIB    DD DSN=SYS1.LINKLIB,DISP=SHR
//SYSUT1    DD UNIT=SYSDA,SPACE=(TRK,(5,5))
//SYSLIN    DD DSN=&&OBJ,DISP=(OLD,DELETE)
//          DD *
 NAME IEFBR14(R)
//*-------------------------------------------------------------------
//IEFBR14  EXEC PGM=IEFBR14
//STEPLIB   DD DSN=JMM.S370ASM.LOAD,DISP=SHR

mais impossible de mettre en doute l'efficacité du code engendré. Au point que l'éditeur de jeux Epic a réussi le tour de force de porter son moteur de jeux Unreal Engine 3 vers asm.js (#) et à faire tourner les jeux les plus consommateurs de ressources dans le navigateur Firefox et sous WebGL, un rendering pas particulièrement connu pour sa vélocité !

 

Tout ceci ne va pourtant pas sans chagriner quelques gardiens du temple de la Compilation éclairée (#). Pointant en particulier le fait que les compilateurs Javascript modernes sont déjà des fusées à plusieurs étages d'optimisation, comme Crankshaft dans V8 (#) chez Google, l'idée de réduire Javascript à un sous-ensemble n'est-elle pas contradictoire avec celle, devenue presque courante aujourd'hui, de créer plutôt des surensembles de Javascript, bénéficiant de l'empilement d'optimisations de ces compilateurs JIT. (Que l'on pense par exemple à TypeScript (#), CoffeeScript (#), voire à Dart (#), Script# (#) et autre espèces du bestiaire (#) scriptural.)

 

Mais bien plus, arguent ces Quirites contemporains, asm.js ne fait que porter le masque de Javascript. Il ne serait qu'un bytecode vulgum pecus paradant sur les voies impériales et menant ultimement à la confusion des genres. À cacher un bytecode dans un langage de haut niveau, ne court-on pas à la « pollution » du langage de haut niveau de features pertinents pour le seul bytecode de plus bas niveau ? Ce mariage morganatique est-il donc si fâcheux ?

 

Le débat sur l'approche radicaliste de l'architecture Web ne fait que s'ouvrir.

 

lundi, avril 01, 2013

Big Dataxe

Après le rapport sur la fiscalité du secteur numérique, remis le 18 janvier dernier par les homophones Conseiller d'Etat Pierre Collin et Inspecteur des finances Nicolas Colin, le projet de préfiguration de la Loi de finances 2014 promet de s'attaquer aux « graves conséquences pour l'économie nationale de l'inadaptation du cadre fiscal actuel ».

 

Le Président l'a répété dans sa récente interview sur France 2, il y a quelques jours : dans l'optique où les conditions matérielles déterminent les relations de production — notamment les technologies, les inventions et les formes de propriété, lesquelles déterminent à leur tour les formes de gouvernement, les lois, la culture et les principes moraux des organisations sociales — l'évolution quantitative des conditions matérielles conduit à des évolutions qualitatives. Ainsi le progrès technologique conduit à l'émergence des Big Data ; données qui, irriguant de plus en plus l'économie numérique, sont issues des utilisateurs ; elles ont une valeur de mieux en mieux documentée par le marché et ses observateurs, pour reprendre les conclusions du rapport Collin-Colin. (Dont la lecture de la version qui devrait être éditée chez Armand Colin confirme qu'aucun de ses euphoniques auteurs n'a oublié ses cours de matérialisme dialectique et historique.)

 

Si donc « les données valorisées dans l'économie sont majoritairement issues du "travail gratuit" de la multitude des utilisateurs d'applications », il est donc moralement justifié, au sens de Denis Collin cette fois, que la « restitution des données personnelles soit un "contre-modèle" à la fois protecteur des personnes et favorable à l'innovation ». Redistribuer aux masses ce qui est produit par les masses ou comme le disait Mao Tsé-toung — précurseur méconnu de MapReduce — « recueillir les idées des masses, les concentrer et les porter de nouveau aux masses, afin qu'elles les appliquent fermement, et parvenir ainsi à élaborer de justes idées pour le travail de direction : telle est la méthode fondamentale de direction. Les masses populaires sont dotées d'une force créatrice illimitée », c'est bien là le slogan des Amazon, Google, Facebook et autres Twitter. En revanche la primauté chirographaire de l'Etat impose évidemment le combat patriotique et national contre l'abandon de ces tâches essentielles de direction aux laquais du libéralisme économique et zélateurs du capitalisme sauvage précédemment cités.

 

C'est sur ces fondements socio-économiques immarcescibles que la Loi de finances 2014, en cours d'élaboration, devrait jeter les bases morales de la construction fiscale — dont le surnom Big Dataxe court déjà sur le WiFi du Ministère du redressement productif — dans la lutte contre « les effets de la rétractation de la matière imposable ». Collin et Colin, suivant en cela Collin, notent que « les modèles d'intermédiation, qui dominent l'économie numérique, vident la matière imposable de sa substance » donc que « les conséquences de l'inadaptation de la fiscalité sont dramatiques pour l'économie » — il doit s'agir de l'économie nationale, car apparemment ce serait plutôt le contraire outre-Atlantique. Il ne manque que le lyrisme du librettiste Paul Collin sur cette petite musique fiscale.

 

Pour être précis, les deux volets de la Big Dataxe concerneraient les sociétés, avec un aménagement de l'IS, et les particuliers avec des mesures visant l'IR et l'ISF. Les projections de rendement fiscal sont en cours au Ministère des finances qui mettent en oeuvre des simulations financières sur un cluster de l'infrastructure nationale de cloud computing Numergy (« sécurité, éco-responsabilité, simplicité et prix maîtrisé »). Cumulant le bénéfice de familiariser notre administration (que le monde entier nous envie) au Big Data, selon ces clodoaldiens d'obédience dataïstes, adouber Hadoop a doublé le doux padou dont on enrubannera ce paquet fiscal.

 

Pour l'instant seules les grandes lignes de code ont filtré des sources Pig de ces travaux préparatoires.

 

  • Le « choc d'immatérialité », qui pourrait prendre, dit-on de source parallèlement informée, la forme moins polémique et plus doucereuse d'un « pacte de virtualité », serait confié par mandat à la Caisse des données et configurations, une Haute autorité de la rue de l'Université — seul opérateur HDFS/HBase agréé. Sa mission, à vocation européenne (cf. les sept priorités adoptées par la Commission européenne le 18 décembre 2012 : « Initiatives Europe 2020, De la Chiers au Prout ») serait alors d'instrumenter globalement la perception sur tous les flux et sur les stocks de données. Elle disposerait, pour ses propres besoins, de ressources cloud computing souveraines classifiées.
  • Sociétés et particuliers paieraient donc une nouvelle taxe d'accise sur l'émission de données, personnelles ou privées, volontairement ou involontairement produites, dans le cadre dûment réaménagé de l'ordonnance n° 2009-80 du 22 janvier 2009 sur l'Offre au public de titres financiers. Les modalités font précisément l'objet des simulations actuelles du Ministère des finances ; les moyens à dégager pour les vérifications, encaissements et sanctions sont en discussion à Matignon mais, selon toute vraisemblance, ressortiraient à la technique de Freivalds.
  • Dès janvier 2014, chaque PC, smartphone, tablette et laptop vendu ou utilisé sur le territoire français devra être géolocalisé et équipé, sorti d'usine, de la version certifiée par l'ANSSI du code Green Dam Youth Escort Software aimablement fourni par les autorités chinoises — un compteur intelligent de données équipé d'un dispositif de coupure à distance (nom provisoire : Le Fisc est mon ami.).
  • En revanche et suivant la ligne directrice déjà établie par la Loi de finances 2013, il n'est plus question d'un éventuel prélèvement forfaitaire libératoire sur les dividendes des données riches. Les dividendes et intérêts produits par les données riches seront directement assujettis à la taxe de 75 % si ardemment défendue par le candidat et maintenant Président, dès qu'ils excèdent 1 mégaoctet annuellement.
  • Les données personnelles (quantified self) seraient déclaratives mais resteraient propriété de l'Etat qui confierait contractuellement, par le biais de son opérateur la Caisse des données et configurations, à des officines privées de métrologie, préférablement établies en Suisse et dirigées par des députés ou des ministres en exercice (amendement Cahuzac), les tâches d'échantillonnage et d'anonymisation avant restitution dans le cadre du programme national d'Open Data.
  • Les données privées entreraient de plain-pied dans la définition du patrimoine du foyer fiscal et, partant, dans l'assiette du calcul de l'ISF des particuliers. Les déclarations devront ainsi comporter la liste exacte de tous les médias de stockage, amovibles ou non, du foyer fiscal et de leurs contenus (formats et volumes). Un barême progressif applicable au-delà des premiers 1,3Mo, dès 800K selon les formats (binaire, texte, etc.) sera publié dans l'année sur le site bigdataxe.gouv.fr.
  • Pour les sociétés, la Loi de finances 2014 modifierait les règles de calcul de la quote-part de frais et charges dont sont redevables les entreprises soumises à l'impôt sur les sociétés lorsqu'elles réalisent des plus-values de cession de données, (matérialisées par des requêtes SQL, NoSQL, et XML/Json notamment). Chaque requête SQL (ou autre) sera soumise à une Autorisation administrative d'exécution qui déterminera les frais d'optimisation à régler sur une base trimestrielle.
  • De plus, au plan réseau social, les modèles UML et DTD exploités en France seront frappés d'un droit d'accise qui viendra en surcroît des charges réseaux-sociales et des droits de douane lorsque le modèle en exploitation provient d'un fournisseur étranger. De nouveaux moyens seront dégagés pour la lutte contre l'immigration clandestine de données ; les opérateurs de télécommunications seront tenus d'installer des pare-feux agréés par l'Etat sur tous leurs coeurs de réseaux.
  • Une dérogation confiscatoire serait possible, au titre des droits d'auteur dans le cadre (à vocation universelle) de l'exception culturelle française. Seraient ainsi surtaxés tous les médias susceptibles de transporter et de stocker, sous quelque forme et pour quelque durée que ce soit, des données électroniques artistiques de toute nature. En regard, un prix unique du mégaoctet culturel et un régime spécifique pour les intermittents de l'analytique prévaudrait sur tout le territoire national.
  • Les datacenters localisés en France pourraient être, de même, éligibles à une réduction fiscale dans la mesure où ils ouvriraient leur API et leur capital à la Caisse des données et configurations via le Fonds national pour l'intelligence numérique. En revanche aucun bouclier fiscal pour les entrepôts de données ni pour les routeurs n'est prévu.
  • Les opérations transactionnelles des ETL et de data cleansing feraient l'objet d'un enregistrement réglementaire et de l'acquittement de frais de formalité. Toute transformation de données deviendrait également assujettie à la TVA à 19,6 % (retenue à la source ou à l'exécutable selon les options envisagées).
  • Enfin au plan pénal, seraient créés des délits d'abus de bien des données, de recel et d'usage de données fausses ou fallacieuses, d'excès de vitesse de transport de données, de non-conformité à MERISE, et d'incitation à la discrimination des résultats de moteurs de recherche. La compression des données est illégale et punie d'amendes et de peines de prison. Les Autorité de contrôle prudentiel et Autorité de contrôle des marchés verraient leurs prérogatives étendues aux marchés de données (datamarts) et aux amodiations en droit minier (data mining).

Si le détail des mesures résultera des discussions à venir du projet de loi devant les assemblées, on constate néanmoins que le paquet fiscal envisagé pour 2014 illustre doctrine du gouvernement. Comme concluait le Président, dans cette entrevue télévisée allégorique du 28 mars, « Vous m'avez suffisamment interrogé pour savoir que j'ai toujours dit que ce serait difficile pendant deux ans... Pour tout le monde. Pour les plus riches, je pense que cela a été un effort qu'eux-mêmes ont regardé comme significatif, si j'en crois un certain nombre de déclarations. Reportez-vous à certains propos fracassants. Mais c'est plus dur, je l'ai dit, c'est plus dur ! Parce que qu'est-ce que j'avais comme solution quand j'arrive : laissez filer les données ? Etre sanctionné par les marchés ? Bruxelles ? Je m'y suis refusé. Parce que j'ai le sens de l'indépendance de mon pays, de la souveraineté ».

 

ShareThis