status-go icon indicating copy to clipboard operation
status-go copied to clipboard

List what message types are using MVDS

Open plopezlpz opened this issue 1 year ago • 5 comments

Problem

We want to list all current messages types that are using MVDS and discuss if others should be included. This is a list of all message types: https://github.com/status-im/status-go/blob/65867d884e75094a4f76cc1d999f184bfdb3a268/protocol/messenger_handlers.go#L19 We want to know which ones use MVDS currently.

Acceptance Criteria

List of messages types using MVDS written and assesment if we need others to be using MVDS. If others need to use MVDS or existing ones should not be using it then a ticket to modify that.

plopezlpz avatar Jul 02 '24 07:07 plopezlpz

@fryorcraken FYI

plopezlpz avatar Jul 02 '24 10:07 plopezlpz

I see there are a lot of message type. I think we should do a table with the following columns:

  • 1:1 message
  • small private group
  • large encrypted group (
  • clear broadcast
  • MVDS is used
  • Needs e2e reliability

then we can review with Status to fill in the last column.

fryorcraken avatar Jul 02 '24 10:07 fryorcraken

I'm wondering should we update the MVDS spec to include this information, and use the spec as the source of truth? should we duplicate mvds spec to waku/specs from custodian perspective?

cc @jm-clius

kaichaosun avatar Jul 02 '24 12:07 kaichaosun

I'm wondering should we update the MVDS spec

I don't think the application usage should be part of the MVDS spec (which is app agnostic). We will certainly update Status protocol specs to include what reliability mechanisms they use. For now we can probably maintain a general Status Reliability raw spec in which we add information like the above. Note however that it's likely to change many times as we integrate e2e reliability more and more widely.

jm-clius avatar Jul 02 '24 13:07 jm-clius

Here is the sheet, it's hard to collect all the columns as the message types are spreading in the codebase.

kaichaosun avatar Jul 05 '24 06:07 kaichaosun

Here is the sheet, it's hard to collect all the columns as the message types are spreading in the codebase.

Thanks for that! Not sure the best way to include it in the specs, but I think we should have it as a way to document how Status uses Waku.

Could we add a column "MVDS TBD" that has the following formula: if Use MVDS != Yes && Need e2e reliablity == Yes && Chat Type == OneToOne so we have a view of the work to be done.

fryorcraken avatar Jul 18 '24 06:07 fryorcraken

@fryorcraken adding the column, need to fill the missing columns to actually use it as the next step. I've been slowing adding more info but hard to produce something in high quality. @plopezlpz you may have some ideas on how to proceed next?

kaichaosun avatar Jul 23 '24 08:07 kaichaosun

@fryorcraken adding the column, need to fill the missing columns to actually use it as the next step. I've been slowing adding more info but hard to produce something in high quality. @plopezlpz you may have some ideas on how to proceed next?

Thanks for that.

From @cammellos 's review. it seems that we need to add MVDS for ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN.

I don't think the chat type is correct as it is a OneToOne message (requester to community owner).

If that's the only message that should be MVDS and is not then, adding MVDS would be the only next action.

This then can be pushed to a Status RFC and used when integrating the e2e reliability protocol in status-go. Cc @jm-clius @shash256 @vpavlin

You can easily download the csv and use https://tableconvert.com/csv-to-markdown to make it markdown for the RFC. And probably add a reference to the sheet as well. E.g.:

Message Type Use MVDS Need e2e reliability Chat Type Next Step Encrypted
ApplicationMetadataMessage_UNKNOWN No No Not Applied No
ApplicationMetadataMessage_CHAT_MESSAGE Yes for OneToOne & PrivateGroupChat Yes One & Group & Community No
ApplicationMetadataMessage_CONTACT_UPDATE Yes Yes OneToOne No
ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE No Yes CommunityChat No
ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION Yes Yes Pair No
ApplicationMetadataMessage_DEPRECATED_SYNC_INSTALLATION No No Pair No
ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION Yes for OneToOne Yes One & Group & Community No
ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION Yes for OneToOne Yes One & Group & Community No
ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION Yes for OneToOne Yes One & Group & Community No
ApplicationMetadataMessage_REQUEST_TRANSACTION Yes for OneToOne Yes OneToOne & GroupChat No
ApplicationMetadataMessage_SEND_TRANSACTION Yes for OneToOne Yes One & Group & Community No
ApplicationMetadataMessage_DECLINE_REQUEST_TRANSACTION Yes for OneToOne Yes One & Group & Community No
ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT_V2 Yes Yes Pair No
ApplicationMetadataMessage_SYNC_INSTALLATION_ACCOUNT No No Not Applied No
ApplicationMetadataMessage_CONTACT_CODE_ADVERTISEMENT No No Not Applied No
ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION No No One & Group & Community No No
ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION_RESPONSE No No One & Group & Community No No
ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY No No One & Group & Community No No
ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY_RESPONSE No No One & Group & Community No No
ApplicationMetadataMessage_PUSH_NOTIFICATION_REQUEST No No One & Group & Community No No
ApplicationMetadataMessage_PUSH_NOTIFICATION_RESPONSE No No One & Group & Community No No
ApplicationMetadataMessage_EMOJI_REACTION No Yes One & Group & Community Yes
ApplicationMetadataMessage_GROUP_CHAT_INVITATION Yes Yes GroupChat No
ApplicationMetadataMessage_CHAT_IDENTITY No No OneToOne No
ApplicationMetadataMessage_COMMUNITY_DESCRIPTION No Weak Yes CommunityChat No
ApplicationMetadataMessage_COMMUNITY_INVITATION No Weak Yes CommunityChat No
ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN No Yes CommunityChat No No
ApplicationMetadataMessage_PIN_MESSAGE Yes for OneToOne & PrivateGroupChat Yes One & Group & Community No
ApplicationMetadataMessage_EDIT_MESSAGE Yes for OneToOne & PrivateGroupChat Yes One & Group & Community No
ApplicationMetadataMessage_STATUS_UPDATE No No Not Applied No
ApplicationMetadataMessage_DELETE_MESSAGE Yes for OneToOne & PrivateGroupChat Yes One & Group & Community No
ApplicationMetadataMessage_SYNC_INSTALLATION_COMMUNITY Yes Yes Pair No
ApplicationMetadataMessage_ANONYMOUS_METRIC_BATCH No No Not Applied No No
ApplicationMetadataMessage_SYNC_CHAT_REMOVED Yes Yes Pair No
ApplicationMetadataMessage_SYNC_CHAT_MESSAGES_READ Yes Yes Pair No
ApplicationMetadataMessage_BACKUP No No Not Applied No No
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_READ Yes Yes Pair No
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_ACCEPTED Yes Yes Pair No
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_DISMISSED Yes Yes Pair No
ApplicationMetadataMessage_SYNC_BOOKMARK Yes Yes Pair No
ApplicationMetadataMessage_SYNC_CLEAR_HISTORY Yes Yes Pair No
ApplicationMetadataMessage_SYNC_SETTING Yes Yes Pair No
ApplicationMetadataMessage_COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK No No CommunityChat No
ApplicationMetadataMessage_SYNC_PROFILE_PICTURES Yes Yes Pair No
ApplicationMetadataMessage_SYNC_ACCOUNT Yes Yes Pair No
ApplicationMetadataMessage_ACCEPT_CONTACT_REQUEST Yes Yes OneToOne No
ApplicationMetadataMessage_RETRACT_CONTACT_REQUEST Yes Yes OneToOne No
ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN_RESPONSE No Weak Yes CommunityChat No
ApplicationMetadataMessage_SYNC_COMMUNITY_SETTINGS Yes Yes CommunityChat No
ApplicationMetadataMessage_REQUEST_CONTACT_VERIFICATION Yes Yes OneToOne No
ApplicationMetadataMessage_ACCEPT_CONTACT_VERIFICATION Yes Yes OneToOne No
ApplicationMetadataMessage_DECLINE_CONTACT_VERIFICATION Yes Yes OneToOne No
ApplicationMetadataMessage_SYNC_TRUSTED_USER Yes Yes Pair No
ApplicationMetadataMessage_SYNC_VERIFICATION_REQUEST Yes Yes Pair No
ApplicationMetadataMessage_SYNC_CONTACT_REQUEST_DECISION Yes Yes Pair No
ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_LEAVE No Weak Yes CommunityChat No
ApplicationMetadataMessage_SYNC_DELETE_FOR_ME_MESSAGE Yes Yes Pair No
ApplicationMetadataMessage_SYNC_SAVED_ADDRESS Yes Yes Pair No
ApplicationMetadataMessage_COMMUNITY_CANCEL_REQUEST_TO_JOIN No Yes CommunityChat No
ApplicationMetadataMessage_CANCEL_CONTACT_VERIFICATION Yes Yes OneToOne No
ApplicationMetadataMessage_SYNC_KEYPAIR Yes Yes Pair No
ApplicationMetadataMessage_SYNC_SOCIAL_LINKS No No Not Applied No
ApplicationMetadataMessage_SYNC_ENS_USERNAME_DETAIL Yes Yes Pair No
ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE No No CommunityChat No
ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES No No CommunityChat No
ApplicationMetadataMessage_SYNC_ACCOUNT_CUSTOMIZATION_COLOR Yes Yes Pair No
ApplicationMetadataMessage_SYNC_ACCOUNTS_POSITIONS Yes Yes Pair No
ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE No No CommunityChat No
ApplicationMetadataMessage_COMMUNITY_SHARD_KEY Yes Yes CommunityChat No
ApplicationMetadataMessage_SYNC_CHAT Yes Yes Pair No
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_DELETED Yes Yes Pair No
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_UNREAD Yes Yes Pair No
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION Yes Yes Pair No
ApplicationMetadataMessage_SYNC_TOKEN_PREFERENCES Yes Yes Pair No
ApplicationMetadataMessage_COMMUNITY_PUBLIC_SHARD_INFO No No CommunityChat No
ApplicationMetadataMessage_SYNC_COLLECTIBLE_PREFERENCES Yes Yes Pair No
ApplicationMetadataMessage_COMMUNITY_USER_KICKED No No CommunityChat No
ApplicationMetadataMessage_SYNC_PROFILE_SHOWCASE_PREFERENCES Yes Yes Pair No
ApplicationMetadataMessage_COMMUNITY_PUBLIC_STORENODES_INFO No Weak Yes CommunityChat No No
ApplicationMetadataMessage_COMMUNITY_REEVALUATE_PERMISSIONS_REQUEST No Weak Yes CommunityChat No No
ApplicationMetadataMessage_DELETE_COMMUNITY_MEMBER_MESSAGES No Weak Yes CommunityChat No
ApplicationMetadataMessage_COMMUNITY_UPDATE_GRANT No Weak Yes CommunityChat No
ApplicationMetadataMessage_COMMUNITY_ENCRYPTION_KEYS_REQUEST No Yes CommunityChat No
ApplicationMetadataMessage_COMMUNITY_TOKEN_ACTION No Weak Yes CommunityChat No
ApplicationMetadataMessage_COMMUNITY_SHARED_ADDRESSES_REQUEST No No CommunityChat No
ApplicationMetadataMessage_COMMUNITY_SHARED_ADDRESSES_RESPONSE No No CommunityChat No

fryorcraken avatar Jul 26 '24 05:07 fryorcraken

Would be great to know more context why ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN message is now using ResendTypeRawMessage, not using mvds in the first place? @qfrank @cammellos

kaichaosun avatar Jul 30 '24 04:07 kaichaosun

Would be great to know more context why ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN message is now using ResendTypeRawMessage, not using mvds in the first place? @qfrank @cammellos

I hope this comment would be helpful for you @kaichaosun

qfrank avatar Jul 30 '24 06:07 qfrank

It seems not related to mvds and its usage after a quick look, will read more on the PR, thanks for sharing this @qfrank

kaichaosun avatar Jul 30 '24 08:07 kaichaosun

I see that the last action items here are to create the RFC with the table from this issue and start using MVDS in messages of type ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN. Created two issues for that and closing this as completed:

  • https://github.com/status-im/status-go/issues/5694
  • https://github.com/status-im/status-go/issues/5693

plopezlpz avatar Aug 12 '24 08:08 plopezlpz