Scala Chat: Hello Discord (So Long, Gitter)

Tuesday 21 December 2021

Seth Tisue

On behalf of the Scala organization, I am pleased to announce that we have adopted Discord as our official chat platform.

Join us!

Please join us for live text-based chat on the Scala Discord server, via this link:

The server has existed for several years now and is already busy and well-established. It is actively moderated under the Scala Code of Conduct.

Popular channels on the server include #scala-users, #scala-contributors, #announcements, #jobs, #tooling, #scala-js, #scala-native, and others. New channels can be proposed on #admin.

What about Gitter?

Adopting Discord means we have moved away from Gitter. Most of our old Gitter rooms are now closed. The main room remains open, but mainly so we can help people find us on Discord.

Gitter served the Scala community extremely well for more than six years. We applaud the Gitter team for their pioneering efforts, which revolutionized public online chat for programmers. We also thank Gitter for providing us with free, high-quality service for so long.

How is Discord different?

A Discord “server” may contain many “channels”, also called rooms.

When you join a Discord server, all of the public channels on that server are immediately visible to you. Unlike Gitter, you don’t have to join each channel individually. (But you can individually mute channels that don’t interest you.)

There is a desktop client and a mobile client (for iOS and Android). Both are high quality.

Former Gitter users will notice a number of quality-of-life and user-interface improvements such as reactions and replies.

What other chat servers exist?

Scala enthusiasts might also be interested in joining the following Discord servers:

  • Scalameta: Scalameta-based tooling: Metals, Scalameta, Scalafix, Scalafmt, and Mdoc
  • Typelevel: the Typelevel ecosystem for pure-functional programming in Scala
  • ZIO: Type-safe, composable asynchronous and concurrent programming for Scala
  • Functional Programming: not Scala-specific, but includes a Scala channel

And although we have closed down all but one of the official Scala Gitter rooms, as of December 2021 there are still some active Gitter rooms out there devoted to particular libraries or topics, for example playframework/playframework.

What about non-English languages?

Our website’s community page lists chat rooms and servers for many other languages besides English. Discord, Gitter, and Telegram are all represented.

As of December 2021, the list is probably not very up-to-date. We invite the community to submit pull requests that will make it more current, one language at a time. The file to edit on GitHub is community/index.md.

Are other clients supported?

Yes, via Matrix. You can connect to #scala-lang:matrix.org over the bridge, using your Matrix client of choice (perhaps Element). Not all Discord features are supported.

How did we decide to switch to Discord?

The community discussion of record on this began in October 2019 on the following Discourse thread:

  • https://users.scala-lang.org/t/can-we-have-an-official-scala-discord-server/5157

Among the objections raised were:

  • Discord is a proprietary, closed-source platform.
  • The contents of Discord rooms are not indexed on the public web.

But in the end, Discord’s feature set and its sheer popularity decided the matter. By the time we officially switched over in December 2021, most of the community had already voted with their feet and our Discord server had become much more active than our Gitter rooms.

Slack was considered as an option, but we decided it is best suited for private companies and groups, but not so well suited for open-ended public communities like ours.

Tell us more history.

Okay, let’s take a trip down memory lane.

During Scala’s earliest days (at least since 2007, perhaps earlier), the main chat platform for Scala was IRC. In those early years, when the community was still small and there weren’t that many Scala conferences and meetups yet, the IRC channel (along with the Google Groups mailing lists) was an important place where community members got to know each other and, one might even say, became a community.

Later, the IRC channel declined in popularity. In my personal view, this was due to a lack of moderation and lack of any code of conduct. It became essential to have these once the Scala community had become larger.

The IRC channel still exists to this day, now on Libera instead of Freenode, but traffic there has slowed to a trickle in recent years.

Gitter launched in 2014 and was widely adopted by the Scala community in 2015. The major advantages of Gitter over IRC include:

  • Scrollback: you can log out, log back on, and still see what people were saying while you were away. (On IRC, this was only possible if you used special software.)
  • Markdown support, including syntax-highlighting of Scala code.
  • Messages can be edited (within a limited time frame) and deleted.
  • More features supporting effective content moderation.

Discord shares these advantages as well.

Some advantages of Gitter that Discord doesn’t share:

  • GitHub integration, including GitHub-based login. (No need to make a separate account.)
  • Easy, decentralized, room creation, with room names based on GitHub repo names, making it a no-brainer for an open source maintainer to create a room specifically for their library.

However, in recent years, the Gitter platform largely stopped advancing and eventually came to feel stale. After Gitter was acquired by GitLab in 2017, some features were added such as threading, but the implementation of threading was unpopular with users. The quality and feature set of the mobile client fell behind those of the desktop client. New Vector Limited acquired Gitter in 2020 and added Matrix support, but otherwise has not advanced the platform.

Meanwhile, Discord was becoming extremely popular in the video gaming community, then crossed over into programming communities.

Are the old Gitter rooms archived?

The main Gitter room for Scala, scala/scala remains online and searchable. We’ll probably leave it online indefinitely.

The other Gitter rooms under the scala/* organization have been deleted and their contents archived; the Scala Center retains the archives.

Credits

Salar Rahmanian created the Scala Discord server initially and administered it until recently. We are grateful to him for leading the way. Thank you, Salar!

Personally, I would also like to applaud and thank everyone who’s ever been helpful and kind to a Scala newcomer arriving in one of our chat rooms for the first time. You keep my faith in humanity alive. ❤️