Open mmbotelho opened 4 years ago
I have an idea of what the general layout of the chat should look like, here's a preview:
Here's the rationale behind some of the decisions:
Left-most sidedbar
Channels
The feedback I need at this stage:
Keep in mind that this is a draft and not all the UX issues are solved at this stage. However, please leave a comment with any concerns or suggestions on Figma, as usual!
@mmbotelho I think this general layout works quite well, and some little details still need to be thought about and added. Off the top of my head I can think of:
Per your suggestion, I can add additional feedback on Figma, and/or copy/paste this feedback there.
I added what you mentioned to the checklist above (I'm not sure if you saw it) but some of the details you mentioned were already listed there 😄
I just have one question, about the "UI for linking to a specific message" - can you explain better what you mean by this @taoeffect ?
I just have one question, about the "UI for linking to a specific message" - can you explain better what you mean by this @taoeffect ?
Sure, this is related to an already existing issue: #509 — Improve URL-based navigation
The basic idea is that we should strive to make as many "things"/"components" in the UI linkable, so that if for whatever reason we want to be able to send the user to some part of the app, we can — either programmatically because we want to show them something, or because the user themselves wants to show someone else something.
In this case, imagine someone posts an interesting message to the chat and that message gets pushed up in the history. It could be instructions on how to use git
to review PRs for example. Then 1 month later someone wants to send those instructions to a new member of the group. The easiest way for them to do this would be to search for that message, grab a link to it, and send that link directly to the person they want to share it with.
The UI would then load that specific message when the other person clicks on it.
Ok that makes sense!
I have on more related question @taoeffect - do we have any idea how we will manage the storage of these chat conversations? Will everything be stored or do we need to have some sort of mechanism to archive or delete old messages so we don't run out of space?
That's a great question. Regarding storage, we will have:
All of this will require a good amount of work to implement correctly.
So, from the users perspective:
Is this correct @taoeffect ?
@mmbotelho I don't think so... scrolling up should work fine. It should just load the historical messages from the server.
However, in practice there might be limits to this because of unforeseen technological limits placed on us by browsers. So in some cases an error might be displayed if you scroll too far, or in some cases scrolling will work without any problems. Assume for now that it works (or might not work) and that we'll handle both cases accordingly.
Ok, so no visible changes for the user, right? Except maybe some sort of loading
Right. And a "be flexible because we don't know exactly how this will work out" kind of mindset. :D
Ok, no worries!
In my opinion, we should keep the chat as simple as possible and within the "time budget". The way I see this thread, we are trying to replicate all the features that major chat apps have. In my opinion, that's a trap...
For example, "Channels" features are designed for huge groups with a large set of topics to talk about. GI groups are way smaller. Do we really need to have channels for the prototype? Especially when most groups will have ~5-10 members? (My guess, I can be wrong.)
I think some features are not essential (and the development cost can be high). We can add them later, but not as part of the prototype. For example:
Remember, GI current goal is not to be a "AAA quality" chat application. The chat is just a way to help the group members reach their income. Trying to replicate a "AAA" chat in such an early stage is a mistake in my opinion. What will make GI unique is the "mincome system". In my opinion, everything else is secondary to the prototype.
P.S. We cannot forget/ignore that probably a good chunk of the groups will prefer to keep their "communication channel" outside of GI (e.g. Telegram, Whatsapp, etc...) too.
@sandrina-p I agree that we should limit the functionality for the prototype.
However, I also think that many of these features should be designed — just not implemented.
If we were to do the opposite, and design a simple UI without channels, without public/private channels, etc., then we would have to spend a lot of $ unnecessarily in asking Margarida to redesign everything.
I do not like that approach, because it is costly not just in terms of limited funding but also in terms of time. I'd much rather get a flexible, powerful design from the outset, and limit its functionality in the implementation (e.g. with "Feature coming soon!" type notices).
@mmbotelho I just remembered something from prior conversations that appears lost in this design.
It is really really important that we create a design for the chat functionality that allows cross-group communication. I.e. please put some though into how members of Group A can still chat with members of Group B. I know that Slack recently introduced such a feature for their channels.
Additionally, you should be able to DM anyone whose full username you know (e.g. @userA@groupB.com
.
I agree with @sandrina-p as well. However, I'm ok with designing everything even if we don't implement it.
@taoeffect :
It is really really important that we create a design for the chat functionality that allows cross-group communication. I.e. please put some though into how members of Group A can still chat with members of Group B. I know that Slack recently introduced such a feature for their channels.
If you don't mind, I'll leave that for last. If you remember, we already discussed some possible solutions for this in Bulgaria. Anyway, I'll add it to the list.
Just to add to what @sandrina-p said, I think this (very complex chat) is a deviation of what GI wants to be. Do we want it to be an excellent fund re-distributor or an excellent chat? Doing both WELL, at the same time, is just not feasible so I think we should really focus our efforts here.
If we want to make an awesome chat that works really well, I believe it should be its own, separate project, that can be plugged into GI.
But anyway, that's my 2 cents. I'm ok with whatever you decide @taoeffect , but I do think it's important that we share our concerns with you.
If you don't mind, I'll leave that for last. If you remember, we already discussed some possible solutions for this in Bulgaria. Anyway, I'll add it to the list.
Sure, it would just be a shame if we ended up facilitating the creation of closed-nit cults. Although a remote possibility, I'd still rather make sure that users can use the app to communicate with whoever they want, not just those inside their group.
Do we want it to be an excellent fund re-distributor or an excellent chat? Doing both WELL, at the same time, is just not feasible so I think we should really focus our efforts here.
I understand that it seems like we would be increasing the scope too far.
We have already done a great job on implementing an excellent redistribution app, haven't we? Almost everything for that part is done.
It's well known that in order for people to put in the energy to migrate from System A to System B, there has to be enough of an incentive for them to do so. Sometimes that incentive has to be at least a 10x improvement.
Think about why people moved from flip phones to the iPhone. The iPhone was not just a better phone. It was not one new product. When Steve introduced it he made a big point of pointing out that they were not introducing a single new product, but 3 new products all at once. This was a necessary step, because had they introduced simply a better phone, people would not have migrated from the flip phones to it.
There is another reason to make sure we do a great job at chat: as I've spoken with people about Group Income, they have had concerns about how they will know about what's going on in the group with respect to financial changes. We are not building just a redistribution app, we are building an app to power communities. Such an app needs powerful chat functionality.
Update on the emoji selector for our chat:
I spoke to @sandrina-p about possible solutions that are fast to implement and design for our emoji picker (and that work across different platforms). She suggested this option and from what I've seen, it looks exactly like what we need.
I would also suggest that we use the Apple-style emojis for all devices so that all members see the same emojis (to prevent misunderstandings).
@taoeffect, maybe I should have been more clear. My main concern is the development part, not the design.
We have already done a great job on implementing an excellent redistribution app, haven't we? Almost everything for that part is done.
I disagree. There is still a lot to do. The redistribution is still very buggy, as well as the "decentralized system" where contracts get out of sync for weird reasons. And we still need to implement the Notifications system before moving to the chat. And "implementing" something is only half of the job. The other half is seeing real users using the app and approve it. Only then we can say we actually did something excellent.
Let's be pragmatic. We are just 3 developers in part-time. Doing an "excellent redistribution app" and closing the +50 "Priority:High" open issues will take time. Adding the "complex chat" feature will delay even more the prototype.
If you really want to do it @taoeffect, I'm okay. You are the one who takes the final decision and the team will follow.
We are all aware of how important/needed GI is, as a "mincome redistribution" app. Let's remember that each time we take the decision to sacrifice its prototype release (by delaying it) for an additional feature.
Regarding the emoji selector, what I suggested is meant to be used with React but there's also a VueJS based option.
@sandrina-p Maybe there was a misunderstanding somewhere, because I agree with everything you've said. I do not intend to delay the prototype because of the chat. Once the core functionality of the app is functional (all those issues you pointed out), then we will go ahead and release it, whether or not the chat stuff is done. Remember, the prototype and the 1.0 official release are two different things.
I am just saying that while I happen to be in recovery from overwork or an illness, and while we are looking to fill this position, we may as well move forward with both the Chat design and the chat implementation since the other stuff requires waiting on me to fully recover. Does that make sense? Let me know if you still disagree!
That makes sense, I thought your plan was to release the chat as part of the prototype. I misunderstood it.
Just making a note here per @mmbotelho's suggestion on Figma, so that I don't forget what was discussed on today's call: for DM's between people who are not in a group, we will leave that for the to-be-designed Lobby.
Problem
We need to make our chat match the rest of the app!
Solution
What needs to be designed:
Iteration tasks: This is a set of tasks that came up after the first draft of the chat functionality - mainly through suggestions on Figma: