In the footsteps of the Russian Scala movement. Part 1

This series of interviews is dedicated to ScalaConf - the first real conference in Russia devoted entirely to Scala, which will be held on November 26. Before this event, I interviewed 6 witnesses and “apostles” of the origin of the Scala movement in Russia. There will be no discussion of Free, Tagless Final, Monix, IO or ZIO, and the “kickback” of Future. My goal is to discuss Scala in a historical context. I wrote down all the bearded stories, drove back 10 years ago and collected irrelevant but interesting stories about the language.







The series was conceived in the format “The Days” of Parfyonov - events, people, phenomena. I was going to find those who ever organized meetings in Russia, collect information from them about everything important and interesting, sort it out and arrange it by year. Each interview began with the request that he set the year of the story as accurately as possible. But, the interviews turned out to be not what I expected and cutting their hands in the format “The other day” did not rise. Therefore, the series will tell stories in the form of a personal investigation. How it was, in what order, how I went out to people, and what I knew about them before the interview. Under the cut - interrogations and protocols, the first projects on Scala, the first mitaps and the birth of the movement.



What to expect from the investigation?



Many stories of a personal technology format that are somehow related to Scala. Most of them relate to 2011-2015, but even a little bit nevertheless managed to return someone's 2007 2008. The first projects and the reasons for choosing a language. About unsuccessful projects too! Libraries, ecosystem, IDE, the first mitaps in Moscow and St. Petersburg and that’s all. In general - a lot of things, even without Kotlin could not have done.



To formulate more holistic expectations, hereinafter we list the people we managed to communicate with: Roman Grebennikov , Roman Timushev , Alexander Podkhalyuzin , Vladimir Uspensky , Roman Elizarov , Alexey Fomkin and Nikolai Tatarinov .



Today I’ll tell you what they talked about with Roman Grebennikov and Roman Timushev.



Roman Grebennikov - 2011. Voronezh Beau monde and C ++ vs Erlang vs Scala



So, the first suspect to whom I went was Roman . I didn’t know much about him, but all the evidence indicated that he had been in the Scala theme for quite some time. When going to a Java conference wasn’t quite boring for me, I was at his talk . It simultaneously featured both Scala and Clojure, but with sufficient caution so as not to shock the audience. I also came across slides with sloppokami from the report " Scala performance for doubters ." The report is probably still the only one in Russian on this cool perfomance topic.



Having approximately described the concept of the article, I went to Roman to tell him about the old Scala movement.



Roman Grebennikov: To be honest, I never tried to follow the Scala movement in Russia, because it was too small compared to the foreign one. In 2014, in Voronezh, we had a chat room with the whole elite - 4 people in the whole city who knew how to Scala. What happened in Moscow and other cities, I have no idea :)



- Informative. According to the classics of the genre, in an interview I should ask about the first projects and acquaintance with the language.



Roman Grebennikov: Somewhere in 2011, I saw with my friends a startup, which, surprisingly, is alive and profitable so far. The startup was engaged in credit scoring based on public data from social networks. Prior to that, I wrote a dissertation with C ++ code and in parallel worked in a small hedge fund - I did all sorts of strategies and algorithmic trading in bare C ++. Not surprisingly, the first prototype data collection system was also written in C ++.



Then it turned out that C ++ is not an ideal language for tasks with asynchronism and distribution. At one fine moment of debugging a 20 GB coredump, after the next fall of our web spider, the idea crept into my head to choose a tool more suitable for our task and not to kick a dead horse. We looked at three replacement candidates: Erlang, Java, and Scala. We wrote three prototypes on my knee in order to fill the maximum number of cones in advance.



Erlang did not like the very small standard library and ecosystem around. For every one you need to bike a new library for basic things that are almost everywhere out of the box. Performance problems also interfered with living. In Java 2011, the spill did not like the gigantic amount of boilerplate that must be written for asynchronous applications. But in Scala, except for obscure monads and an alien scalaz, everything was fine with everything. Then Akka 2.0 was released, on which we rewrote everything. Surprisingly, pieces of that code work to this day, although in 2019 I would not boast about the quality of that code.



