Scalar 2020 whiteboard voting

Wait … whiteboard voting in 2020? How? When? Why?

Adam Warski
SoftwareMill Tech Blog

--

Rest assured, as everything this year, also Scalar and our traditional whiteboard voting “contest” (see here for 2019 results) was virtual. Despite the new setting, we managed to run the conference without technical issues — all thanks to our great team.

To conduct the voting itself, we employed a simple, though I think effective method of voting with reactions on our Scalar Slack channel. Let’s see how the results are shaping this year!

Please note: the below analysis shouldn’t be taken too seriously. The survey was done without any scientific basis, on a small, non-representative group of Scalar attendees. Still, it might be interesting what Scalar attendees use!

Let’s start with a topic close to the hearts of so many of us: which effect wrapper is the best one? Which should I use? Hence we started with a question — what’s your favorite one?

And it seems ZIO is a clear winner, with F[_] (tagless-final) close behind. How do these compare to the previous year?

ZIO has definitely gained ground (again, at least among Scalar attendees), and overall “functional” wrappers are dominating the scene.

Let’s leave effects and proceed to the next topic: relational databases. BigData, streaming and web-scale might be a thing, but relational databases are here for good!

Throughout the years, Slick has been steadily declining, while Doobie steadliy gains popularity. We’ve also got a new contender this year: Skunk. Who knows, maybe next year Skunk and zio-sql will end the dominance of Doobie?

Parsing JSON is one of the favorite activities of any professional Scala developer. We’ve got plenty of tools at our disposal, and we love solving problems with missing codecs! Luckily, all of this happens at compile time; once our code compiles, we are confident that there will be no run-time problems. Hence — which JSON tool is the most popular in 2020?

And the winner is circe! No other tool can threaten its dominance. Or can it? We’ll see next year!

After looking at libraries, we turned out attention towards Scala 3:

Not a lot of votes on this one — seems most of Scalar attendees are holding their horses and waiting until Scala 3 is ready. There is still some time before this happens, the language features aren’t yet finalised, hence this might be a reasonable strategy. However, as we all known — early feedback is very valuable for the language designers!

Another favorite discussion topic is the choice of an editor or IDE to develop Scala code. The winner is clear throughout the years, but the monopoly might be ending with recent developments of Metals:

Going back to the future — that is, to Scala 3, what’s the most promising feature of the language? There’s a lot to pick from, and hard to fit all the choices in a single questionnaire, especially without wider context. However, the opinions of Scalar attendees are as follows:

Seems lemons are really popular! That is, improvements to the type system: intersection & union types (or is it intersection | union types?), along with type lambdas. Better implicits and enums are also features, which would be great to have at our disposal.

We already know what features we are looking forward to, but what about Scala’s use cases? Unsurprisingly, backends, APIs, distributed systems and related topics dominate:

Scala has certainly found its place when it comes to non-trivial server-side processing!

Before concluding, let’s address two pressing topics. Firstly, build tools. Build tools exists primarily so that we can say how bad they are. Another common use-case is compiling and packaging code, however not as frequent as the previous one.

Despite many choices, people seem to be using predominantly SBT. However, the alternatives are there, and they are getting better with each release (though, we can say that about SBT as well)!

Finally, the topic we’ve all been waiting for: HTTP frameworks and libraries. No backend system (which, as we know, is the main use-case for Scala) would be complete without exposing at least a handful of HTTP endpoints. How to do that? Next to JSON, that’s another favorite topic of discussion among Scala programmers. Let’s see the numbers!

We’re missing data for 2018, unfortunately; we can also see that some libraries have essentially disappeared, while others came into prominence. A constant strong player is akka-http, with Play and http4s not far behind. Tapir, along with uzhttp and endpoints made a debut. It will be interesting to see how this unfolds in 2021!

That’s all for now! The only thing left to do is waiting for all of the Scalar videos to be released. You can get notified when this happens by signing up for our mailing list, or following us on Twitter. Another option is to subscribe to ScalaTimes, our weekly Scala newsletter.

Have fun with Scala!

--

--

Software engineer, Functional Programming and Scala enthusiast, SoftwareMill co-founder