Merge da34a368aa into e9f0f31d27
commit
3700aeabad
@ -0,0 +1,141 @@
|
||||
# MSC4208: Adding User-Defined Custom Fields to User Global Profiles
|
||||
|
||||
*This proposal depends on [MSC4133: Extending User Profile API](https://github.com/matrix-org/matrix-spec-proposals/pull/4133).
|
||||
It introduces user-defined custom fields in the `u.*` namespace for user profiles.*
|
||||
|
||||
## Proposal
|
||||
|
||||
This proposal aims to enable users to add arbitrary custom key:value pairs to their global user
|
||||
profiles within the Matrix ecosystem. By leveraging the extended profile API introduced in
|
||||
[MSC4133](https://github.com/matrix-org/matrix-spec-proposals/pull/4133), users can enrich their
|
||||
profiles with additional public information such as preferred languages, organisational roles, or
|
||||
other relevant details.
|
||||
|
||||
### Key/Namespace Requirements
|
||||
|
||||
As per [MSC4133](https://github.com/matrix-org/matrix-spec-proposals/pull/4133), the profile API is
|
||||
extended to allow additional fields beyond `avatar_url` and `displayname`. This MSC defines the use
|
||||
of the `u.*` namespace for user-defined custom fields:
|
||||
|
||||
- **Namespace `u.*`**: Reserved for user-defined custom fields. The portion of the key name after
|
||||
the `u.` defines the display name of this field (e.g., `u.bio`). The values in this namespace
|
||||
must always be UTF-8 strings with content not exceeding 512 bytes.
|
||||
|
||||
### Client Considerations
|
||||
|
||||
- Clients SHOULD provide a UI for users to view and edit their own custom fields in the `u.*`
|
||||
namespace.
|
||||
|
||||
- When displaying other users' profiles, clients SHOULD retrieve and display custom fields in the
|
||||
`u.*` namespace.
|
||||
|
||||
- Clients SHOULD be cautious about the amount of data displayed and provide options to limit or
|
||||
filter the display of custom fields.
|
||||
|
||||
- Clients SHOULD implement appropriate content warnings and user education about the public nature
|
||||
of profile fields.
|
||||
|
||||
### Server Considerations
|
||||
|
||||
- Homeservers MAY impose limits on the number of custom fields, whether for storage reasons or to
|
||||
ensure the total profile size remains under 64KiB as defined in [MSC4133](https://github.com/matrix-org/matrix-spec-proposals/pull/4133).
|
||||
|
||||
- Homeservers MAY validate that keys in the `u.*` namespace conform to the required format and
|
||||
enforce size limits on values.
|
||||
|
||||
- Homeservers SHOULD use the existing `m.profile_fields` capability to control access to the `u.*`
|
||||
namespace. For example:
|
||||
|
||||
```json
|
||||
{
|
||||
"m.profile_fields": {
|
||||
"enabled": true,
|
||||
"disallowed": ["u.*"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Trust & Safety Considerations
|
||||
|
||||
The ability for users to set arbitrary freetext fields in their profiles introduces several
|
||||
significant trust and safety concerns that implementations must consider:
|
||||
|
||||
#### Content Moderation
|
||||
|
||||
- **Hate Speech and Harassment**: Users could use profile fields to spread hate speech or harass
|
||||
others. Homeservers MUST implement appropriate content moderation tools.
|
||||
|
||||
- **Impersonation**: Custom fields could be used to impersonate others or create misleading
|
||||
profiles. Homeservers SHOULD have mechanisms to handle impersonation reports.
|
||||
|
||||
- **Spam and Malicious Links**: Profile fields could be used to spread spam or malicious links.
|
||||
Homeservers SHOULD implement link scanning and spam detection.
|
||||
|
||||
#### Privacy and Data Protection
|
||||
|
||||
- **Personal Information**: Users might inadvertently overshare personal information. Clients
|
||||
SHOULD warn users about the public nature of profile fields.
|
||||
|
||||
- **Data Mining**: Public profile fields could be scraped for data mining. Homeservers SHOULD
|
||||
implement rate limiting and monitoring for bulk profile access.
|
||||
|
||||
- **Right to be Forgotten**: Homeservers MUST ensure compliance with data protection regulations,
|
||||
including the ability to completely remove profile data when requested.
|
||||
|
||||
#### Implementation Requirements
|
||||
|
||||
To address these concerns:
|
||||
|
||||
1. **Content Filtering**:
|
||||
- Homeservers MUST implement content filtering capabilities for custom fields
|
||||
- Support for blocking specific patterns or content types
|
||||
- Ability to quickly respond to emerging abuse patterns
|
||||
|
||||
2. **Reporting Mechanisms**:
|
||||
- Integration with [MSC4202](https://github.com/matrix-org/matrix-spec-proposals/pull/4202)
|
||||
or similar reporting systems
|
||||
- Clear processes for handling abuse reports
|
||||
- Tools for moderators to review and action reported content
|
||||
|
||||
3. **Rate Limiting**:
|
||||
- Limits on frequency of profile updates
|
||||
- Protection against automated abuse
|
||||
- Monitoring for suspicious patterns
|
||||
|
||||
4. **User Education**:
|
||||
- Clear warnings about public nature of fields
|
||||
- Guidelines for appropriate content
|
||||
- Privacy implications documentation
|
||||
|
||||
## Potential Issues
|
||||
|
||||
- **Privacy Concerns**: Users need to be aware that custom profile fields are public and visible to
|
||||
anyone who can access their profile.
|
||||
|
||||
- **Abuse Potential**: As with any user-generated content, there is potential for misuse. Servers
|
||||
and clients need to be prepared to handle offensive or inappropriate content.
|
||||
|
||||
- **Interoperability**: Until widespread adoption occurs, not all clients may support displaying
|
||||
custom fields, leading to inconsistent user experiences.
|
||||
|
||||
## Security Considerations
|
||||
|
||||
- **Content Moderation**: Homeservers SHOULD provide mechanisms to report and handle abusive
|
||||
content in custom profile fields. [MSC4202](https://github.com/matrix-org/matrix-spec-proposals/pull/4202)
|
||||
provides an example of one such mechanism.
|
||||
|
||||
- **Data Protection**: Homeservers SHOULD ensure compliance with data protection regulations,
|
||||
especially regarding user consent and data retention.
|
||||
|
||||
## Unstable Prefixes
|
||||
|
||||
### Unstable Namespace
|
||||
|
||||
Until this proposal is stabilised, custom fields should use an unstable prefix in their keys:
|
||||
|
||||
- **Namespace `uk.tcpip.msc4208.u.*`**: For example, `uk.tcpip.msc4208.u.bio`.
|
||||
|
||||
## Dependencies
|
||||
|
||||
This proposal depends on [MSC4133](https://github.com/matrix-org/matrix-spec-proposals/pull/4133),
|
||||
which introduces the extended profile API to allow additional fields in user profiles.
|
||||
Loading…
Reference in New Issue