In the area of ​​those years, I was not the only one who wrote in Scala in Voronezh. For the sake of the fan, we sometimes arranged small meetings and told each other all kinds of strange things. Mitapas were open, and usually a bunch of javists came to them, who groaned and groaned at the sight of some kind of hell like parser combinators. Then there was a small chat room on Skype to discuss pressing issues and throwing on a fan. Now he’s completely dead, because Telegram has @scala_ru.



Roman Timushev - 2012. The first Akka, sbt-updates, and the birth of Moscow mitaps.



I have never been to Moscow Scala-meetings, but I heard about them in chat rooms and podcasts. Only one person was active around them - Alexey Fomkin . Therefore, I did not even think that someone else could carry them out. It was only by chance that I found out that there were still people when I was looking for information about the first mitap and leafing through the page on meetup.com . One of them is Roman Timushev , author of sbt-updates .



Roman Timushev: Come on in order. I am from Nizhny Novgorod, I lived in Moscow, and now I have moved to Munich. I entered Scala in 2012, when version 2.9 still existed, and only the first Akka. He worked at Grid Dynamics, where we worked on distributed systems, caches, mainly on the JVM.



There was an idea to create a new product. This is a startup within a company for managing distributed systems, deployment, updating - for everything that is now called DevOps. People gathered with a completely different background: JVM, .NET, Python.



And so we sat, thinking on what to write a new product. We tried Python, Scala, and some third language. We developed prototypes, and Scala liked it more, especially after Java - static typing, everything. Therefore, we decided to write on it and so I got into Scala.



In 2012, Scala was all complicated with libraries. Most of the ecosystem was not there now. There was a Twitter stack, but it was isolated, with its own characteristics.



- It seems that he still has remained so.



Roman Timushev : At that time everything was completely there, and now they are somehow trying to unify more parts with the rest of the ecosystem. Then there were all sorts of libraries for HTTP: unfiltered, spray, scalaz. There were no cats at all. Everything was good in the community.



- Nobody cursed?



Roman Timushev: Maybe they swore, but it did not crawl to the surface.

Then there was then only the first Akka and Play. We looked and thought that Akka fits well on our future system. It seems cool, no locks, everything will be fast, reliable, let's write on Akka and choose Play.



For some time we suffered from the first Akka - it hurt. I still remember Future from the first Akka when a timeout was tightly sewn in them. By default, the timeout lasted 5 seconds. Any combinator that you call creates a new future with this timeout. If you want to do something that takes more than 5 seconds, then everything is finita la comedy. It was painful, we fought for a long time, but then we launched the second Akka, the future appeared in Scala and life became easier.



- Did you have a distributor? Then akka-cluster was not?



Roman Timushev: It seems to me, when we started, there was no cluster yet. But when he appeared, we dragged him on and grabbed problems with all kinds of split-brains. They wrote their split-brain-resolver, which somehow resolved through our database.



In those days, many still used Eclipse. It seems that then by default Eclipse was the official Scala IDE. We developed our project and caught all the possible mistakes made by beginners who saw Akka, Scala for the first time and that’s all. Despite this, the product was successful. From Scala there were only positive impressions.



- On Eclipse there were generally norms to write?



Roman Timushev: Somehow, yes, it was normal.



- Was there your own plugin?



Roman Timushev: Yes, there was an official plugin that worked well. I don’t remember how the IDEA plugin worked then, but I'm not sure if it was better. Eclipse has always been kind of weird: either alive, or not really.



Before I switched to Scala, I mostly wrote in Java. Had to work with Maven, Gradle. There were plugins everywhere to update dependencies or at least watch. For Scala, this was not, so I had to write my own and use it. He is still alive, people use it - everyone is happy.



Sbt-updates can be used as a separate plugin. It shows dependency updates. Frank Thomas is now actively promoting scala-steward . Under the hood, he has the same plugin that I once wrote. Of course, besides this plugin there is still a lot of magic about how to update dependencies in the zoo of files.



On the one hand, I don’t understand how people can live without it. On the other hand, when I come to the company, and here already on GitHub the dependence on my project is somehow funny.



- Nicely?



Roman Timushev: Yes, and by the way, it does not need to be added to projects. Sbt-updates must be configured locally, just like dependency graph, etc.



- And then what happened with the movement?



Roman Timushev: At first, there was little movement, at least in Russia. In the company where I worked, business trips to the USA were widespread. And there, in the Valley, there was a lot of movement: events, meetings, conferences and everything else. Several times a week some Scala-mitap was mandatory. Arriving there, something constantly happens there, returning is empty. I thought about how to fix it, and started a meetup.com page for Scala Moscow.



Around the same time, or even earlier, Vlad Uspensky created a Facebook group about Scala in Moscow. The first meetings were organized by Vlad. Somehow, they passed the entire community and appeared on the meetup after the fact. Judging by the photo, there were 25 people there.



And then there was the next, already real mitap in the Tinkoff office, which was also organized by Vlad. 50 people were registered, there were some interesting reports.



Later, thanks to Misha, a second platform appeared - the Research Institute “Voskhod”. I don’t remember why the Voskhod Scientific Research Institute did something on Scala, but they were interested in developing the community and organized meetings.



- And where did all the communication take place? On Facebook or was there some kind of chat room?



Roman Timushev: Yes, there was a group on Facebook. but not very active. Periodically there was post information about mitaps, there were small discussions. There was also a group on Skype - there were always some holivars there. Telegram has not yet been.



The meetings were not very regular - everyone had work, business trips, business. Then Vlad left for the USA, I went to Germany, and everything was almost bent. Therefore, I am very pleased that a new movement is emerging, that you are organizing a Scala conference.



- How do you like in Germany?



Roman Timushev: I am in Munich, there is a good and quite a lot of Scala. We also write projects on Scala. I have a pet-project on Haskell, but at work mostly Scala.



- You have been writing on Scala for almost 10 years. Are you going to get to the end using the haskalator?



Roman Timushev: One does not interfere with the other. For quite some time I went around Haskell, but now I like it as a language. There are some things in it that I'm starting to miss in Scala. But Scala also has something that is harder to do in Haskell. It’s good when there is a choice, and everyone finds what is best suited to his business.



- So, are you still satisfied with the language? How do you look at Scala 3, are you afraid?



Roman Timushev: I have mixed feelings. When I came to Scala, I was very impressed with how a very small number of concepts managed to make so many different cool features. It seemed to me that Scala is a good example of how, with three basic concepts, it is possible to implement almost the whole variety: type classes, extension methods. I thought it was cool, and it’s a pity that in the third Scala it leaves.



From the practical point of view, it will be easier to educate people, to enter the language will also be easier. Perhaps there will be more uniform writing in Scala, and that is also a plus. Wait and see. I am sure that the developers of Scala thought about it and gave it away for a reason.



- I also wanted to ask. Was there a rolling pin in Tinkoff then or not?



Roman Timushev: Scala was already in Tinkov then. I can’t say for the whole Tinkoff, but there were a lot of developers who write on Scala. Talk about it with Vlad - he will be able to tell much more, since he worked there.



This is the first part of an “investigation” about the Russian Scala movement. The detective story did not end there. In the next series: acquaintance with Vlad and a new unexpected suspect, an interview with which will be for the whole next article. Stay tuned for nothing to miss.



If you want to add new facets to the history of the Scala movement or share your experience of use, submit reports . The feed deadline is 29 days. Until the next 6-day price increase deadline, book your tickets .



All Articles