This article was first published on Medium.
For the past few years, I’ve been trying to keep myself up-to-date with the latest news in technologies that I’m interested in. I started going through the “Community” pages of many OSS products, from programming languages to tools and libraries. I registered and subscribed to many platforms, mailing lists, IRC channels, subreddits, etc.
Fast-forward to today. Among all the platforms that I tried, I can say with confidence: I dislike chat-based apps. By “chat-based apps”, I am including the most prominent ones on this field, such as Slack, Discord, IRC, and Gitter. By “dislike” I mean that I prefer not to use them if possible, unless the issue is pressing and no other choice is available. Unfortunately, several communities seem to use it as their primary channel of communication.
Note that I’m not saying that Slack et al are bad products. I use Slack at work and it’s been very helpful with its integrations and such. Seeing how most communities have at least one chat-based channel, I also believe that it definitely has value for some–if not most–people.
Now, with that out of the way, let me tell you why I think the way I do.
I dislike chat-based apps because they are synchronously real-time.
What’s so bad about it? Real-time is good! We make everything real-time nowadays! Well, Let’s see how being synchronously real-time can hurt communications and the community as a whole.
At times when I lurk at some Slacks and Discords, I can’t deny that is where many discussions on interesting topics got initiated. It also solves many issues that needs to be solved immediately.
But then that’s that. The discussions and solutions there are not globally searchable. AFAIK there’s still no way a google search could point to a specific point of conversation in a Slack channel, so it’s not really SEO-friendly. Perhaps it helped one user, but it will not help the next person, and they would need to ask the question again.
Unless someone put the result of discussions into a blog or something, there will be no record of the exchanges whatsoever. Of course, there actually can be a record, by using services such as SlackArchive.io. But good luck finding specific conversation there–which brings me to the next issue…
With many people speaking at the same time, there’s a high possibility of race conditions. Two or more questions got asked at the same time and many people tried answering them in the same manner. Who’s replying to who? Has the other person finished writing their answer? There is no logical way to group messages. Even after Slack introduced message threads, I never see anyone actually uses it in OSS Slack channels. They mostly stick with the IRC style of conversation.
As software engineers/developers, we embrace efficiency. We embrace the DRY principle. It should be the same with questions–the same question should not be asked twice, or at least there should be a way to answer the second question by only a reference to the first one. It would save everyone’s time. Stack Overflow does it with duplicate questions. Quora does it with merging questions. You would need to search for a similar question before posting your own. But that is impossible in chat-based apps; you have no choice but to ask the question again–not knowing if it has been asked and answered before.
Seriously, I’ve seen an instance where a question was answered by “please scroll up a few hours”. For longer than a few hours (or less if the channel is really active), the answerer would have no choice but to write their answer again.
It being synchronous means that if I post something, I would need to keep the window open and focused to see whether or not I get responses. It’s good if someone mentions your handle when they answer and you receive notifications, but at times they don’t. I simply can’t do other things; leaving the app would introduce the possibility that the response (if any) is far up already; drowned in other chats.
It’s even more distracting than Facebook and Twitter, which I am able to open only occasionally and not miss out on many things.
It being real-time might introduce problems to non-English speaking users that may not be used to expressing their ideas in English. It might take time for them to write questions, and write the replies to the answers. My English is not perfect, and there are times when I can’t find the vocabulary that I needed to express what I want to know exactly. The real-time aspect of chats can be intimidating.
Of course, me being generally an introvert might have something to do with that, and I’m trying to improve my English over time. However, doing things less real-time-y and asynchronously would certainly help me compose better messages.
This is where chat-based apps being synchronously real-time hits me hard. I live in Indonesia, and the timezone here is UTC+7. The timezone in the US (where most interesting things happen) ranges from UTC-8 to UTC-4, which roughly translates to 12 hours difference from here. That means their noon is my midnight.
I don’t know about you, but I’m not keen on the idea of asking questions in the middle of the night, even when doing so will get more active responses from the folks on the other side of the world.
What platform gives us the capability to record and group discussions, communicate asynchronously, navigate through conversations, and be globally searchable and SEO-friendly?
Reddit or mailing lists come to mind. I’m not exactly a fan of Reddit’s or Hacker News’ threaded discussions as it is not chronological, although navigating to parent post and replies are a breeze. Mailing lists on the other hand, are a bit better, but too linear. There are also no way to “mention” a participant, and it has poor support for code blocks. Subscribing to too many mailing lists might also make your inbox unwieldy, even when it is labeled differently.
I am finding Discourse as the most ideal communication channel that I have experienced so far. There are many communities go down this path: Elixir, Docker, Kotlin, Go, and Rust to name a few, and they are arguably several of the best OSS communities out there. I know there’s one for React, but I’m not sure how active it is. I am delighted that the OCaml community has also started to migrate the discussions from the mailing list to the new forum (although it might take some time for it to get traction).
FWIW, I am also a fan of Twitter for being my one-stop news outlet and community channel for tech related things. I follow many devs and that fills my timeline with so many great discussions and blog posts, and fewer fake news.
So that’s about it! I realize that this is mostly a rant :) If I missed something, or if you think that I am not giving chat-based apps the credit it deserves for bringing together a community, do tell in the comments!