The Future of Group Messaging
thejarren.com
thejarren.com
The problem doesn’t seem so much to be with the real time participants of the conversation. The problem is if you weren’t there to begin with. Reading chat logs is probably like attempting to read the transcript of your family holiday dinner. It would be nonsense. You’d have no sense of time, no sense of delay, no sense of conversational flurry, etc. As a passive “participant” reading the conversation, you’re disengaged from the very construction that led to it at all, so in practice you lose a sense of context or continuity.
So these proposed solutions are asking you to do more than communicate. They’re asking you to also organize. And the problem with asking users to organize in addition to communicate is that it’s easier to just not organize.
I feel like something like this makes sense in theory, but when you apply it to a group you'll have people either exclusively use the content feature or exclusively use the messaging feature. People don't want to need to think to chat, they just want to talk like they normally would.
However for larger groups and cases where you get more async communication I find it falls apart. In this case I like Zulip's approach of forcing every conversation to be a thread more. But honestly my favourite is still email's tree of comments (or Reddit sorted oldest-to-newest). It makes it easy to follow a threads and mute threads or subthreads. Few other systems deal so gracefully with tangential conversations which I find to be very common. Of course email has it's flaws, but for async discussion between a large number of people I find the ability to see the reply-tree to be the most effective.
Obviously the “work” asked of a user to create a post would be a new roadblock, but if they’re automatically created in most rich-content scenarios, no additional work would be required.
Even now, the reply feature arguably takes as much work as writing a comment on a post, though to some degree it lacks that immediacy.
On the flip side, visiting a comments section tends to feel more timeless than the conversation thread, so by automatically creating these posts within the feed, there could be more long-term value in each post, without drastically disrupting the immediacy of the chat.
I wonder if that hurdle is too large to jump, or simply a new feature for a user to take a few days to acclimate to?
I disagree hugely. At least for casual messaging, they're far too heavyweight for 99% of situations that are perfectly well suited to comment replies. Our brains are fine at picking out the context.
For casual chat, you don't want to overstructure things. Also with threads now you have to have some way of managing previous contexts (do you need to scroll up to find/reply to threads? Is there some sort of weird thread view?)
And I'm all for threaded conversations, something evolved from Slack's model. Purely linear is so damn noisy and participants are forced to follow a lot of uninteresting shit that could've gone on in a thread instead. This happens a lot even with chats with small groups of friends.
Zulip is unimaginably better for long-running semi-structured conversations, both for casual lurkers and heavy participants.
Ultimately, how many people actually care about chat backlogs. It’s 99% useless conversations that you can just skip over and participate in the current topic.
<cynical voice> The same people who want to wear Google Glass in bars...
This reminds me of a private virtual event I put on a few years ago which was done entirely over real-time text. There were a few people who wanted to be there, but wound up having a time conflict, so I set up to make a recording of the event—including timestamps, and providing a way to play it back correctly timed (optionally modulated by a speed control). It seemed to get a good reception.
Wonder if there's an opportunity for a new UI pattern here, that would make the sense of time explicit. I imagine it could be as simple as a visual separator between the messages, that scaled with the difference between messages. Perhaps with logarithm of the difference, to dampen large differences. Right now all we get are capped timestamps. But what if we could get something like:
20:01 Hey there?
_
Hi! How are you? 20:10
20:10 Fine, thanks, getting ready for
the party. You coming?
Sure, be there in 10. 20:11
20:12 See you!
_v_
03:14 Home.
___
Me too. This was fun! 03:50
VVV
14:40 What are you doing after work?
Substitute _, ___, _v_ and VVV for e.g. a subtle-colored graphic polygon that grows with time, so that the user wouldn't have to parse it.IRC has also the same model and people usually stay on topic, because that's what they are used to, it's on their culture. The same goes for other forms of communication, if it is old enough to survive, it'll have a culture around them and newcomers will have to adapt to the old ones if they want to be part of the community. Doesn't matter if we reinvent the wheel once again, if you can't discuss about something staying on topic the chat room is going to become a mess in a couple of minutes if there are more than 10 persons involved. You can have 50 different rooms for different topics but people go where there are other people talking (nobody wants to talk in an empty room), you need to moderate those rooms but at one point you can be there 24 hours a day if you had just created your chat group for fun.
But those same people deal just fine in a group of 20 friends at a bar, where they naturally break out into several distinct conversations with the people close by, and move to be closer to other people if they want to bet part of a different conversation. Discord/Slack/et al. force everybody to be "that guy" who shouts across half a dozen people to join in a conversation at the other end of the table.
There have been a few projects I've seen where people are trying to do video chat in virtual 3d spaces with sound localisation based on your avatars proximity to other users, which I think is an interesting approach, but I don't have any ideas about how to make that "localisation" thing work in a text chat context, apart from the not very useful "exploding number of slack channels" solution...
In a chunk of my friend groups - "ephemeral Signal chats with disappearing messages set to 1 hour or 1 day" gets used fairly successfully, where a side conversation can be taken out of the "main group chat" with the intention of it _not_ becoming an ongoing new group chat. It's still way more friction than turning round on a bar still and joining the conversation on the other side though...
Here's another possible but related solution. Have two views, and have a control on the page that will swap between chronological and thread views. In chronological view, have vertical lines behind the messages that connect a message back to the parent message - if it was a response. Don't indent messages - I still want to see my messages on the right and everyone elses on the left. In the threaded view a) reorders messages, b) moves these lines to the left and c) indents the messages. Extra points for animating the transition between views.
As for the site, I know that other's likely have different opinions, but here's mine. I had originally viewed the site with a browser with script disabled. It still worked and was a pleasant read. I did observe an empty panel under "The Solution". Later I looked at it on a different machine where the browser had script enabled and found myself annoyed with animations that added no information. But the missing "The Solution" panel was present. I don't know it I'm an outlier, but I find motion to be VERY distracting when I'm reading.
Another complaint - general but I'll highlight this article - is the ratio of words to markup. For this article, the ratio was about 5% - meaning that only 5% of the characters in the html document were displayed to me the user. That is a very heavy overhead of markup. Is that just par for the course in modern web publishing?
I'm new to that side of things, and it's a deep learning experience for me. I think my CSS styling is a mess, and the text is all over the place.
I'm using Gatsby.js and Sanity CMS on Netlify, though none of my projects are currently within Sanity's CMS because I couldn't figure out how to do that yet. Big learning curve for me. I wrote a bit about it on my blog, but sorry for the messy experience!
It was visually a pleasant read.
>connect a message back to the parent message - if it was a response
Assuming you've got a long list of timestamped messages, how do you identify which messages are continuations of old threads and which ones are starting a new conversation?
Organization like in the TFA just totally fucks up the flow of conversation, and totally ignores the fact that conversation is a graph, not a tree, and you naturally want to hop between conversation topics freely. You want to cross-post.
Not to mention that AFAICT just totally ignores tangents-within-tangents, a perfectly normal model of communication.
The fundamental problem though TFA is solving really is the treatment of persons-involved as defining a conversation, rather than the topic of conversation itself; The article has really just recreated BBS thread topics, with permissions scoped to a group of users.
Well in both cases you are dealing with a self referential set of fractal UI/UX objects.
Feed <> Post <> Flat Comment thread <> Sub-Comment thread_1 <> Sub-Comment thread_2 <> _x
Multiple conversation threads inside a BBS post means you 'view' the post as a feed, 1st Order comments as Posts, and 2nd oder...
Branches become trees and leaves become branches.
Building a single 'view' to handle shifting perspectives is not easy and OP seems to have at least thought this through with a proposal to have 2 different modes.
I'm looking forward to part_2 and (and maybe comparing it to my own conclusions ;}
The best representation is to flatten the graph (to produce a linear set of posts), and dynamically iterate from a post to its parents and children per user input. Inline post expansion ala 4chan[0] is the superior representation, because trying to decide ahead-of-time the best "hierarchy" to represent is the wrong question. The conversation is dynamic, and inter-related, and thus so too must be the UI. Obviously inline doesn't make sense on mobile, due to limited space, but its fundamentally more correct.
It's the same reason twitter conversations beyond a single thread are hard to follow -- you're iterating trees but you're trying to read a graph.
[0] http://freestyler.ws/images/styles_screenshot/1/84/42236/422...
Thanks for expanding my horizon !
I mean, they are, and I think it’s largely because of how effective the model is at enabling conversations (further enhanced by anonymity-by-default and low moderation). Twitter and Facebook threads/users of similar taste are utterly crippled by comparison, because conversations are really just announcements + virtue signaling. Even HN trees are similarly limited — half the conversations are 1-1 with no interjection.
You couldn’t have that kind of mess existing here even if you wanted to
That could be an interesting space for you to shape and explore given the full p2p architecture tends to result in creative workarounds.
Sqwok seems very interesting as well!
I’m not sure the conclusion applies for all cases. It may too easy to get lost in a thread behind an attachment.
Once I got used to it, iMessage’s UX has held up best (posting twice — once in focused thread and again in main thread). Not sure actual post has to happen in both places, but at least the activity should, otherwise there’s too high a risk to lose something or to have context switching set too high a friction bar.
At a base concept, I agree. I think without a mature version of this idea, content could become lost rather quickly. A further iteration would likely be able to deal with some of those issues (say an sortable/algorithmic feed, and notifications tab). A way to filter/sort activity might be able to solve some of those issues.
Creating an affordance to help users decide which type of message they want to send is key to increasing adoption here.
[1]: Screenshot here: https://techcommunity.microsoft.com/t5/microsoft-teams-blog/...
Unfortunately creating another post/thread for previously mentioned content is a problem with most platforms (HN & Reddit included). Calling on older conversations is often as valuable (or more valuable) as the new conversation, so perhaps a way to link/reference the posts in a more formal way would be helpful.
The threaded sub-conversations is a good point, but kind of changes the dynamic of what the group conversation is about. If you're responding to a sub-conversation above, how will other people be notified of that? Should everyone get a notification or just people involved in the sub-conversation?
In my mind that complicates things for users, as you have to find the group chat, then find the sub-conversation to comment on... it's just easier to put messages at the bottom in chronological order.
It would no longer be a deeply simple chat, but from my observations the mental gymnastics required to understand large group chats (500+ users) are no longer simple either.
I don't think the other methods should entirely disappear, but perhaps there are some use-cases that would be better-suited using this method.
If done manually (to a message, or group of messages) it could be within a menu (just like today’s long-tap to reply/react).
Hope that clarifies things. I had a section showing how I thought that could be better implemented, but I decided to save that for Part 2.
Why do you think that "media" is more likely to start a subthread than a regular message? It seems to me like this is unlikely to be a particularly effective distinction? Or is the intent that media + manual is close enough to perfect?
A message could become a post just as easily as users currently use "reply", instead they could "comment". Honestly in situations that use a "reply icon" the icon could even remain the same.
So yes, I think that media + manual is close enough to perfect.
The proposed solution is to separate chat and posts/content sharing. In no way does that solve for the example problem.
Am I missing something here?
I haven't figured out how to intelligently have a content-based news feed AND a serialized canonical feed of messages without making an algorithmic news feed.
Turns out writing news feed is a pain in the butt.
If this concept were given room to evolve, I think both could coexist.
There's the chat in the past that you seldom need to look through and the chat right now. When looking through the past, we're scanning for more specific information as a summary and images and thumbnails tend to get in the way and take more time to scroll past. When we're actually moving with the chat we want to know everything that's happening now, all at once, with high visibility.
Clearly, content takes up too much space in chats, especially when scrolling back. What if all content in a chat collapsed after an interval of say, 5-10 minutes? You can re-expand it if you really want to see it but you're probably more interested in what someone said in text because that's the core medium of communication. If the whole topic of a chat is content, then vice versa, collapse contiguous blocks of messages instead. It would make sense to give moderators some power over collapsibility. The user could have some tools too such as keeping open all posts from friends, or certain individual users, or with certain keywords. Maybe there are some other rules of what to collapse and when that would make some sense, like a continuous chain of replies should generally stay open.
To some degree that means our present products do a good enough job, but at least from observation, I think those products lack a bit of out-of-the-box thinking that I tried to present here.
Introducing too much of an opinionated interface would discourage tangents and off-topic banter, which I think is essential for a healthy group.
A different idea: delayed sending. If you want to have a conversation, but it doesn't need to be now, you can schedule your message to send in, say, 20 minutes, or whenever there is a pause.
If you want to implement a functional prototype, I would recommend hacking on top of one of the open source matrix clients [1], the open spec has experimental support for nested chat rooms ("spaces") [2] and threads [3].
[1] https://matrix.org/clients/
[2] https://github.com/matrix-org/matrix-doc/blob/kegan/spaces-s...
[3] https://github.com/matrix-org/matrix-doc/blob/kegan/msc/thre...
A hacked together proof of concept would be fantastic. I’ve used Matrix/Element, so it’s not completely unfamiliar territory.
1. It is useful to be able to navigate conversations by topic (and sub-topics etc.). AKA making the search/navigation/sense-making activities easy.
AND
2. It is useful to be able to just respond to what was seen last in a single stream. AKA making the responding/reacting activities easy.
No one has gotten this quite right yet.
Manual threading and nesting don't do this well, especially for graph structures. The ability in some applications to respond and reach to particular messages helps a little; but isn't coupled with a navigation view, and you can only respond to one 'message unit' at a time. (Though I also am not sure that the navigation interaction needs to be an entirely separate view as shown here.)
I expect powerful language models to dramatically change this landscape, doing the magic for people of creating the navigation/conversation type of interactions (e.g. automatically inferring/suggesting "what is being responded to" for each message, thus developing a conversational graph (which can then be summarized and shown in a variety of ways).
I'm curious who is innovating on this? (All I know of is https://quill.chat).
Oh, right. That's email.
I feel like this is already embodied in chat rooms that can pin messages. That can designate: "here are the active articles of discussion." This reflects my own bias, that it's not about having difference places, but more about ways to raise up content, highlight it, create views & indexes of the information we browse through.
The intent with this approach is to condense the regular conversation pieces, whereas the pinned messages typically contain content that changes less frequently.
Fun fact: this can be achieved with e-mail, no need to invent new protocols.
Real time is mostly a gimmick. It’s in the same category as video games and entertainment. A lot goes into making it performant and scalable but for getting things done in life it’s a net negative.
1. Those realtime notifications that interrupt your family time and dates, because the people on the other side have unreasonable expectations of immediacy
2. That 200th person today who entered your chat and said “Hey everyone!” adding zero new information.
3. The 30th time someone asked a basic question that was already addressed and could have been easily found in an FAQ or database or threaded view
4. The literally 27,503 messages you missed (many including “hi” etc.) that may as well have not been written at all as far as you’re concerned because you’re not going to scroll and even see them
5. By the time someone comes who can answer your question, it could have scrolled off the screen, but if you’re lucky they might go back in history, find it and tag you
5a. Chat is totally unstructured. So many people make plans via chat, it’s ridiculous. A marketplace or event list should not be negotiated via chat any more than chess games should all be blindfold chess with only the list of moves and having everyone reconstruct the position in their mind.
6. There is no goal, chat can go on endlessly, like those 9273837 comments about some publicly shared meme on facebook of which 2/3 say the same thing. Combine that with an algorithm that prioritizes “engagement” (ie ad revenue for the social network) and we wonder why our political discourse is beoken. We even began to create https://rational.app to fix political discourse.
7. It’s bad for OPSEC and anonymity also. People have been busted as an online pseudonym by cutting their wifi and watching the person go offline. How nice are those “presence” indicators eh? It was a huge undertaking at Facebook just so you could casually know when someone was online and ignoring you.
8. The fact is, that people will cut corners creating content if you let them. And on average there are far more readers of the content than writers. Making people slow down and write paragraphs and edit their thoughts before hitting Return is better than making them write one line spastically
because its so farsi call
far sickle
I mean farcical! Stupid autocomplete
Haha LOL
Lmao smiley face yea
hehe
Chat is slightly better than endless facetime or real life meetings which people often loathe.Now consider threaded discussions, tagging, and so on. The conversation is a tree. Each thread can have its own governance, and can be easily hosted by whoever started it. Things can be combined into an FAQ, in fact that’s how Stackoverflow works. And that will make every answer better, and every question has a better chance of being answered.
We are ON SUCH A SITE RIGHT NOW. Any part of the tree can be collapsed, or expanded. It’s easy to navigate. It can be represented in many other ways too.
You know what it doesn’t have? All of the above things. It doesn’t even ping you when someone replied to your message, which is the most addictive — err, sorry, “engaging” - thing of all.
Now go to your Telegram and look at those channels you’re in with 30,000 members. How many missed messages do you see? 7,000? Go ahead come in and interact with 0.1% of the channel that happens to be there the time. You said hi? You asked a question and no one around had any expertise? You left for and hour and came back to see another 500 messages, wasting time trying to scroll back to where you were? Yeah. That was realtime chat. Just like Facebook Likes and Cryptokitties, it is a gimmick that has benefitted almost no one.
Mainly (2). It's been a people problem, an lack of attention to organization principles and UIs since the beginning of digital time. You just can't try to have all this stuff inside one app interface/system. The chaos of chat simply can't become a repository of non-linear/knowledge without extraction/organzation after.
I agree, I think that regardless of methodology, some way to deal with the problem is welcome.
I want to enjoy using group chats, especially as they continue to mature.
Thanks for the follow-up!