-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Public user profile for storing languages and other information #170
Comments
We want a json of user profile information accessible to everyone in the app. Features to use this
Open questions:
Resource considerations
|
Could have user's own language info stored in matrix profile, and only use global store to access others' languages |
Proposed Solution:
Open Questions:
|
I think this will mean that users will be able to see all other users on the server (i.e. they'll be able to search for all other users). I'm unsure if this is desirable or not. Each user would also be able to dump a list of all other users on the server, which sounds not desirable.
This sounds like you'll be using state events if you're "replacing" them. You would probably want an event type of Unfortunately I don't think there's a way to easily limit who can set state events,
If the user leaves the room I think they won't have access to up-to-date information of other users. It might work if the room is publicly joinable though, which maybe it has to be for anyone to just join. This has ramifications if you ever turn on federation though. Is the main piece of information that this cares about the user's language or is there additional information that should be kept private? |
Yes, the main piece of information we want to store right now is the users' languages (and countries), which we want to be available to other users so they can search of others by the languages they know / are learning. We do have information that needs to be kept private, like users' dates of birth, but that data would not be placed in this room. |
Right. I think storing it all in the room has the downsides I mentioned above, but I don't have a much better solution at the moment. There's a couple of things which might work, but I need to investigate first. |
We're going to take out plans for the 'find a conversation partner' feature in favor of a 'find a learning community' feature. Reasoning: Score leaderboards can also be done within spaces. Architecture proposal based on this design change:
The user's matrix account data will also duplicate this account data, and should be updated each time the global profile is updated. This is to make it more efficient to get the user's language settings, so they do not have to leave and join the room when their language info is read. It unfortunately duplicates this information (in their profile and in each room) but this seems to be necessary given other constraints. The bot can access user languages directly from the database. With this set of changes, it seems to unnecessary to do a public room for all users. @clokep Is user_id the same as MXID? If not, what is MXID? |
If you're going to have a space per language, would being joined to the space be enough "information" that the user is interested in that language?
Usually I refer to "user_id" as the local part of the "MXID" (e.g. user_id = clokep, MXID == Matrix ID = @clokep:matrix.org). This might not be a universal definition though! They're usually interchangeable. Someone wrote a new MSC to support custom fields in profiles which could maybe be used for this. It isn't yet supported in Synapse (and would be experimental). You wouldn't be able to search users for these fields though, so probably still wouldn't accomplish what you need. |
It'd be overjoyed if this MSC built on MSC4133 to add extra features like search! ❤️ |
No description provided.
The text was updated successfully, but these errors were encountered: