Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Real time chat and other venues for community interaction beyond github issues #167

Open
ghost opened this issue May 21, 2017 · 35 comments
Open

Comments

@ghost
Copy link

ghost commented May 21, 2017

Would you be open to creating a gitter community for Trio so we have a place for helping people with learning and using Trio and its ecosystem? Is there already an IRC channel or something out there?

@ghost ghost changed the title Gitter channel Gitter community May 21, 2017
@njsmith njsmith changed the title Gitter community Real time chat and other non-issues venues for community interaction May 27, 2017
@njsmith
Copy link
Member

njsmith commented May 27, 2017

Excellent question! I've been meaning to do something like this, but have been slow to respond because I'm cranky about the available options :-).

  • IRC is obviously a thing, but it's extremely unfriendly to those who haven't already been initiated into its arcane secrets. Obviously I have a bouncer set up etc., but I hesitate to demand that of users. Though I guess we could direct them to IRCCloud. It really seems like we could ought to be able to do better in 2017.

  • Gitter is a thing, it works for lots of projects, but I'm not very happy with it – the UI tends to bog down in my browser, it's a walled-garden proprietary model, and it's always sending me notifications hours late or not at all. I'm not that worried about lock-in on a chat room, switching is not that hard, but again it seems like we ought to be able to do better. Also, I seem to have somehow gotten into a state where there's a python-trio organization (with a distorted logo, for some reason), but it contains zero rooms and I can't add any.

  • Slack is popular but extremely unfriendly for this purpose, because of how difficult it makes it for someone new to jump in and start talking. Also super proprietary.

  • Zulip is a neat open-source chat program, there's a company behind it that I'm told is willing to host it for us for free, and it's possible to do login-via-github, though they don't yet have any kind of anonymous access. The downside here is that it's really designed more for team collaboration; the UI is somewhat confusing and overwhelming when you first log in. Every conversation is labeled with a room + a tag, so conversations thread, but each thread is broken up over days, and when you first log in you don't get "chat log + blinking cursor to add something", you get a bunch of different colored boxes with conversation fragments and have to click on one to reply or else click "start new topic". If anyone's curious you can log into their project chat server here and look around.

  • There are some other open-source chat apps that exist: Matrix and its Riot client. Mattermost. Probably others. I don't know too much about these and don't see an obvious way to set them up. I'd rather not have to host something myself.

  • Discourse is generally in this area, not quite the "quick chat" thing but it overlaps. Unfortunately the hosted version is $100/mo which is super expensive for a hobby project. (And they mighhht do free open source hosting but I don't get the sense that they're interested in talking to small projects.) I could host it myself somewhere, but I'm pretty sure eventually something would break and it would take me a few weeks to fix and ugh.

  • We could do a mailman mailing list. Python.org would be happy to host it.

Is it really 2017 and IRC and mailman are the only decent free options? Anyone else want to weigh in? Maybe I need to try and figure out who to contact to get gitter to unwedge itself...

@njsmith njsmith changed the title Real time chat and other non-issues venues for community interaction Real time chat and other venues for community interaction beyond github issues May 27, 2017
@njsmith
Copy link
Member

njsmith commented May 28, 2017

Well, I have managed to create a gitter channel (though apparently it can't be named trio because... I don't know why): https://gitter.im/python-trio/general

Let's give it a shot and see how it goes

@njsmith
Copy link
Member

njsmith commented May 29, 2017

Mailman3 is another option – they've moved to a kind of hybrid mailing list / web forum model. But (a) this still has the hosting problem (at least until python.org switches, if they do?), and (b) it's not as mature yet as options like Discourse. Here's an example Mailman3 list.

@xgid
Copy link

xgid commented May 29, 2017

Hi there!

I don't have a deep experience with too many community management software out there, but If it may be of any help I've had a pretty good experience so far with Google Groups. Amongst its features it has:

  • Decent thread/topic management
  • Quite good "reply to" and "reply privately" options with good quotes visualization/management (which I find really important to get a good question/answer flow)
  • Good upload pictures/files management (from emails also)
  • Nearly instant notifications of new threads/replies
  • Works pretty well (threads and replies) both from web and email. I use to switch from one to the other without problems quite often
  • Oh, and quite good searching capabilities! 😄

Regarding gitter, I've never used it till now, but I've just looked at some of the existing communities (as for example Django) and I've found it to be a real mess! Conversations are superposed one with the other in a flat view and it has been difficult for me to follow any of the threads because you don't have any indication of which answer is in reply to which question ... Maybe it's a wrong use of gitter by the Django people or it's just me? What I've liked alot from gitter is its good integration with GitHub issues and so on (I've even seen some bots to create GitHub issues right from gitter itself).

