I had the chance to attend ScalaIO 2022 in Paris. This is my first in-person conference since FOSDEM 2019!

Although I haven’t coded in Scala for quite some time, I have been following Scala’s news from afar, as it is quite relevant to my field as well as a topic of personal interest. The conference was packed with tech talks, so I got to learn a great deal about the novelties, the ecosystem, and most importantly, the community’s mindset.

I won’t go into detailed explanations of the talks I attended: recordings will surely be available online by the time I post this. I’d rather share with you a high-level summary of what I learned, as well as my take on the topic!

Scala 3 & Caprese

I was quite looking forward to Martin Odersky’s opening keynote! As the inventor of Scala, he’s a familiar figure for all those who went through his MOOC on Coursera to learn the fundamentals of Functional Programming (FP) principles with Scala.

He spoke about the new version of Scala, Scala 3: a complete overhaul of the language aiming to simplify it further by making it cleaner and simpler (more on the topic of simplification in the next section). A potential downside of this overhaul is that Scala 3 will be backward incompatible. To all Spark users out there, even though it took two years to upgrade from Scala 2.12 to 2.13, we can hope that Scala 3 support is added faster, thanks to the interoperability between Scala 2.12 and Scala 3.

Martin Odersky also announced a new research program on Scala called “Caprese” funded by EPFL over the next 5 years. “Caprese” is an acronym for “Capabilities for Resources and Effects” (fun fact: searching for “Caprese Scala” on Google returned results on “the best Caprese salad in Scala, Italy”… guess the program hasn’t made headlines yet!).

As a motivation for this research program, he states that there are two areas where static typing has lagged:

  • Resources (such as regions of memory, file handles, database connections…)
  • Effects (such as updating variables, throwing exceptions, I/O, etc.)

He argues that resources and effects can be expressed as capabilities and that capabilities should be tracked in types! If successful, this program will lead to new exciting ways to combine both functional and imperative programming, instead of opposing them as we frequently do now.

I found his slides online, which I highly encourage you to go through as they are quite clear and give great examples on capabilities, as well as outline the project’s structure. Also, SoftwareMill published an insightful blogpost on the topic should you like to learn more!

Notable mention: Martin Odersky spoke about Project Loom, which aims to support a high-throughput, lightweight concurrency model in Java. Since Scala runs on the JVM, performance will be improved as a result of these changes.

Towards simplicity?

In my opinion, the most important topic discussed during the conference was the need, or rather the call, for simplicity in Scala.

Martin Odersky made the case for simpler Scala during the entire first part of his opening keynote:

  • He stated that even though Scala is deemed an easy language for even children to learn, the language is struggling to find adoption because of its reputation as “complex”: hard to find programmers, large codebases, and difficult tooling (e.g. sbt).
  • Why the complexity? Scala solves two hard challenges: strong typing and pure functional programming.
  • He argued that a portion of the Scala community is getting ideological about some non-FP concepts: in his opinion, rather than avoiding them, Scala developers should learn when and where they could be used to simplify their code (mutability can be useful, exceptions as well…).
  • He made the case for readability: while one-liners may sound tempting, writing 3 lines of code can make wonders for readability and understandability.
  • His tips to achieve simplicity: use Scala 3, detect hidden code complexity with -Vprofile, use easier CLI tools (such as Scala-CLI), initiate a Scala Toolkit for tools to get started.

The closing keynote by Adam Fraser of Ziverge (top contributor to ZIO) echoed Martin Odersky’s call for simplicity, and went a few steps further:

  • He challenged the audience’s perception of Scala being focused on high-level components that ease users’ capacity for problem-solving. In his opinion, Scala is way too focused on low-level components, such as its syntax and foundation, and has not yet provided a rich enough ecosystem to its users.
  • He compared Scala to Python in terms of libraries: as a result, Scala is nowhere near as rich as Python in terms of libraries that do the actual problem-solving, such as machine learning, facial recognition, web scraping…
  • He also argued that most users do not necessarily want or need to understand Scala’s implementation details: having to tackle Monads for a Computer Vision problem will get in the way of widespread adoption! Or, to quote another example, users should be able to define a web client without knowing anything about Functional Programming.

There’s a clear yearning for tooling and libraries in both their statements, as well as an urgent need to make Scala more practical. How can Scala evolve from a niche to a general-purpose programming language? As Adam Fraser said, the community will need to review and make better decisions on how they invest their time and effort!

Category theory

Throughout the day, most of the talks got quite technical, some with live coding and lengthy demos. While they must have been useful for fellow practitioners, I felt that slides full of code and IDE screenshares veered on the “WAY-TOO-MUCH-CODE” path for a casual practitioner like me.

Two talks stood out for me, thanks to their sparse use of code (my eyes thank you!) and their didactic approach:

  1. “Category theory as a tool of thought” by Daniel Beskin: he states that category theory can help to expand the idea space by generating new ideas/concepts mechanically. It was refreshing to rediscover calculus notions so central to Scala in such a visual and simple way.

  2. “Function reuse is just wishful thinking” by Nicolas Rinaudo: with the help of a real-life scenario, he re-introduced the concepts of Functor, Apply, Applicative, FlatMap, and Monad in a novel and intuitive way. Fundamental, and fun!

While I’m used to tech conferences being mainly populated with male attendees and speakers, I was struck by the relative absence of women speakers and attendees at ScalaIO 2022. I could count a handful of women besides me at the conference. And the lineup featured a single talk by a woman speaker: a lightning talk, therefore only 15-minutes long, and to make matters worse, it was scheduled during lunch break!!!

Please do not get me wrong, I am not blaming anybody here. With this observation, I’d like to shed the light once again on an issue dear to my heart: we need more representation and more diversity in tech, so that everyone can feel more included and heard.

To all women in tech, do register to attend conferences, there is much to learn! And to the ScalaIO organizers, kindly seek women speakers more proactively to help even out representation for next year.


As a wrap-up, thank you to the organizers for making this conference happen in person. It was great to reconnect with the language and the practitioners, in the hopes that I get onboard soon as well! Also, a big thank you to Ubisoft for supporting their employees in their quest for knowledge and betterment :)

-J.