Replies: 3 comments 6 replies
-
This is awesome @nmalzieu and thanks for opening up the topic. The idea of layering in some inbox filtering in a standardized way that can be interoperable is a great first step on a path toward protocol-level consent. We've seen this done in some fashion to a couple of clients, notably the Lenster client which separates conversations from accounts that your Lens profile is not following. I'd love to see something along these signs implemented into XMTP clients, so my mind goes to: What's the MVP for such a concept that would require minimal work to validate the concept? Filtering MVPWhile it would seem that a client simply sending a message to your own account would be the easiest way to store some of these preferences universally, that functionality was removed from the SDK out of caution surrounding security concerns. So naturally I wonder if it would be possible to use XMTP as it is today with no modifications, and somehow still achieve something similar for an MVP. Perhaps it could look like this:
Now, admittedly this approach likely doesn't scale or wouldn't be great for the long term. But maybe as "minimally viable" it could help us learn something. Presuming this feels like a reasonable means to "store" some user preferences in a persistent way, what would the next leap be that might allow for interoperability? Does it require a protocol-level feature or self-messaging, or would it be possible to extend the "burner" concept further? Ultimately I'm curious what others think might be a great way to just get moving along with something like this. |
Beta Was this translation helpful? Give feedback.
-
Thanks for this proposal @nmalzieu. I feel one of the most important aspects of this topic is protecting the protocol. A few reasons why:
I think one path forward is a working group to get input on the basic protocol level framework, and to start building initial standards for client apps. |
Beta Was this translation helpful? Give feedback.
-
100% agree on this. Every client right now is building their own "user preference" infrastructure because it does not exist at the protocol level. For example, in order for our Unstoppable Domains iOS app to be approved, Apple required us to implement a "block" feature for a conversation. We were able to do this using our own hosted API, authenticated using a signature from the XMTP user's private key. I expect Coinbase Wallet and Converse had to do the same thing, so that's at least 3 implementations of user blocking that are in a specific non-portable silo for each of those apps. If we could store these preference on the XMTP protocol itself, it would make the user experience much, much better. We could also store other user preference as I've suggested in #45. Note that a difference in #45 is that the user preference should be visible to any client for any user (a public visible preference) whereas the preference in this proposal is viewable only to the account owner (a private visible preference). Both public/private user preferences I think have value, depending on the context. |
Beta Was this translation helpful? Give feedback.
-
This is a disucssion about Standardized Inbox Filtering, a way for a user to define how to filter the conversation to display in an XMTP Client.
Currently, the XMTP network allows anyone to write to anyone without the option to opt-in or opt-out of conversations with other users. Implementing a standardized inbox filtering layer will provide users with more control over their communication preferences, reduce spam, and enhance privacy.
We could think of different "filtering layers":
Then we could define best practices that clients need to follow, for instance:
Dependency: In order to store these filtering settings, we would need to have "protocol level user settings" (= user preferences).
settings-0x.....
that clients can write to using the XMTP Key to store encrypted settings. We could either post the whole settings to the topic everytime the settings change or have some way to store incremental dataawait client.retrieveUserSettings()
) in a JSON formatfiltering
in the settings, with a format that could look like:Beta Was this translation helpful? Give feedback.
All reactions