By the other hand, Mailman3 looks much better to me than Gitter, althoug I don't have also any experience with it.

@njsmith
Copy link
Member

njsmith commented May 29, 2017

Hi @xgid! Thanks for sharing your experience.

Google Groups unfortunately has two show-stoppers: (a) export abilities are awful: last I checked the only way to get your data out are through scripts that scrape the HTML. I know some projects that have tried to switch away from GG and this was a big problem for them. (b) They've blacklisted my primary email address for inscrutable google reasons, so my emails always bounce unless I remember to manually change my from address every time I make a post or a reply. (There's some undocumented rule like... you don't need a gmail address to use GG, but if google thinks that some email address belongs to someone who also owns a gmail address then that email address can't be used to sign up for groups.)

Comparing gitter to Google Groups or mailman3 is sort of apples-to-oranges: they're really designed for different things. Gitter is like IRC or Slack: a tool for real-time, back-and-forth, mostly-emphemeral chat. On the other hand, Google Groups/mailman3/Discourse/etc. are for long-form asynchronous discussion with stable archives. (In the Olden Days every open source project would have an IRC channel and also a mailing list; the two kinds of tools are often complementary.)

I'm kind of mixing the two approaches together here because Github issues already provides a more-or-less-decent venue for asynchronous design discussions for developers, so I feel like the next biggest thing missing is a friendly, low-barrier-to-entry way for folks who are experimenting with trio, and for this I'm not sure which approach is better.

@xgid
Copy link

xgid commented Jun 1, 2017

(a) export abilities are awful

That seems an important limitation, I agree.

Comparing gitter to Google Groups or mailman3 is sort of apples-to-oranges: they're really designed for different things. Gitter is like IRC or Slack: a tool for real-time, back-and-forth, mostly-emphemeral chat. On the other hand, Google Groups/mailman3/Discourse/etc. are for long-form asynchronous discussion with stable archives.

I also agree, but was somehow confused by your initial list of available options which mixed both approaches.

My only contribution then is that I find Gitter, despite its ephemeral nature, quite unfriendly to use when the number of participants grows so that various discussion threads are held at the same time. Although I don't think this to be a problem for trio, at least in the short time, I'm quite surprised that in 2017 there's no better UI for multi-threaded real-time chats. I'll investigate a little bit on that and see if I can find anything better.

@njsmith
Copy link
Member

njsmith commented Jun 1, 2017

I also agree, but was somehow confused by your initial list of available options which mixed both approaches.

Sorry, yeah, that's because I was confusing :-)

multi-threaded real-time chats

If this is the goal, then zulip is probably the answer; the trade off is that the threading is perhaps a bit overwhelming for new users.

But for right now, gitter is probably fine, and by the time it becomes a problem then there are some possibilities:

  • Gitter is exploring some in this direction – I'm not sure how well it matches our hypothetical future needs but we can see when the time comes. They're also apparently going open source

  • Zulip, mailman3, matrix, etc will keep maturing

  • By the time this is a problem, we may be large enough to justify hosted discourse

  • Maybe something else will turn up :-) I'm definitely interested to hear if you find anything.

@buhman
Copy link
Member

buhman commented Jun 13, 2017

Anyone else want to weigh in?

python-trio/messaging :trollface: (actually that would be pretty cool, similar to how various popular frameworks have larger-scale examples).

As a non-gitter user, gitter seems fine; mypy uses it too, and I'll probably find more reasons in the future.

@Carreau
Copy link
Contributor

Carreau commented Jun 13, 2017

As a non-gitter user, gitter seems fine; mypy uses it too, and I'll probably find more reasons in the future.

One thing I'm scared about is if the channel is empty. I personally have set Gitter to " shut up even if I'm mentioned", otherwise I'm interrupted every 2 minutes. And seeing in some channels users asking questions without getting answers for week at a time is (IMHO) more harmful that not having a channel.

