Salut à tous,
J'espère que ce compte-rendu servira à la fois à orienter notre travail courant et donner un exemple à nos nouvelles recrues (je pense à toi Alex ;-)) de ce que la participation à une conférence apporte au processus de recherche académique. Pour résumer en une ligne, on a plein d'opportunités de collaboration et mon système est utile!
Pour résumer en deux paragraphes, le plus gros retour sur investissement de cette conférence est la liste des collaborations et utilisateurs potentiels pour mon système:
1. Peter Thiemann, prof en Allemagne à l'Université de Freiburg est intéressé à utiliser Photon pour vérifier des propriétés de sécurité sur les programmes en interceptant toutes les opérations du modèle objet. Il est intéressé à ce que je vienne passer quelques semaines dans son lab pour collaborer, encore plus si j'arrive avec mon propre financement. 2. Martin Bodin à l'INRIA est en train de formaliser la sémantique de JavaScript dans Coq avec l'objectif d'être aussi près de la spécification officielle que possible. Cela va lui servir à prouver des propriétés sur des analyses qu'il concevra éventuellement. Bien qu'une collaboration directe n'était pas évidente, nous allons rester en contact. 3. Le email de Vineet Rajani, étudiant en Allemagne, m'a été référé. Celui-ci aurait besoin de pouvoir instrumenter à l'exécution une VM JavaScript pour vérifier la préservation de secrets. Je vais le contacter dans les prochaines semaines pour clarifier le tout. 4. Lorenz Breidenbach, étudiant sous-gradué en 3e année à ETH Zurich et actuellement en échange à Imperial College à Londre a également besoin d'instrumenter JavaScript pour vérifier tous les accès à l'environnement dynamique (scope chain) pour valider avec des programmes de test qu'aucun contre-exemple n'est trouvé sur les propriétés qu'il cherche à prouver. Une collaboration à l'été, après ses cours et les miens, est envisageable. Il sera alors de retour à ETH. Il pense continuer à la maîtrise alors c'est une collaboration qui à un peu plus long terme pourrait donner des fruits.
L'idée plus générale c'est que beaucoup de travail de nature théorique est en cours sur JavaScript. Cependant, les gens ont besoin d'instrumenter les VMs pour valider empiriquement ou pour développer certaines propriétés/transformations. On a le potentiel d'être beaucoup plus efficace à faire l'implémentation qu'eux donc une collaboration est naturelle, puisque nos travaux sont complémentaires. Ça ouvre la porte à plusieurs publications relativement faciles comme 2e ou 3e auteur en autant qu'on participe au travail de vérification empirique. De plus, ça va informer les cas d'utilisation que j'utiliserai pour mes propres publications comme auteur principal. Je pense donc continuer d'aller à POPL, les opportunités de collaboration me semblent plus abondantes là qu'à SPLASH ou PLDI.
Pour les gens intéressés, voici donc la version longue et narrative de ma participation à la conférence de la semaine dernière. Je pense la traduire en anglais pour donner du feedback aux organisateurs et aux donateurs qui ont rendu l'évènement possible, en particulier pour le Programming Language Mentoring Workshop. S'il y a des choses propres au lab que vous préfériez voir omise de la version anglaise, dîtes-le moi.
Erick
~~~~~~~~~~~~~~~~~~~~~~~~~
La dernière semaine fut extrêmement stimulante et profitable. Mon objectif initial de participation était d'avoir l'occasion d'interagir avec des mentors en dehors de notre groupe pour avoir une perspective plus large de la recherche académique. Mon second objectif était de me pratiquer à présenter mon travail, à la fois pour devenir plus habile et efficace à le faire et pour obtenir de la rétroaction sur le travail réalisé, complémentaire aux commentaires que j'ai déjà reçu de Marc et Bruno. Après une semaine, je dois dire que mon besoin de mentorat était moins fort qu'initialement et que j'ai obtenu plus de feedback que j'aurais imaginé au départ! Je veux vous présenter à la fois les points marquants de la dernière semaine et m'assurer de laisser une trace écrite de cette participation.
Pour mettre les choses en perspective, il s'agit de ma quatrième participation à une conférence académique de premier niveau. J'ai assisté à OOPSLA 2007 [1] à Montréal (maintenant SPLASH), PLDI 2010[2], SPLASH 2011 [4] et maintenant c'était POPL 2013 [3]. Ces trois conférences sont organisées par SIGPLAN [5], un groupe d'intérêt de l'ACM, qui cherche à faire avancer le développement technique de technologies liées aux langages de programmation. Mes deux premières participations furent à titre d'observateur. La troisième comme co-auteur avec Maxime de notre travail sur Tachyon (Maxime avait fait la présentation) et la dernière comme participant, avec deux présentations, d'une et de 10 minutes sur mon travail de maîtrise, où je peux dire pour la première fois que j'ai des contributions originales. De manière plus générale, on peut dire que je passe progressivement de "consommateur" à "producteur d'idées" et que la satisfaction que je retire de mes participations évolue en parallèle.
Pour la deuxième année cette année, les organisateurs de POPL proposent un atelier d'une journée à des étudiants sous-gradués et gradués l'expérience d'une conférence de premier niveau et de l'interaction avec la communauté de chercheurs. Cet atelier se nomme Programming Language Mentoring Workshop, PLMW. Je n'ai pas les chiffres exacts mais nous étions potentiellement plus de 100 étudiants à y participer, principalement des États-unis et de l'Europe, avec quelques fiers représentants canadiens de McGill et de l'UdeM (moi!). La majorité des étudiants étaient sous-gradués, plusieurs en avant-dernière année de leur programme de Bacc (il se trouve que le Royaume-Uni, l'Europe, les États-Unis et le Canada ont des systèmes d'éducation différents et les gens ne rentrent pas au doctorat au même moment, alors j'ai choisi de calculer à partir du moment où les gens entrent au doctorat). Fait intéressant, j'ai l'impression que le nombre de filles ayant participé était plus élevé que leur représentation aux études graduées en informatique et j'aurais tendance à croire que c'était délibéré de la part des organisateurs. J'ai personnellement trouvé que ça a rééquilibré un problème de notre domaine et ça a rendu l'expérience plus intéressante.
À proprement parler, PLMW a lieu la deuxième journée de la conférence mais les participants sont invités à participer à l'ensemble de la conférence. La première journée nous avons donc eu droit au TutorialFest, qui a pour objectif d'amener les participants à comprendre un sujet particulier. L'offre comprenait une présentation sur un modèle de programmation concurrente à mémoire partagée sur les processeurs modernes, qui surprenamment peuvent exhiber des incohérences dans les accès mémoires pour offrir de meilleures performances. Le modèle proposé abstrait et formalise le comportement légèrement différents de ces processeurs. Une deuxième présentation a survolé l'évolution et l'état de l'art sur la vérification automatique de terminaison de programmes. La partie excitante de cet atelier est que l'état de l'art commence à s'appliquer à un sous-ensemble intéressant de langages répandus (C, Java et Haskell). Une troisième présentation a montré un usage avancé de Coq, un assistant à la preuve interactif, permettant d'abstraire des patrons réguliers. L'exemple s'appliquait à la sémantique d'un langage de programmation jouet. Je vous réfère au reste du programme pour plus de détails [15]. Ces présentations furent intéressantes mais vous devez garder en tête qu'un "tutoriel" dans cet atelier c'est en fait une présentation magistrale et non un laboratoire interactif.
En parallèle aux présentations, j'ai eu l'occasion de connaître plusieurs étudiants. Mon co-chambreur est portugais et travaille sur la complexité Kolmogorovienne, qui décrit les ressources minimales nécessaires pour représenter un objet à l'intérieur d'un ordinateur. Son travaille de maîtrise consiste à spécifier un sous-ensemble "intéressant" des objets à représenter pour une définition "d'intéressant" qu'il reste à clarifier. Il se trouve qu'en plus d'être jovial, intéressé et surprenamment bon vulgarisateur, il avait également une propension à ronfler suffisamment pour réveiller un éléphant. Je vous conseille d'apporter des bouchons pour éviter certains désagréments potentiels du partage de chambre, si vous décidez de participer dans le futur. Un de mes meilleurs "nouveaux amis", Adhitya, est indien et fait sa maîtrise à Georgia Institute of Technology sur la programmation système. J'ai également rencontré, Heidi, étudiante à Cambridge dans le lab qui a créé le Raspberry Pi. En plus d'être éloquente et vraiment brillante (elle a joint le lab en deuxième année de bacc), elle est en plus un exemple flamboyant de l'importance d'intégrer les roux dans la communauté de recherche. Parlant de roux, j'ai également rencontré Thomas, un autre roux, allemand cette fois, qui est actuellement en questionnement à savoir s'il veut faire un PhD. Selon lui et son collègue Mattias, le système allemand de financement à la recherche, davantage orienté vers des projets que vers les individus, rend difficile le bootstrap d'une carrière en recherche. Voici une photo de la communauté rousse:
La deuxième journée, à PLMW, nous avons eu droit à un mélange de présentations techniques et générales sur une carrière en recherche. La première présentation, de Peter O'Hearn, fut très intéressante et touchait l'analyse statique de programmes pour déterminer des classes d'erreurs fréquentes. Elle contenait une rétrospective de l'évolution du domaine dans les 10-15 dernières années, de ses premières applications à la détection d'erreurs dans des pilotes de bas niveau sur windows à la mise à l'échelle à des plus gros programmes. C'était vraiment excitant de voir comment l'évolution du domaine rend possible l'application des techniques à un nombre grandissant d'application dans le "vrai monde". Elle contenait également une présentation intuitive de l'interprétation abstraite qui ne requérait pratiquement aucune math et constitue à ce jour la meilleure introduction que j'ai eu [14].
La deuxième présentation fut introduite par Philippa Gardner, qui a mis l'emphase sur l'importance de la communauté de POPL et du plaisir qu'elle a de revoir des collègues, année après année, avec qui elle a eu l'occasion de travailler dans le passé. Elle a présenté son collègue Davide Sangiorgi en disant: "we mate... (!) euh met [sic] while ...". J'en ai conclu soit que l'excitation l'a fait fourcher de la langue ou que les liens dans la communauté de POPL sont plus étroits que j'aurais anticipé. Cette deuxième présentation a porté sur le raisonnement formel sur des systèmes concurrents, à plusieurs processus.
Les deux présentations de cette première session furent les plus intéressantes pour quelqu'un qui n'était pas familier avec le domaine. Pour le reste de la journée, les présentations de Matt Might, Jan Vitek et Phil Wadler m'ont le plus intéressé. Matt, principalement connu pour son travail sur les analyses statiques, a parlé de sa conception du processus de la recherche, a donné des conseils sur la façon de réussir son PhD, a discuté de la place inhérente de l'échec dans l'émergence d'idées intéressantes et a placé le tout dans le contexte de devenir un professeur d'université. J'ai été un peu déçu qu'il n'aborde pas la question de ce que les gens avec un PhD qui ne deviennent pas prof font.
Jan Vitek, récemment connu pour son travail sur les aspects dynamiques de JavaScript, a partagé ses réflexions sur ses projets de recherche des 20 dernières années [6]. Il a abordé l'impact des différents projets et a discuté de nombreux buts non-accomplis, comparés aux objectifs proposés dans les demandes de financement. Le thème récurrent semble être l'échec à atteindre les objectifs initiaux, qui semblait être corrélé avec l'ambition du projet de recherche. Il a évalué l'importance de son travail par la reconnaissance des articles publiés et les positions occupées par ses anciens étudiants, en laissant l'auditoire décider si cela était un échec ou une réussite. Jan a terminé sa présentation avec un commentaire extrêmement audacieux vu l'audience, suggérant que la communauté se penche sur ce que les programmeurs font dans le "vrai monde" et que ceux-ci utilisent des langages dynamiques non-typés (!). Il y a eu un certain inconfort dans l'assistance et un applaudissement embryonnaire lorsque le second présentateur, Robert Spencer a exprimé son opinion que le typage dynamique est un cas particulier du typage. Cet échange fut une belle illustration des controverses et tensions entre différents points de vue concurrents à l'intérieur d'une communauté de chercheurs.
Phil Wadler, connu pour son travail sur Haskell et les Monads, a donné une présentation sur la façon de vivre sa vie, grandement inspirée d'une présentation de Richard Hamming, You and Your Research [7]. Intéressante synchronicité, Vincent Foley, qui a été stagiaire avec nous l'été dernier, m'avait envoyé un enregistrement vidéo de cette présentation dans un cours que Phil donne [8]. Il est encore plus coloré en personne et a tenu à rendre l'interprétation des passages de sa présentation selon l'accent de l'auteur original, tout en étant particulièrement emphatique (lire crier de manière un peu aléatoire de temps à autre). Dans la deuxième partie de sa présentation, il a répété et mis l'emphase sur l'importance de s'exprimer clairement en nous faisant promettre qu'on acheterait tous "The Elements of Style" [9]. Dans la période de question, il a conseillé à ceux pour qui l'anglais est une langue seconde de faire relire leur publication par quelqu'un pour qui l'anglais est leur langue première.
Entre deux présentations, en discustant avec mon voisin italien, Daniele, j'ai appris que son groupe construisait une sémantique formelle pour JavaScript dans Coq dont l'objectif est d'être aussi près que possible de la spécification officielle. L'objectif final est de pouvoir faire des preuves sur les algorithmes d'analyse qui seront développés. En discutant avec son collègue qui fait le gros du travail d'encodage, Martin, nous avons partagé certaines anecdotes sur la complexité de la sémantique de JavaScript et comparé leur travail à lambdaJS [11].
Suite aux présentations de l'atelier, nous sommes passés au vin d'honneur et les participants s'étant inscrit pour le One-Minute Madness se sont placés en ligne pour plus de 90 minutes de topos d'une minute qui ont couvert toutes sortes de sujets. La qualité de préparation allait d'inexistante à élaborée et le style de formel à marketing télévisé, avec pour constante que l'immense majorité des présentateurs a respecté la règle d'une minute, donnant un rythme très intéressant à l'ensemble de la session. L'objectif était de faciliter la diffusion des intérêts des participants et l'établissement de premiers contacts avec d'autres participants. Lorenz Breidenbach a gracieusement pris des photos de tous les présentateurs et nous les a envoyées:
Peter Thiemann, professeur à l'université de Freiburg et responsable des transitions du diaporama, est venu me voir pendant le vin d'honneur par la suite pour voir si mon système pouvait s'appliquer à la vérification d'invariants de sécurité dans l'accès de propriété d'object pendant l'exécution. Ma page personnelle [12] lui a permis de connaître le nom de mon directeur de recherche, Marc Feeley, avec qui il avait eu l'occasion d'échanger il y a plusieurs années à ICFP [13]. J'étais tellement excité que quelqu'un s'intéresse à mon travail que j'ai eu de la difficulté à donner une attention suffisante aux explications de Peter et je l'ai probablement fait répéter à deux ou trois reprises les mêmes choses. La discussion a duré 15-30 minutes et s'est conclue sur ma promesse de le recontacter par email pour discuster d'opportunités de collaboration.
En soirée, après le vin d'honneur, je suis sorti dîner et socialiser avec d'autres étudiants. Le reste de la semaine fut entrelacée de présentations, de connexions au dîner, au souper et en soirée, parfois plus tard que ce qui aurait été raisonnable.
Le lendemain, la conférence principale POPL a démarrée pour 3 jours. Dans mon cas, plusieurs présentations utilisaient un formalisme que j'avais beaucoup de difficulté à suivre et le rythme rapide de certaines présentations et leur focus sur le formalisme m'a empêché d'atteindre le coeur des idées présentées. J'ai réalisé dans les trois jours qui ont suivi que j'ai retiré beaucoup plus de l'interaction avec les participants à la conférence dans les lunchs et évènements sociaux que dans le cadre des présentations elles-mêmes. Entre autres, j'ai obtenu le email du collègue d'un de mes voisins de table, Vineet Rajani, qui serait probablement intéressé par mon système. J'ai également établi un contact initial avec un étudiant à ETH, Lorenz Breidenbach, actuellement en échange à Imperial College à Londre, qui serait intéressé à utiliser un système comme le mien qui réifierait l'environnement en JavaScript. Après avoir échangé nos contraintes respectives de travaux et autres, on a pu établir que le début de l'été serait un bon moment pour en reparler et la fin de l'été pour se rencontrer pour une collaboration potentielle.
Le vendredi, après avoir survolé certains articles écrits par le groupe de Peter Thiemann et réalisé qu'ils avaient tenté quelquechose de similaire à mon système dans le passé, j'ai dîné en sa compagnie pour comprendre les problèmes qu'ils avaient rencontrés, les motivant à changer d'approche. Ça m'a fait réalisé que j'avais potentiellement des solutions techniques pour les adresser mais qu'il me restait du travail à faire pour le valider. J'ai ensuite proposé à Peter de visiter son groupe vers la fin de l'été en août pour faciliter les échanges et il était enthousiaste. Il me reste à valider avec Marc et Bruno ce qu'eux en pense et le financement que j'aurais de disponible pour le faire. Je profiterais de l'occasion de cet autre voyage en Europe pour passer quelques jours à Zurich pour travailler avec Lorenz.
L'opportunité principale que je vois pour notre groupe, qui a un focus sur l'implémentation de systèmes, c'est qu'en devenant particulièrement efficace à le faire, on pourrait construire de l'infrastructure pour le reste des chercheurs, en particulier ceux dont les intérêts principaux sont sur la théorie. Mon survol de certain articles de POPL m'a fait réalisé que l'implémentation des systèmes semble être nécessaire mais de seconde classe dans plusieurs d'entre eux. Je pense qu'on devrait donc continuer de participer à POPL.
La deuxième réalisation c'est que JavaScript est encore un sujet chaud et plusieurs groupe travaillent dessus avec diverses approches. Cela ouvre de nombreuses opportunités de collaboration lorsque les approches sont complémentaires. C'est donc le moment d'en profiter, en gardant en tête que la vague va diminuer éventuellement.
Il y a beaucoup d'autre choses à dire mais cela me semble les points principaux en rapport avec nos activités et ça me semble donner un point de vue intéressant sur le déroulement d'une participation à une conférence qui a débouché sur des opportunités de collaboration futures.
Erick
[1] OOPSLA: Object-Oriented Programming, Systems, Languages and Applications [2] PLDI: Programming Language Design and Application [3] POPL: Principles Of Programming Languages [4] SPLASH: Systems, Programming, Languages and Applications: Software for Humanity [5] SIGPLAN: Special Interest Group on Programming Languages [6] http://www.doc.ic.ac.uk/~gds/PLMW/PLMPV_PD.pdf http://www.doc.ic.ac.uk/%7Egds/PLMW/PLMPV_PD.pdf [7] http://www.cs.virginia.edu/~robins/YouAndYourResearch.html http://www.cs.virginia.edu/%7Erobins/YouAndYourResearch.html [8] http://www.youtube.com/watch?v=uOsMt-vrWQ4&list=PL395B50FC04752DA8&i... http://www.youtube.com/watch?v=uOsMt-vrWQ4&list=PL395B50FC04752DA8&index=20 [9] The Elements of Style, Strunk and White [10] http://www.informatik.uni-freiburg.de/~thiemann/ http://www.informatik.uni-freiburg.de/%7Ethiemann/ [11] The essence of javascript, http://dl.acm.org/citation.cfm?id=1883988 [12] http://ericklavoie.com [13] ICFP: International Conference on Functional Programming [14] http://www.cs.ucl.ac.uk/staff/p.ohearn/Talks/POPL12tutorial.pdf [15] http://wrigstad.com/popl13/tutorialfest.html