python-trio / trio

Trio – a friendly Python library for async concurrency and I/O
https://trio.readthedocs.io
Other
6.2k stars 341 forks source link

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

Open ghost opened 7 years ago

ghost commented 7 years ago

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?

njsmith commented 7 years ago

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 :-).

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 commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

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:

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 commented 7 years ago

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 commented 7 years ago

(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 commented 7 years ago

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:

buhman commented 7 years ago

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 commented 7 years ago

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:

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

buhman commented 7 years ago

have repos/orgs for discussion

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

Carreau commented 7 years ago

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

that's also possible :-)

njsmith commented 7 years ago

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 commented 6 years ago

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 commented 6 years ago

@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 commented 6 years ago

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 commented 6 years ago

@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 commented 6 years ago

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

njsmith commented 6 years ago

@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 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

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:

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 commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

@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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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

njsmith commented 5 years ago

Some more thoughtful posts on real-time chat / IRC:

pquentin commented 5 years ago

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 commented 4 years ago

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 commented 4 years ago

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 https://github.com/vector-im/riot-web/issues/2630 and https://github.com/matrix-org/synapse/issues/3716.
  7. No, but there's an open issue. See: https://github.com/vector-im/riot-web/issues/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 commented 4 years ago

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.