There is Zulip, which is open-source:
A slightly different perspective, and possibly unique to me, but maybe not: I find chat on SO a bit… exclusive. “Exclusive” isn’t quite the word I want, but I’m struggling for a better one. I definitely don’t mean “unwelcoming”. The few times I’ve used chat I’ve had no issue with feeling welcome, beyond the obvious and unavoidable challenge of joining a conversation mid-flow.
To elaborate, I’ve been a SO user since 2010ish. Not particularly active, but I’ve asked and answered a few questions, and reviewed and edited when I’ve had time/motivation. I’m dimly aware of chat, and have wandered in there from time-to-time, but never regularly. I’ve always had the feeling (confirmed above) that much of the real moderation happens there, particularly (I guess) the SOCVR channel.
That feeling leaves me unsure of the value of my contribution. For example, when I see a really awful question, I’ll VTC it, and usually nothing will happen. My vote will age away and that will be it. But then I see plenty of similarly-awful posts that have been closed within seconds of being submitted, presumably because it’s been posted in SOCVR, or somewhere similar.
In other words, it feels like someone who frequents chat has an infinitely more powerful close vote than mine. It also feels like the moderation is less transparent than the tools imply.
I realise that the reason moderation happens in chat is because the tools provided by SE are not up to the job, and also that - with close votes specifically - the queue is too long to work effectively, even with only 3 votes required.
I suppose the main thing I’m getting at (and I don’t imagine it’s controversial) is that the priority should be good moderation tools, which would reduce the need for (and, perhaps, complexity of) chat.
Would it be a reasonable metric to suggest that if someone needs to discuss a specific post in chat, then that should identify a potential improvement for the moderation tools?
Not to gainsay @heather’s perspective, but mine’s quite different.
The site I moderate has two chat-rooms: one for everyone & one just for moderators. For both, it’s rare that two or more users are logged on simultaneously, & typically the time since the last message is measured in days rather than hours or minutes. Only once in five years as a moderator have I issued a chat suspension; excepting that, the nearest thing to moderating chat that I’ve had to do is to suggest that a question would be more suitable for the main site. Comment threads on Meta can get rather discursive or tangential, even phatic at times, but there doesn’t seem to be any harm in that.
Though it’s certainly useful for moderators to be able to discuss individual users’ behaviour in private from time to time, I don’t see why it would necessarily be more than a minor inconvenience, if any, to use separate chat software for that purpose; & once an MVP’s up & running, I’d like to think it will incentivate people to come up with all sorts of bells & whistles for Codidact.
If the main purpose is to have a place where moderators can discuss in private, wouldn’t a moderator-only category be sufficient? Basically, there would be a meta-like moderation category where they would have posts just like in meta, but only visible to moderators.
On the face of it that seems like over-kill @celtschk, when all that’s needed is private messaging & notifications—but if it’s easy to do it’s a great idea.
I believe it’s easier to implement than private messaging. Categories will be implemented anyway, so all that would be needed is a flag “moderators only” in the database, and for any function that requests categories from the data base, this flag to be checked against the moderator status of the user (so for non-moderators, the category would simply be non-existent).
And the actual format would be the “Discussion” type as suggested by @cellio for Meta - Questions (= topics, sort of) but then no actual Answers - instead just threaded comments.
That sounds perfect @celtschk & @manassehkatz. (Perhaps I misused the term “private messaging”—I just meant to say that only certain people should see certain things.)
I know what you mean. Have you seen StackExchange chat rooms, which don’t belong to StackOverflow chat room group and don’t have strict rules like “read these rules or we’ll kick you out” per-room policies? I don’t know any chat room on the StackExchange room list which has strict rules like that, and I’ve always found them to be what I thought chat should be - open to all, without all these “experts only” boundaries. Of course sometimes high thresholds are necessary for the scales of SO but the problems that come with that haven’t necessitated such thresholds on any of the SE chats as opposed to SO chats.
So just for a better understanding of how chats can be and how they actually are on SE, as a live example, you can check some of the more populated rooms and see for yourself how much better they are in terms of openness and inclusiveness to all users than SO chat rooms.
Is there somebody who (a) is interested in chat and (b) isn’t working on MVP tasks who’d (c) like to do some investigation?
TopAnswers has a chat system that is somewhat separable. It makes assumptions about chat table layout, of course, but fortunately for us, we haven’t done any work there yet so there are not yet any incompatibilities. @JackDouglas pointed me at https://github.com/topanswers/topanswers/blob/master/chat.sql for the “API”, which could be nearly plug & play for us. Of course there also needs to be integration code, and that would be different for us – for starters, they use PHP and we don’t. That logic, which Jack says is mostly polling and display logic, is in https://github.com/topanswers/topanswers/blob/master/get/chat.php. I don’t know PHP, but I note that that’s not a large file.
Your mission, should you choose to accept it, is to take that SQL, look at that PHP, and work out what it would take to stand up chat on a standalone page (for now). I.e. not integrated into individual posts or the question page like on TopAnswers, but like if you took TopAnswers’s chat pane on the right and made it its own thing. Come back with an assessment of how easy/hard it is and how well it meets our needs as currently understood. Make and document any assumptions you like (such as whether it’s a separate database). This is an exploration, not something that ends in a PR.
Any takers?
I disagree with the fact that we should use some third party software to rely on chat. Chat implementation should be easy (because of our stack).
Some points here that I strongly agree with are the need of chat for many many important aspects of moderation of a high-quality source and community building.
The question is, should we include chat in MVP given its necessities and the important points above? According to a book that I have been reading,
“A minimum viable product (MVP) helps entrepreneurs start the process of learning as quickly as possible. It is not necessarily the smallest product imaginable, though; it is simply the fastest way to get through the Build-Measure-Learn feedback loop with the minimum amount of effort.”-
~ Excerpt From: Eric Ries. “The Lean Startup: How Today’s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses”. Apple Books.
Well said there.
That’s why a chat is crucial. For the points that were listed above to the fact that not everyone is going to join our discord.
Would it be possible to enumerate (some/most of) these aspects? I’m struggling to understand what parts of moderation need to happen in chat, that wouldn’t be better represented as first-class citizens of the moderation process.
One example I can think of, which I alluded to above is someone identifying a post that’s particularly, egregiously, bad, and wanting it to be closed quicker than would normally happen as part of the close process. To me that just means that the close process needs improving.
If there are currently things that need to happen in an ad-hoc, conversational way, wouldn’t it be better to try and codify them into a repeatable process, which improves transparency, accountability and fairness, and also makes it easy to tweak that process over time as gaps in it become apparent?
Am I understanding correctly that the person to take up this task should research the linked PHP code (TopAnswer’s chat system) and decide on what could be kept, what could be changed & how difficult it would be to re-write that system (with changes) in our stack?
Yes. As I understand it (I’m not fluent in the relevant languages), the PHP code encodes business logic and calls into the SQL functions. On TopAnswers, the UI presents chat alongside either a question list or an individual question; for this exploration for Codidact, I’m suggesting a UI that just shows chat by itself, not integrated with Q&A. I mean re-implementing business logic in our stack, not integrating PHP.
Features to look at include basic message UI (who, when, message), handling replies (first, they exist, and second, on TopAnswers they’re highlighted on hover), multiple rooms (they have a switcher), treatment of new messages (on TA, like on SE and here on the forum, the page title changes in the browser tab), and probably other stuff I’m not thinking of. Broadly speaking, can we use this? How much work would it be? Do we want to?
Basic things include
- Communication between moderators to avoid clashes in any aspect.
- Deciding how things should be handled and what step next should be taken.
- To converse about various steps taken by other mods that could’ve been wrong or better handled.
- Making sure that the decisions that were taken (for moderation on the site) are available to everyone.
These are some basic things that would help in moderation but other than that, it has benefits too. Please see the points listed above : Chat system and its usage - #11 by heather
I’m willing to take this on, especially if weegee is also interested.
I won’t be able to start until February 8th, though.
I’m a full-time java developer but had plenty of C# experience in college 3 years ago and even more PHP experience from 5 years (My first project was with PHP).
@weegee mentioned jumping in & getting a basic mockup / barebones sooner than later & I agree. It’ll also help get an idea of the work required.
Looking at the Discord chat now, we may have some disagreements (I think the TopAnswers code will be very useful, doesn’t matter that it’s in another language). But I’m sure we can put that aside lol
It’s been clarified our stack is C#. Obviously no PHP code is going into this.
Yeah, the PHP code is for reference, not for integration. The SQL, on the other hand, we might be able to use wholesale or nearly so, depending on what you find when you get in there.
Thanks for volunteering. I think this exploration will help us make decisions about how we do chat, what we can reuse vs have to do ourselves, and how much work it’ll be.
Edit: I’ve now seen in Discord that some think this isn’t actually a useful thing to do. If that’s so, then I’m fine with that. I saw an opportunity and thought it could reduce our workload significantly. I now see that this isn’t necessarily the case. I withdraw the suggestion/request.
When we get to chat I still think we should look to their SQL for inspiration. I hear the feedback that the C# business logic would be different enough, and not that hard, that the PHP code doesn’t help.
Actually, I don’t think so, for a bunch of reasons:
- SQL code isn’t generally terribly inspiring - I’ve never though of it like “The Gettysburg Address” or “I have a Dream” (I know that’s not what you meant, but basically SQL is a tool to get specific stuff done, it is coded to match the needs, nothing special to it IMHO).
- We are using an ORM of sorts, so the raw SQL code doesn’t much matter anyway, as long as what the ORM generates (based on our specs., etc.) is reasonably efficient.
- If the tables are structured differently than the SQL changes quite a bit.
All that being said, I think a look at the code (including SQL) can be informative and help with the design of a chat system in a different language.
Yeah, I didn’t mean Gettysburg address but, rather, somebody else has already thought through that table design and those SQL functions; do they work for us too? Even if we’re not writing the SQL directly, that ORM has inputs that generate SQL, so if that’s the SQL we want, we presumably know how to tell the ORM to do that, right? As opposed to starting with “hello, ORM, what shall we make today?” and a blank screen.