ircv3 / ircv3-ideas

46 stars 3 forks source link

Read only channel mode #41

Open prawnsalad opened 5 years ago

prawnsalad commented 5 years ago

A popular feature in public web based chat services and requested fairly often in kiwiirc, is the ability for visitors to see whats happening in a channel before actually joining it. Example, opening a twitch or youtube stream while not logged in. The client would then have the option to actually /join (or connect to the network in some cases...) it if the user wants.

Currently on kiwiirc people have bots in their channel that pipes all the content elsewhere, and then modifies kiwi to connect to the external service to collect messages. They typically have these read only interfaces on their website with a button "Connect now to talk!" before they can actually send a message.

This type of integration increases the number of users getting involved as it removes a barrier to see into a community.

I could see 2 versions of this though theres probably better suited methods an actual IRCd dev could think of.

  1. A client connects to the network as normal as a complete client, then taps into the read only mode channel.
  2. A client connects to the network but does not do a complete registration. As a full user instance is not required this could save resources on popular channels. The client would then be required to actually register as an ordinary full connection to join.

Would this be of any interest to IRCd devs?

grawity commented 5 years ago

Would these users show up as JOINs to members (or at least to chanops)? I have no particular opinion regarding the feature, but I'm reminded of certain ircds which support "stealth join" for nosy ircops ...

prawnsalad commented 5 years ago

@grawity the idea is that they don't JOIN a channel. Since it would essentially make the channel public I don't see why the channel would need any indication other than possibly an frequently updated "X anonymous users" message possibly?

This type of feature would usually attract a lot more users so we wouldn't want to spam all the users in the channel for every visitor (think: a channel embed on a webpage linked to a read only channel). A side benefit, for popular channels this would actually reduce join/part spam since most people are just casually seeing whats going on or watching.

AlMcKinlay commented 5 years ago

Presumably being blocked from a channel would also block you doing this. In which case, I really like that feature in chat systems that have it and would think it would be a good addition. I've been thinking about that in regards to the irc server I'm currently writing.

I guess it would need to tie into chathistory, as otherwise you'd just get future messages, and that would be less useful.

edk0 commented 5 years ago

Well, blocking people from reading a public thing doesn't make a lot of sense.

Whether it's possible pre-registration or not, it would make sense for this mode to be able to coexist with fully-joining other channels.

luxaritas commented 5 years ago

In the web chat built into our website, users who have not logged in (to our site) get connected to IRC with a nick that is some variation of "Anonymous", and our client hides those users. It'd be nice to be able to avoid that all together, and I think option 2 (not even completing registration) would make the most sense in this case, as with the examples of Twitch/YouTube. Totally agree that using chathistory would make a ton of sense. However eg in Slack when you can preview contents without joining a channel is more along the lines of option 1, working along side typical channel JOINs. Another option for that scenario might even be just requesting chathistory for a channel you're not JOINed to, if getting live content isn't an issue (does Slack/Gitter/etc actually update when you preview or just show you the history? Can't remember). Perhaps we need both? One's more server-wide, one's channel specific.

Symantic note: "Read only channel mode" doesn't seem descriptive - maybe "Guest readable channel mode"?

ribosomerocker commented 2 years ago

Ah, you mean "previewing" channels without joining them. This might be good, but it would bring up some privacy concerns. I would assume that just adding a channel mode that sets such channels to be previewable without joining would be good enough, while adding the needed facilities to preview the channel, perhaps by simply sending /view #channel that only works if the channel has the given mode. Or allowing requesting history for the channel by the clients even without being in it, it would be more minimal but it would also be a bit less user-friendly.