drift-git / preliminary-discussions

Just a repository that will contain the product of some of the preliminary discussions about things related to Drift.
1 stars 0 forks source link

Product Idea #1

Open Joshuad2uiuc opened 4 years ago

Joshuad2uiuc commented 4 years ago

This will be a discussion of what the Drift product will be in a finalized state. Ideally, would like to have a discussion of MVP features and some 5 year type road map of finalized product goals (subject to changes along the way obviously).

Joshuad2uiuc commented 4 years ago

Drift Plan

Drift from conversation to conversation

Online messaging has only two types of messaging, for the most part. There is IRC like messaging of Slack/Discord which are just big group chats with some features. Then there is the forum style places like Reddit. The issues with these to me are

The Structure of a conversation is inherently graph-like to me. There are certain things like an article that is posted or a question, and people respond to it. In an IRC-like channel, it looks like

Josh: twitter.com/asd14tasf/

Person 1: That is cool

Person 2: Wow this is dumb

Person 3: I saw this on facebook

The IRC style makes more sense in 1:1 conversations (even then, not all of the time). When a messaging server gets too large though, this relation is not as easy to see when the messages get pushed up forever and theres seemingly many different topics being talked about at once. Anyone in large Discord and Slack servers know this problem.

The issue with Reddit is that the UI/UX of browsing this is hard. There is a lot of collapsing that is going on, scrolling, and trying to figure out who is replying to who.

Furthermore, adapting things to AR/VR are going to be difficult. IRC was made a long time ago, and forum styles were made a long time ago as well. The design of these are going to be poorly adapted to what AR/VR browsing of the internet may make capable.

The end result is to have some software that allows for a graph-like conversation, with good UI/UX, is transparent, lets the user own their data, own the code, see the decisions being made for the product and discuss with it as well. I think it would be nice to make it in a way to cater to the most hard core privacy people or something hard core, like the people use matrix or something.

More specifics

The data structure that the conversations will have to follow is a graph. Say we have a channel in discord, one person posts a link. That link is considered the alpha node. To reply to this, you have to explicitly make a thread. If someone wants to reply to the original link, they make a thread off of that link. If they want to reply to the person who replied, they make a thread off of that.

So the alpha node is a special node, in that it is the top level node. Then people are allowed to reply to exactly what they are wanting to reply to. So there are a few definitions here

AlphaNode {
    content: Message,
    children: Vec<Node>
}

Node {
    content: Message
    parent: Node or AlphaNode,
    children: Vec<Node>
}

The way to visualize this is different for each sort of platform

Desktop

Desktop I imagine it similar to discord for parts. There is a list all the way to the left that is the private servers you are in. Then, there is a list of the different types of channels. Then there are two focuses in the remaining screen size. One view is the list of alpha nodes you are browsing in each channel. Then if you click on an alpha node, it opens that node on the left side of the screen, and shows the neighbors of it on the right side. If you click a neighbor of the alpha node, then the neighbor now becomes the node being viewed on the left side and you can see previews of its neighbors on the right side. Each node, including alpha nodes, will contain some sort of visual indicator of "heat". If a node has a lot of neighbors, it will have a warmer color indicating this, if it has less it will indicate it by showing a cooler color. To go back is to go the parent of the current node, which is what was in the left pane previously. There will be some sort of indicator at the bottom or on the message itself when you can reply. If it is on the bottom, you will reply to whatever is in the left pane in view, or you have to manually click to view it.

Mobile

Mobile is going to be interesting. The way we do traversals is going to be via swiping. Similar to discord, you can swipe to the right to view a channel, and then you can click on one and that channel is in focus. Then, you can scroll up and down to view alpha nodes. When you click on an alpha node, it brings it into focus, and you can swipe right on that node to view its neighbors. To go back up to the parent, you swipe left on the screen. To reply to a node you double tap it and a pane opens up to reply to it

AR/VR

AR/VR seems under explored and also stretch goals, but the most intuitive way to view messages is as this graph structure. The AR/VR view would look similar to the desktop, except it is not click based but gesture based to view things. Either way, this is a nice way to view large and complex conversations.

javbit commented 4 years ago

I think to fully take advantage of the graph idea, having multiple parents would be cool. Kind of like citing multiple sources when writing a paper. Otherwise you're just left with a tree that, in my opinion, doesn't match natural discourse. This would allow users to show they're inspiration and train of thought.

More precisely, each node has children (neighbours) and parents (anti-neighbours).

Would be neat to explore how well this translates in terms of user experience.

Joshuad2uiuc commented 4 years ago

@javbit I thought about this too, but in terms of having multiple parents, I think a user would have to manually connect more parents. So in terms of UX, i think you could just by default allow a reply to a comment is that the replied to post is the parent, but maybe a user could also add additional nodes too as the parent. Or maybe an easier way is to give posts like some sort of UUIDs and just like a citation you could do "In reference to $1241 , $1231" or something, and then that automatically creates the relationship.