If you post something in gitter after a month is equivalent to /dev/null, while any other async (😉 ) channel seem better. (I consider gitter as sync, as you can't really go away and come back to the discussion later).

python-trio/messaging :trollface: (actually that would be pretty cool, similar to how various popular frameworks have larger-scale examples).

Not that bad of an idea, some projects have repos/orgs for discussion. Actually a github issue is not that far form a "Topic", you can subscribe/unsubscribe individually, or per-repo, and GH UI push messages via websocket. The only drawbacks are:

  • you can't start a thread from a mail client.
  • you need a GitHub account.

Honestly the second one is not a drawback for me, and I think the first one I can do without.

@buhman
Copy link
Member

buhman commented Jun 13, 2017

have repos/orgs for discussion

I was actually trying to suggest we write yet-another-irc-competitor in trio.

@Carreau
Copy link
Contributor

Carreau commented Jun 13, 2017

I was actually trying to suggest we write yet-another-irc-competitor in trio.

that's also possible :-)

@njsmith
Copy link
Member

njsmith commented Jun 13, 2017

I do have the trio gitter set to notify me on everything. (You can do per-channel overrides to your default notification settings.) Sometimes their email notifications have been flaky for me, but hopefully no one will be waiting a month for a response...

@Fuyukai
Copy link
Member

Fuyukai commented Aug 30, 2018

This discussion came up today (ironically enough) on Gitter, and some limitations (including the Android app being subpar, and for me a dislike of the UI), but that it's advantage is the very low barrier to entry with just signing in with GitHub and being instantly logged in.

Discord seems like a better fit, despite the marketing, with it being a proper chat platform, having a similarly low barrier to entry (click the invite, enter your username, done), and with some other OSS organisations moving to it (including Vue, Yarn and the Opus foundation): there's even a full page on the Discord website for it - https://discordapp.com/open-source. It also has some useful features such as special support for GitHub webhooks and standard markdown support (including HLJS code blocks), so it matches Gitter in that part.

@njsmith
Copy link
Member

njsmith commented Aug 30, 2018

@pquentin also pointed out this link to the rust folks talking about trying discord: https://internals.rust-lang.org/t/exploring-new-communication-channels/7859/32

[Edit: Some more projects "We're moving to discord" announcements: Home Assistant, Vue.js]

@Fuyukai does discord save all the logs? (As compared to eg slack's free plan, where logs are limited.) Can you export them?

Can you link to bits of chat from the bug tracker? (Not absolutely necessary, but I find this helpful given that gitter is where we do a lot of user support, which often generates follow up bugs.)

Is it possible to get a "preview" of the chat before signing up for an account?

Discord iirc has multiple channels as a core feature – is it possible to push everyone into a single channel for now? (I don't think we're big enough for it to make sense to have multiple channels, and it feels like there are benefits to everyone seeing what everyone is doing.)

How well does discord work on mobile browsers? I've used it on desktop, but I just tried logging into a channel on my phone and what I got was this full screen, clipped, impossible to close overlay...

screenshot_20180830-131800

@Fuyukai
Copy link
Member

Fuyukai commented Aug 30, 2018

does discord save all the logs?

Yes, forever, unless deleted.

Can you export them?

Not currently.

Can you link to bits of chat from the bug tracker?

There's a feature in Canary (the test track) that lets you link directly to messages, so soon enough yes.

Is it possible to get a "preview" of the chat before signing up for an account?

Unfortunately no.

Discord iirc has multiple channels as a core feature – is it possible to push everyone into a single channel for now?

Yes, just don't make any other channels. (Although, it would probably be better to have a #main and a #github channel to separate the webhook spam).

How well does discord work on mobile browsers?

Never used it on a mobile browser but presumably poorly - the way you're meant to do it is with the apps (which are both reasonably good quality).

@njsmith
Copy link
Member

njsmith commented Aug 31, 2018

@Fuyukai Is it possible to have a single URL which (a) if you're already a member of the chat, puts you into the chat, (b) if not, invites you to pick a username and then puts you into the chat?

@Fuyukai
Copy link
Member

Fuyukai commented Aug 31, 2018

That's what an invite URL does (e.g. https://discord.gg/GjN3c4).

@njsmith
Copy link
Member

njsmith commented Aug 31, 2018

@Fuyukai the reason I asked is that I tried clicking on an invite link for a discord I'm already a member of, and it gave me the "So-and-so invited you to join [discord name] ... Accept invitation?" page instead of putting me in the discord.

@njsmith
Copy link
Member

njsmith commented Aug 31, 2018

Probably worth writing down the issues we've had with gitter here. The good parts: the onboarding is super-simple – you can view chat, and follow links to archives, totally anonymously; logging is ~three clicks if you're already logged into github. How to use the interface is obvious at a glance: just type in the box at the bottom. Unlike IRC, the history is persistent and it supports code blocks. The desktop web interface basically works fine.

The bad parts: the mobile UX is super buggy, in frustrating ways.

If you use the mobile website, then there's no notification support, and it likes to send half-written messages any time you glance at it funny. (Some things that gitter mobile web treats as hitting send: pasting any text. accidentally touching anywhere outside the text entry box. switching to another app or tab to look something up.)

If you switch to the native android client, then the auto-send thing is reduced (though not entirely eliminated), and you get notifications. The notifications cannot be configured to be silent, though, which is annoying. And, what's worse, the client regularly enters a glitched state where it stops showing other people's incoming messages. It's even common to get a notification, click on it, and find that the notified message isn't visible. Or to talk and think people aren't responding, but they are, you just can't see it. The only solution seems to be to force-quit the app regularly (e.g. go to the app switcher, and push the gitter tab off to the side to remove it from the list). This is not a rare problem; earlier today I had to do this like, 3 times in an hour.

How many people care about mobile? Hard to say. It annoys me, but I can cope if I have to – I'm more worried about accessibility for new users. And we see people mentioning hitting these issues and getting frustrated pretty regularly.

@sorcio
Copy link
Contributor

sorcio commented Aug 31, 2018

I occasionally used the Gitter mobile client on iOS and it has similar issues to the Android one. It's good to have mobile access and it's nice to have notifications when you need them, but it's not a tool one can rely on.

@njsmith
Copy link
Member

njsmith commented Oct 19, 2018

Working on closing up tabs, so here are some more notes I accumulated a while ago:

Rust trying out discord, and some discussion: https://internals.rust-lang.org/t/exploring-new-communication-channels/7859/147

More discussion in the Rust context. Has lots of discussion specifically comparing Discord and Zulip (with people's experiences!): https://internals.rust-lang.org/t/where-should-the-compiler-team-and-perhaps-working-groups-chat/7894/58

Summing up some of the trade-offs:

  • Discord: Terrible accessibility for blind people. If you want to use it on mobile, then native app is mandatory, but good quality. Some companies block access to Discord from their networks because it gets classified as a "game website". Really robust moderation options, for both admins and for individuals. Public logs / linking is weak.

  • Zulip: open-source, written in python, very active community, and I know some of the devs – though their priority is (rightly) on features needed by paying customers. Reasonable moderation for admins, though not as much for individual users (e.g. currently no way to mute/block another user). On mobile, the regular website is fine, or there are mobile apps that aren't as mature yet as Discords, but are under active development. Public logs / linking is weak.

In general, everyone seems to agree discord is easier for users to get started, while zulip is preferred once you get used to it. (One typical reaction.) In particular, zulip's "threading" system makes it much better at handling multiple conversations happening at the same time, and conversations that run over longer periods. It's focused on serious collaboration, not just chat. This is tough, because we kind of care about both use cases a lot. I really really wish Zulip had a lower-friction onramp...

Another one I looked at: spectrum.chat. Interesting hybrid chat/forum model... basically a forum but the UI encourages single-line posts that appear in real-time for anyone else looking at the thread. open-source. pretty immature – they're working on initial versions of mobile apps now (https://github.com/withspectrum/spectrum/issues/1803), and moderator tools are planned but they haven't even started working on them (https://github.com/withspectrum/spectrum/issues/2451). So probably not worth serious consideration yet.

@goodboy
Copy link
Member

goodboy commented Dec 2, 2018

@njsmith fwiw spectrum joined GH and is offering everything for free now. I personally haven't touched it yet but figured I'd add the info.

@njsmith
Copy link
Member

njsmith commented Dec 2, 2018

@tgoodlet oh interesting. Well, I guess we'll see whether this is the kind of acquisition where it means they get more resources to fill in the missing pieces, or the incredible journey kind.

@njsmith
Copy link
Member

njsmith commented Jan 15, 2019

Heh, in case we do want to take advantage of Discourse's free hosting for OSS projects: we recently passed the old qualification requirement (2000 stars), and they dropped that requirement a few months ago :-) https://twitter.com/discourse/status/1059411135382872064

@njsmith
Copy link
Member

njsmith commented Feb 2, 2019

Maybe it's time to get a Discourse forum? It's a forum, so complementary to the chat channel, and it seems like we might be getting to the point where it'd be helpful to have a place where people can ask longer-form questions, show off their work, etc. Any thoughts?

@Ninpo
Copy link
Member

Ninpo commented Feb 2, 2019

A forum sounds like a mighty good idea. I do have a decent hosting solution I'm happy to donate space on if that's an issue. You're welcome to a subdomain on my qap.la domain or if you've one you'd like to use etc etc.

@njsmith
Copy link
Member

njsmith commented Feb 2, 2019

@Ninpo thanks for the offer! I think we're going to try hard to stick to managed hosting though – I've seen too many projects waste too much time on sysadminning instead of working on their actual project :-). And Discourse-the-company offers free hosting for OSS projects.

@njsmith
Copy link
Member

njsmith commented Feb 3, 2019

OK, I filled out the request-a-free-forum form at https://blog.discourse.org/2016/03/free-discourse-forum-hosting-for-community-friendly-github-projects/, so we'll see what happens next :-)

@xgid
Copy link

xgid commented Feb 4, 2019

Maybe it's time to get a Discourse forum?

Yes please! As I commented some months ago I find Gitter UX really annoying. I know it's intended for ephemeral real-time conversations, but trying to follow any conversation there if you are not directly involved is nearly impossible as soon as two conversations get intermingled. And GitHub has also it's limitations.

I've been lately following Discourse with great interest and I find it really well thought. One of the greatest features I've found so far is the possibility to move off-topic messages to other topics to keep the topic "focused": it's the same than refactoring a too long function into several functions to keep away from spagetti-code, but applied to discussions. It's a brilliant idea!

Of course, it demands some moderation effort to keep it all organized... but at least you have the possibility! 😉

I'll be following this with great interest.

@oremanj
Copy link
Member

oremanj commented Mar 12, 2019

The Discourse forum seems to be working well. Is there anything left to do here?

@njsmith
Copy link
Member

njsmith commented May 11, 2019

@pquentin
Copy link
Member

pquentin commented Sep 8, 2019

The latest update from @mhoye: http://exple.tive.org/blarg/2019/09/06/forward-motion/

They're going to test Mattermost, Matrix/Riot.IM, Rocket.Chat, and Slack. Here's why they discarded the other candidates:

  • Zulip, Gitter.IM and Spectrum.Chat all look like strong candidates, but getting them working behind IAM turned out to be either very difficult or impossible given our resources.
  • Discord’s terms of service, particularly with respect to the rights they assert over participants’ data, are expansive and very grabby, effectively giving them unlimited rights to do anything they want with anything we put into their service. Coupling that with their active hostility towards interoperability and alternative clients has disqualified them as a community platform.
  • Telegram (and a few other mobile-first / chat-first products in that space) looked great for conversations, but not great for work.
  • IRCv3 is just not there yet as a protocol, much less in terms of standardization or having extensive, mature client support.

@pquentin
Copy link
Member

I am delighted and honored to say that we have one candidate that unambiguously meets our institutional and operational needs: we have decided to replace IRC with Riot/Matrix, hosted by Modular.IM.

https://discourse.mozilla.org/t/synchronous-messaging-at-mozilla-the-decision/50620

@FSX
Copy link

FSX commented Jan 13, 2020

Gitter is not really pleasant to use for me. I use Matrix, next to IRC, and I like it.

From reading this thread I collected some requirements and nice-to-haves.

  1. User/Visiter must easily drop in the room/channel.
  2. Don't miss messages.
  3. No/Low costs.
  4. No walled garden / Not proprietary.
  5. Login via Github.
  6. Export data.
  7. Threads within a room.
  8. Link to conversation from the outside, e.g. a bug tracker.
  9. Accesible from a mobile device.
  10. Invite users with a URL.
  11. Room moderation.

The list for Matrix:

  1. User must register before being able to visit a room.
  2. Yes!
  3. It's open-source and vcan be self-hosted, but the matrix.org
    instance is free to use.
  4. No problem. There's also federatiopn with other servers.
  5. No.
  6. No, but there open issues. See Feature request: export chat logs element-hq/element-web#2630 and Feature request: import/export API of messages matrix-org/synapse#3716.
  7. No, but there's an open issue. See: Threaded Messaging element-hq/element-web#2349
  8. Can't find anything else about this.
  9. Yes, there are mobile apps.
  10. Yes. Example: https://matrix.to/#/#python:matrix.org
  11. Yes, see: https://matrix.org/docs/guides/moderation/

List of clients: https://matrix.org/clients/

@njsmith
Copy link
Member

njsmith commented Aug 24, 2020

It turns out that there are some third-party apps that let you do very low-friction preview and embedding of Discord channels, without logging in:

I'm not sure why there are two, or what the tradeoffs are between them.

I'm also not sure whether they help with making permalinks to specific chat messages in logs or not.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests