TechnitiumSoftware / Mesh

A secure, anonymous, peer-to-peer, instant messenger!
https://mesh.im
GNU General Public License v3.0
193 stars 58 forks source link

Option to chat with other party by selecting user from the People list. #10

Open shivbuyya opened 1 year ago

shivbuyya commented 1 year ago

Hi @ShreyasZare,

This messenger looks good, I have noticed that there are some issues related to user friendliness, some of the issues are listed below:

  1. To have private chat with any user, we need to get his 40 character user ID and then Add it. What is the way to get the user ID of other user? Because we can't use the user ID shown in the People list of Local Network Chat List.
  2. There should be an option to send private message to any user from the People list of Local Network. This feature is very important and it gives user the feeling of People list is contact list. So we can communicate with any contact in the same network.
  3. User Id of same user changes in each chat group, which creates confusion to the users. But why can't we have fixed User ID for a user irrespective of any group. Like a unique mobile number.
  4. Add Group Chat: I have created group named TestGroup, there is no option to add other user to group or to join the group using its network ID?
  5. Preview of images sent or received in the chat list?
  6. Add Private Chat: When we add the user Id of other user, it won't show to other user immediately to accept request. In some cases we could see only after restarting application.
  7. There should be an option to chat with any user in the Local Network group. For example If we click on the User-A's name, it should show chats with User-A.

Regards, Shiv Buyya

ShreyasZare commented 1 year ago

Thanks for the post.

1. To have private chat with any user, we need to get his 40 character user ID and then Add it. What is the way to get the user ID of other user? Because we can't use the user ID shown in the People list of Local Network Chat List.

There is no option to do that currently. The user ID to join a group is different than the one used to contact the user directly which is a deliberate design decision to prevent someone from connecting to you in private chat just because you are in a public group.

2. There should be an option to send private message to any user from the People list of Local Network. This feature is very important and it gives user the feeling of People list is contact list. So we can communicate with any contact in the same network.

There are a few ideas that can be implemented to make it easier to contact someone without causing privacy issues. The design has to walk the fine line of privacy and usefulness which makes it tough.

3. User Id of same user changes in each chat group, which creates confusion to the users. But why can't we have fixed User ID for a user irrespective of any group. Like a unique mobile number.

I agree that this is confusing since its not clear what the user ID is in the design. The user ID is generated such that you can have a single private cryptographic key and be able to generate different user ID to use. This is done so that you can change your user ID whenever required to prevent someone from stalking your. Since this is a p2p messenger, if the user ID is fixed then someone who has it will be able to find out your IP address whenever you are online. Changing the user ID prevents this issue.

4. Add Group Chat: I have created  group named **TestGroup**, there is no option to add other user to group or to join the group using its network ID?

To join a group, the new users have to create a group with same name and shared secret. There is no other mechanism available at the moment but some designs are planned to make it easier.

5. Preview of images sent or received in the chat list?

Currently the app is not in active development so a lot of features that usually are expected from a chat app are not available. But they will be added when the software development resumes.

6. Add Private Chat: When we add the user Id of other user, it won't show to other user immediately to accept request. In some cases we could see only after restarting application.

The reason for this is that there are no servers to make that happen. Everything is p2p which means it will take some time until the user on the other side is discovered. There are timers running which will keep attempting to find the other user on the DHT network and it may take a while for this to work. Restating the app will just trigger the timer and you will feel that restart was the reason for it to work but its just that waiting for a couple of minutes would have had the same effect.

7. There should be an option to chat with any user in the Local Network group. For example If we click on the User-A's name, it should show chats with User-A.

The local network group that is created by default is not a special kind of group. Its just that the app creates this "Local Network" names group when you install it and so all users have that same group and thus join it. The reason you cannot directly initiate private chat with the members is the same as discussed in the first point.

shivbuyya commented 12 months ago

Hi @ShreyasZare,

Ok thanks for the response. I have one more doubt please. I am trying to use this application in network where people connected in different range of IP Addresses. For example:

My network is such that all these IP addresses are reachable to each other, I mean can ping any IP address from each other. But in this network environment Mesh application did not list the other online users. In app's people section of "Lan Network", I could see only self user.

Is it possible to use this application in the given network condition? if yes please suggest any changes needs to be done?

Regards, Shiv Buyya

ShreyasZare commented 12 months ago

Thanks for asking. Currently, the design that Mesh uses for local network discovery is only limited to the current subnet. Thus in a routed private network, Mesh will not be able to discover users from another subnet.

The next Mesh upgrade has plans to make it possible but timeline for this is not known.

shivbuyya commented 12 months ago

ok thanks.

shivbuyya commented 11 months ago

Hi @ShreyasZare,

For my use case I need to communicate 4 devices in different subnet, I understand current version supports only one subnet as u already explained. But I would like to try to customize the code for my requirement, can u please guide me to do that?

Please let me know which section of code needs to be modified? This will help me to customize. Also any other valuable suggestions to how to go on customization for multiple subnet communication?

Thanks Shiv Buyya

ShreyasZare commented 11 months ago

For my use case I need to communicate 4 devices in different subnet, I understand current version supports only one subnet as u already explained. But I would like to try to customize the code for my requirement, can u please guide me to do that?

Please let me know which section of code needs to be modified? This will help me to customize. Also any other valuable suggestions to how to go on customization for multiple subnet communication?

Thanks for showing interest with contributing the project. The feature you are asking is not something which can be enabled with editing a few lines of code. It is quite complex since its p2p and there is no server to coordinate to discover chat clients on another LAN subnet. The feature will need redesigning a lot of things to make it work.

Right now, the only way this would work is if all of the subnets have access to Internet. So, you can just connect via the Internet which needs at least one client to have public IP address to be able to coordinate with rest of the people in the group.