Recently I’ve been lucky to have inspiring conversations with @Lukas_Domagala, @prnc, @ashima_panjwani, @skallinen, @kiramclean, @seancorfield, @ethanmiller, about our hopes for community building.
After a few weeks of thinking and recovering, we are about to start organizing a few study groups and dev groups. Exciting things are coming soon.
When organizing a new group or project, one important question is what social platform to use. There are a few wonderful social spaces where Clojurians collaborate: Clojureverse, Clojurians Zulip, Clojurians Slack, the r/Clojure subreddit, the Clojure mail group, various Discord servers, Twitter, Github, and more. Most of these exist thanks to the wise (and almost invisible) care of the moderators of those spaces, and this post is also an opportunity to thank them.
Let us discuss when and why we tend to use various platforms for communities and groups. This discussion may affect our approach towards some of the coming projects, such as the visual tools dev group and study group and a plan to organize a cross-language study group for probabilistic programming.
Below I’ll share my personal opinion. Comments and other opinions would help so much.
An opinion
Here are some of my currently preferred practices. They are written in a rather prescribed and opinionated fashion, hoping to provoke more views.
Initiating a broad discussion
Scenario
We want to have a discussion of some questions at the scope of the whole Clojure community.
Suggestion
Write a Clojureverse post and share it on other platforms.
Explanation
Clojureverse displays a post and its related discussion on a dedicated page, without too many distractions and confusions, and without requiring login (as opposed to Zulip, and also Reddit). It is indexed by search engines, thus supporting long-term visibility. Also, note that Clojureverse (unlike Reddit) will keep the post high on the feed as long as the conversation is active.
Other platforms (e.g., the r/Clojure subreddit) seem to be more popular and draw more responses, but we can simply announce the Clojureverse post there. The above feature of Clojureverse – a clear view on a dedicated page – will hopefully make it welcoming to people who are not used to it and come from other platforms.
Creating a task group
Scenario
We want to start working on a project as a group.
Here, the project might be a library, a blog post, a talk, or a future event – anything a few of us may wish to collaborate on.
We want to have fluent conversations, that can sometimes be very lively, but may also take a slower pace, where each member can read and respond at their comfortable hours. We want to be able to return to a conversation after dropping it for a few days.
We want the process to document itself. We want people to be able to leave for a while and comfortably catch up when coming back. We want new people to join comfortably.
Suggestion
For most activities, use a dedicated stream at the Clojurians Zulip chat.
For discussions that deserve more visibility outside the group, use Github issues.
Explanation
See the wonderful announcing post by @eval for the reasoning behind the choice of Zulip as a social platform for Clojurians.
Zulip is a chat platform that allows for both fast-pace and slow-pace experience. This is achieved through the two-level ergonomics of streams and topics.
A Zulip stream is a space whose activity gets the attention of only those who’ve chosen to see it (i.e., those who’ve subscribed to it).
Under any stream, discussion can be divided into topics, which are separate threads of conversation, each going at its own pace like an email thread.
Zulip is great for organizational memory. Every stream, topic, and message has a URL, that can be linked to from other places. With some basic care and thoughtful habits, the conversations can naturally emerge into a growing knowledge base. Browsing through the content feels like traveling through a nested data structure containing all that knowledge.
The Clojurians Zulip is not indexed by search engines, and streams with few subscribers are practically seen by very few people. This allows for a comfortable experience, where it feels just fine to be confused, speculate, and make mistakes. In our experience, this matters a lot.
(Where appropriate, a stream can be made private, so that it is completely invisible to people who are not subscribed. In some situations, this may give a safer feeling to the members of a group, knowing exactly who reads their messages.)
Alternatives
Github issues are also great for allowing linkable knowledge to emerge from conversations. They are different from Zulip streams in that they are indexed by search engines and do not require login to be visible. So, they can be used for more broadly public conversations alongside the ongoing Zulip conversations.
Slack channels are known to be widely used by many Clojure dev groups and user groups. Compared with Zulip streams, getting used to them seems to be often quicker. They offer less of the clear structure mentioned above, and I think they are less friendly to web-based knowledge browsing (i.e., browsing content through URLs using browser tabs). I believe that matters a lot. But for some domains, Slack might be preferable simply due to the fact that certain relevant people tend to be more available there.
Creating a Clojure-related study group
Scenario
We are organizing a new study group for Clojurians.
Here, I mean something like the groups we have been organizing at Scicloj. Usually, it consists of a few dozens of people that maintain some relationship through chat and regular meetings. Usually, at a given period, there is just a small bunch of people who actually attend, but this small bunch gradually changes. Some group members can follow the activity offline, at their own pace.
We want to make it easy for people to follow along, join the group late, and come back after long breaks (sometimes a few months). We want the group to feel safe and comfortable for everybody.
Suggestion
For most activities, use a dedicated stream at the Clojurians Zulip chat.
For every group session, use a dedicated topic thread. Encourage not only participants but also other relevant members to follow that topic.
Record the video sessions but share the recording only in the stream.
Explanation
See also the discussion of the task group scenario above.
In our experience, topic thread discussions and video recordings often allow a few friends to follow along even if they cannot attend the group sessions. These friends typically include the relevant library maintainers, who can be very helpful in their offline comments, and sometimes also enjoy the study group as a form of user testing.
The fact that recordings are not shared with too broad audiences seems to keep a bit of the safe feeling, that it is just fine to explore and make mistakes.
Creating a non-Clojure study group
Scenario
We are organizing a study group that will not focus on Clojure and will possibly include friends who do not know what Clojure is.
One example is our idea of organizing a study group around the field of probabilistic programming. Different languages and libraries will be explored there, and people of different backgrounds will participate.
Thoughts
Possibly, platforms such as the Clojurians Slack and Clojurians Zulip would not make sense here.
A dedicated Discord server might be good.
More thought is needed.