A l’occasion de la 10ème édition de la conférence ScalaDays, plus de 1100 personnes étaient présentes pendant 3 jours à Lausanne. En dehors de la conférence principale, cette semaine a aussi été l’occasion de pré-conférence et de post-conférence (comme le Typelevel Summit). Lunatech était présent comme exposant Platinium et comme Partenaire de Lightbend. Nous étions 25 personnes, dont 6 personnes du bureau Français.

La conférence se déroule à l’EPFL (Ecole Polytechnique Fédérale de Lausanne). Le campus, très américain dans l’esprit, est situé à la sortie de Lausanne. Dans le centre de conférence SwissTech Convention Center, magnifique bâtiment, l’espace est organisé entre une partie exposition, et une partie conférences avec différentes salles, similaire au format Devoxx.

Alors qu’avons-nous appris, quelles sont les nouvelles de la communauté Scala ? Que faut-il retenir de ces 3 jours ?

La conférence a démarré le mardi soir, avec une plénière par Martin Odersky (créateur de Scala et responsable de la recherche en programmation, à l’EPFL). Scala est un langage qui vise à intégrer 2 paradigmes de programmation. D’une part l’orienté objet, d’autre part la programmation fonctionnelle. Pour lui, ce sont 2 faces d’une pièce, et qui devraient être unifiés autant que possible (source).

Scala 3 est en phase de finalisation et sera disponible à la fin de cette année. Par rapport à Scala 2.13 / 2.14, un bon nombre d’ajouts (et aussi de retraits) visent à renforcer l’expressivité et la facilité d’utilisation du langage. Vous pourrez retrouver un résumé des nouveautés et de l’esprit de Scala 3 sur la page Overview de Dotty. Les diapositives de la présentation de Martin Odersky sont en ligne sur Slideshare.

Pour revenir à la conférence elle-même, elle célèbre sa 10ème édition. De 150 personnes à 1100 personnes, avec 20 exposants cette année. A titre personnel j’ai noté qu’il y avait très peu de Français présents à la conférence. Le public était majoritairement Européens. L’équipe d’organisations a aussi proposé un système de places offertes pour les communautés sous-représentées.

Ce mouvement, je l’ai déjà observé à Devoxx Belgique en 2018. A croire que les Français sortent peu, et ne viennent plus autant qu’avant, aux conférences en Anglais. Retour comme en 2008. C’est peut-être aussi du à l’existence de conférences en Français (comme Scala.IO ou Devoxx France). Ou alors, peut-être aussi au coût d’envoyer des développeurs à ce type de conférence.

Le programme cette année est assez ouvert.

  • Intéressé par les retours d’expériences sur l’enseignement de Scala, je suis allé voir Refactor all the things de Daniela Sfregola. Elle écrit actuellement « Get Programming with Scala » chez Manning. J’ai acheté ce livre, pour pouvoir découvrir son approche. Si vous cherchez une ressource pour apprendre le langage Scala par la pratique, c’est un bon livre. Si vous recherchez plus des explications sur le « pourquoi du comment », je vous recommande plutôt « Programming in Scala« .
  • Akka Streams to the Extreme par Heiko Seeberger. Si vous connaissez Akka Stream et que vous souhaitez aller plus loin, cette présentation est pour vous. Elle passe en revue les techniques avancées (mais relativement simple) que l’on peut mettre en place avec Akka Stream. Le code source est sur hseeberger/xtream et les slides sont ici.
  • sbt core concepts par Eugene Yokota. La présentation vise à expliquer la philosophie et les mécanismes sous-jacents de SBT. Il faut retenir surtout que les dernières versions de SBT (0.13.6 et 1.x) apportent un joli gain de performance (essayez, vous serez surpris). Je recommande la lecture du Reference Manual pour comprendre le fonctionnement de cet outil.
  • Si par contre votre base de code est énorme, vous serez certainement plus intéressé par Bazel, l’outil de build open-source proposé par Google. La présentation Building Scala with Bazel est un retour d’expérience de Natan Silnitsky de Wix.com. 250 développeurs, 10 millions de lignes de code, surtout en Scala, 750 micro-services… Bazel est un outil de build qui marche avec Maven, Ant, SBT ou autre. Il est écrit en Java. Le principe est de mettre un BUILDFILE dans chaque package, chaque répertoire de votre application. Ce Build file permet de construire un sous-ensemble de votre projet. Par exemple, toute la couche ORM ou votre modèle. Imaginez ensuite cela sur une grande base de code, avec plusieurs modules. Le tout est coordonné par Bazel. Il est pensé dès le départ pour faire des Builds répartis (aka sur plusieurs serveurs). Et il a un cache, qui prend un checksum de vos fichiers compilés, et de vos tests unitaires. Si votre collègue a déjà passé les tests unitaires pour un certain ensemble de fichiers, ils seront alors immédiatement en validé, lorsque vous passerez votre phase de test. Bon, cela revient à virtuellement partager un méga paquet d’informations… mais c’est assez étonnant. Sur une base de code qui compile en 20 minutes, avec maven, il montre une version qui compile en 8mn, puis en 2 secondes une fois que le cache est chaud. A tester pour les gros projets…
  • Scala best practices I wish someone’s told me about par Nicolas Rinaudo (cocorico un Français !) était aussi une très bonne présentation. La salle était d’ailleurs archi-complète. Le principe, vous le connaissez, est une série de Scala Puzzle. On vous montre un bout de code, vous pensez que le code fait quelque chose/que le code est correcte… et en fait non. Bam ! C’est ludique, sympa et cela permet d’apprendre des points intéressants. Nicolas a écrit un bon nombre d’articles, allez voir Scala Best Practices.
  • Nous avons aussi rencontré Sébastien Doeraene, le créateur de Scala.JS, à l’occasion de sa présentation Scala.js and WebAssembly, a tale of the dangers of the sea. Pourquoi coder en Scala alors qu’il est possible de coder en JS directement ? Chez Lunatech pour un de nos clients, nous travaillons avec Scala.js, avec scalajs-react et avec ScalaCSS. Cette approche permet de construire la partie Front en restant sur Scala. Elle apporte le typage fort (et l’auto-complétion) dans l’éditeur, permet de rester sur SBT pour la compilation, et facilite la courbe d’apprentissage pour des développeurs backend. Si vous voulez en savoir plus, je vous invite à regarder la présentation Scala.js, Scala.CSS et React, l’histoire d’une découverte par Maude Cahuet, Marc Gedik et Cédric Murer sur YouTube.
  • Côté Google nous avons eu la présentation Serverless Scala – Function as a SuperDuperMicroServices par Josh Suereth et James Ward. Les deux ont rejoint Google récemment. J’ai pu parler avec James, qui va prendre un rôle de Developer Advocate autour de la plateforme Google Cloud. La présentation était un mix de GraalVM, de ZIO, et d’Akka-HTTP, le tout sur du GCP. Cela permet de comprendre l’intérêt d’un démarrage instantané (coucou Quarkus) grâce à GraalVM. Le code source sera sur le Github de James Ward prochainement.
  • J’ai beaucoup aimé la Keynote du jeudi matin, Sustaining open source digital infrastructure par Bogdan Vasilescu. Toi qui fait un projet open-source : va voir cette présentation dès que la vidéo sera disponible. Bodgan présente différents projets de recherche menés à STRUDEL (Socio-Technical research using data excavation lab), de la Carnegie Mellon University. Par exemple, saviez-vous que les badges sociaux comme celui-ci: build success , que l’on trouve sur les pages Github, ont une influence démontrée sur la qualité du code source ? Par l’étude des commits, et de l’analyse simple, il explique comment et pourquoi certains projets deviennent populaires, d’autres non. Il parle aussi de diversité, que certaines femmes masquent leur identité avec un pseudo masculin, dans le but de ne pas être dérangé, tout en pouvant contribuer… Bref une grande balade autour de l’open-source, avec un oeil universitaire. A voir absolument !

Enfin pour terminer, un peu d’annonces aussi du côté de Lightbend, avec la sortie de Lightbend Pipelines. Nous allons évaluer cette solution prochainement dans le cadre du partenariat entre Lunatech et Lightbend. Non, ce n’est pas un produit open-source. En attendant, qu’est-ce que Pipelines peut faire pour vous ? Vous avez différents services à intégrer avec Spark, Kafka, Akka ? Le produit permet de coordonner et de créer des tuyaux de transformation de la data. Le tout avec Kubernetes. Passé la démonstration (qui était vraiment bien faite), on retrouve des principes de transformation, extraction et enrichissement des données, à l’aide de patterns venant directement des EIP (Enterprise Integration Pattern). Au passage, un peu de BPM pour définir la chaîne de valeur, le tout dans une belle console, et voilà.

La Community Party

Je ne peux pas passer sous silence la très belle soirée offerte aux participants… par Lunatech. Au sein du musée Olympique à Lausanne, avec une vue directe sur le Lac Léman, avec un groupe de Jazz… c’était vraiment un très bon moment. Fin de la publicité pour Lunatech, mais mince, c’était super bien !

… mais où sont les Français ?

J’ai trouvé que la communauté était vraiment dynamique, et plus importante qu’il y a deux ans, lors de mon dernier Scala Days à Copenhague. La présence d’éditeurs et de startups durant le salon (autour des crypto-monnaies et de la Data) contre-balance l’absence d’éditeurs comme Confluent, Elastic, Cloudera ou Databricks.

Encore une fois, peu de Français. Plus personne des cabinets de conseil de Paris. Certains se sont fait racheter, et du coup, il est peut-être plus difficile de participer à ce type de conférence (même comme orateur). Item pour les grosses SSII Françaises. Idem pour les clients finaux, complètement absent.

Dommage car c’est dans les couloirs, les rencontres et les discussions, que tout se fait. Il faut par contre viser Européen, et ne pas rester que sur le marché Français, qui n’est pas assez important pour l’instant, sur le langage Scala.

A suivre…