An instantaneous chat platform for the ROS community

Continuing the discussion from Design process of ROS 2:

After reading through an engaging thread over in the Design Process of ROS-2 category, I wanted to follow up on a particular point made by @wjwwood by re-opening a general discussion for it:

:+1: ^ :100:! I totally agree that adding community channel for ephemeral communication could really help wrt. many of the issues raised in the related thread. To help push this forward, I’d like to kick start with some callbacks to past discussions, current solutions, and some of my own suggestions. Please feel free to add references you think I might have missed.


Past Discussions

http://lists.ros.org/pipermail/ros-users/2016-March/069890.html


Current Solutions

IRC

Old school, but kind of dead with few modern features or popularity

Slack

Been there done that, proprietary and limited free tear

Discord

Feature rich, support for audio, polished multi-platform

Rocket Chat

Open Source, hosting like Discourse, video conferencing

Gitter

Developer orientated and integratable (from GITLAB)

https://gitter.im


Suggestions

I’d like Discord or Rocket Chat, as I appreciate voice/video chat rooms given I’m quite a typo typist, but Gitter seem most applicable given our community software focus. Before reading more up on the compassion between the three, I didn’t realize that Rocket Chat also supported screen sharing (via jitsi), which would also be helpful for presenting or demonstrations.

I’ve used Discord before with another software project (albeit a much smaller example community) and it liked using it, given the UI clients worked well both from an installed application or web browser. Given its gaming origins, having features like push-to-talk or voice-activation made sitting in an open-ended VOP enabled chatroom for prolonged discussions quite natural and low barrier. However, the interface is designed more around the individual, like a social media platform; though I haven’t administrated an org on Discord, I’d imagine the community management infrastructure might not be as scailable as with Gitter or Rocket Chat.

I’ve also used Rocket Chat when interacting with the Hyperledger Community. Although not as polished as Discord, Rocket Chat it is open source, and has similar hosting model like Discourse. However, Gitter’s integration with the existing platforms we already use seem like the dead ringer. To get a better feel than just is mono landing page, you can check out the gitter readme docs here.

8 Likes

I’d also prefer something with voice/video, and so I’d prefer discord or RocketChat. Between those two I’m torn, because I like the distribution model of RocketChat (though I’d prefer not to self-host) and that it’s Open Source, but I think Discord is clearly more polished and inparticular the mobile applications are much nicer.

The slant.co articles are pretty useful for comparison honestly.

I’d like to hear from others, and especially people who are opposed to one or more of the suggestions (or the idea of ephemeral chat in general), because without any push back I’d be inclined to just set one of them up and give it a shot (speaking for myself).

1 Like

I would also like to see Discord given that I already use it for multiple other projects. I think Rocket Chat looks appealing but lacks the momentum that Discord has as a community. I think other options, such as Gitter and Slack, don’t have the functionality that would be most useful for people who are not only adding comments on code changes but also people looking to collaborate. I personally would be using this chat platform as a way to communicate with other researchers using ROS.

I would personally vote for RocketChat, though I haven’t used any of them and thus it is a gut reaction based on it being open-source (and able to be hosted on-premises).

If we don’t support other open-source projects, who will?

3 Likes

Although I generally prefer open source solutions and protocols, which would push me towards RocketChat, I think that Discord would place a lower burden on us to manage the thing. As @wjwwood says, I prefer to avoid self-hosting because we have enough to do as it is. Discord does “just work” and the tools are good.

Instantaneous chat with the ability to rapidly fire up a voice or video connection is far more important to me than integration with existing software development tools. If gitter can do those as well as integrate with GitHub, then great, but if it can’t then I say go for Discord or RocketChat.

Based on being a current user of both Discord and Slack for team collaboration, my preference goes out to Slack due to better support for threads to have more detailed discussions. There’s no ‘reply to’ functionality in Discord, which can make it very confusing when responding to something a few lines back. Furthermore Slack has nicer functionality for sharing blocks of code (e.g. highlighting).

A pro for Discord is it’s native dark interface, something in Slack can only be done through userscripts or something similar.

2 Likes

Serendipitously, I came across https://matrix.org/blog/home/ last night. It might be another option to consider.

1 Like

I’m a fan of slack, it is free and can be set up in a few clicks.

Cheers,

-Joe

Some of us around here like our RAM, though. Just sayin.

1 Like

I have 16GB of ram on my laptop, I can dedicate 25% of it for my messaging client … that is reasonable, right?

-Joe

1 Like

how to join rosorg.slack.com?

Hi, I’d also recommend Slack. Great for team communication, free, very good on all platforms.

We explicitly stopped using slack:

from: [ros-users] ROS Community Discourse

After feedback about the failings of Google Groups and the non-open,
proprietary nature of Slack, we launched an experiment migrating the ROS
Java SIG from a Google Groups mailing list to Discourse.

Slack is officially deprecated: you are free to continue using it, but if
you want something to come onto the radar of the ROS team, you should
prefer to use Discourse, IRC, Github, or email.

So in some since this topic is a rehash of discussions we had then, but notably at that time we didn’t really consider discord or rocketchat (AFAIR).

One big issue was the ability to get access to historical chat records publicly via a website or some rest API, and the fact that Slack limits chat backlogs if you don’t pay for it (not sure if that’s still the case).

It’s a valid concern about the other options like discord (it has chat logs available via a rest API, but no convenient export feature) and rocketchat (presumably not an issue since it can be self-hosted).

1 Like

That was one of the issues I had with slack. The monetization of the free tier subscription really limited the history capabilities, making it unreliable to link back to reference a previous discussion given it could disappear with the rolling-window archives. Unless that is one where to pay out for a subscription plan, which was per user last time I checked, making it hard to apply to open communities.

That’s a real good one! One hesitation I had with most of the mentioned solution thus far was that the channel for the instant messaging was rather wholistickly bound to the client/host-provider. The nice thing about email and IRC (and now matrix) is that it the protocol is decoupled from the client provider.

Here is a feature breakout of the available clients they list (voip being one of them):

https://matrix.org/docs/projects/clients-matrix

One of the things about instantaneous chat is that you shouldn’t need to do that too often, especially if we have multiple channels set up for major segments of ROS development. So it’s not a killer need for me. I do agree that it is a very nice convenience, though.

Discord does support pre-formatted text (its messages are all Markdown), but as you say it doesn’t go beyond that to things like syntax highlighting like Slack does.

The backlogs are still locked up and it’s still per user and still really really expensive. It’s 850 yen per user per month (sorry, the website absolutely refuses to give me prices in $US), and twice that if you want features like exporting, not just keeping, your backlogs.

Actually the sheer cost of using Slack is probably the biggest thing against it, in my opinion. It’s not really suitable for an open source community. Imagine if we wanted all the people signed up for this Discourse to be able to use it with full privileges: the cost would be over $400,000 per year by my rough calculation. Slack does allow for “external guests” at the paid tiers, but they need to be individually invited to each channel they are needed in. If they are given access to multiple channels, then you get billed as per a paid user for each guest. If they are given access to just a single channel, only then are they free, but you can only have 5 per paid user, so we would still need to pay a huge sum to get everyone into Slack.

I agree with @ruffsl. That one does look really nice. Tellingly, the iOS client is frequently updated and doesn’t look like crap. The exception is support for VoIP: While the protocol provides support, only the web, Android and iOS clients provide it.

In regards to Matrix, checkout the talk by the core dev team from FOSDEM 2019. It was posted earlier this month and covers a bit of the dilemma we’ve been sharing here wrt to ecosystem silos:

Specific times of note:

5:08 Decentralised network and Optional bridging

image

43:45 Latest Riot Client

image

As of writing, it doesn’t look like main riot site has updated the client to reflect to one demoed, but you can still test that latest build locally, or by going visiting experimental page, as posted here.

The desktop clients are ridiculously heavy weight indeed, since most of these chat clients are built on top of Electron. However most of them also provide a web interface that can just be loaded in a browser, which reduces the memory usage to more acceptable levels. I’ve set up Whatsapp, Discord and Slack like this as pinned tabs in Firefox and according to the task manager of Firefox they now use 35, 75 and 110 MB of RAM respectively.

In the current environment where I’m involved, it’s used for team collaboration among a team that works together on 2 projects with a common base. Multiple channels have been created for subtopics within the projects and the common base, so that discussion per channel can be focused on 1 topic. Still it happens frequently that discussions end up quite chaotic and people end up using 1-on-1 chat (which is not public) to discuss more final details. Of course this also depends on the users, but just want to bring this into the discussion.

On another note: before using Slack and Discord we’ve been using Mattermost and personally I liked it better than both Discord and Slack. It’s very similar to Slack in user experience, has native clients for Windows/Linux/Mac/Android/iOS, supports audio/video, sharing code snippets etc. and is open source. It can be self-hosted, but they can also do the hosting and have specific pricing for open source projects.

The more I look at Matrix, the more I like it.

If VoIP is in the reference implementations now and will reach the other clients as they update, then maybe Matrix combined with using something like appear.in in the meantime is a good solution?

Has there been any movement on this topic? Was it discussed at the recent TSC meeting?