diff --git a/blog/_posts/2021-12-21-discord.md b/blog/_posts/2021-12-21-discord.md new file mode 100644 index 000000000..7a3377366 --- /dev/null +++ b/blog/_posts/2021-12-21-discord.md @@ -0,0 +1,178 @@ +--- +layout: blog-detail +post-type: blog +by: Seth Tisue +title: "Scala Chat: Hello Discord (So Long, Gitter)" +--- + +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: + +* https://discord.com/invite/scala + +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](https://www.scala-lang.org/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](https://discord.gg/RFpSVth)**: Scalameta-based tooling: Metals, Scalameta, Scalafix, Scalafmt, and Mdoc +* **[Typelevel](https://discord.gg/XF3CXcMzqD)**: the Typelevel ecosystem for pure-functional programming in Scala +* **[ZIO](https://discord.gg/2ccFBr4)**: Type-safe, composable asynchronous and concurrent programming for Scala +* **[Functional Programming](https://discord.gg/K6XHBSh)**: 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](https://gitter.im/playframework/playframework). + +## What about non-English languages? + +Our website's [community +page](https://www.scala-lang.org/community/#chat-rooms) 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](https://github.com/scala/scala-lang/blob/main/community/index.md). + +## Are other clients supported? + +Yes, via [Matrix](https://matrix.org). You can connect to +`#scala-lang:matrix.org` over the bridge, using your Matrix client of +choice (perhaps [Element](https://element.io)). 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](https://libera.chat) 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](https://gitter.im/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](https://twitter.com/salarrahmanian) 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. ❤️ diff --git a/community/index.md b/community/index.md index a0736b4d6..588d5f042 100644 --- a/community/index.md +++ b/community/index.md @@ -66,6 +66,10 @@ Our main chat platform is Discord, and the main Scala server is: The server is covered by the [Scala Code of Conduct](../conduct.html). +Alternate clients such as [Element](https://element.io) are supported +via a [Matrix](https://matrix.org) bridge. Connect to +`#scala-lang:matrix.org`. + Scala-oriented Discord servers operated by the community include: * **[Scalameta](https://discord.gg/RFpSVth)**: Scalameta-based tooling: Metals, Scalameta, Scalafix, Scalafmt, and Mdoc