-
Notifications
You must be signed in to change notification settings - Fork 388
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
MSC4247: User Pronouns #4247
base: main
Are you sure you want to change the base?
MSC4247: User Pronouns #4247
Changes from 14 commits
c8f3ece
f17962d
f3f6880
d78c996
c18ebc7
939b203
dc4e203
b4176bf
0fd6715
f1e9366
f6bf41f
7db04a9
dd04dd6
963b18d
b063f6e
fb950bd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# MSC4247: User Pronouns | ||
|
||
Many users of Matrix put pronouns in display names. However, that causes screen | ||
clutter. This proposal defines a standardized pronouns field on top of | ||
[MSC4133](https://github.com/matrix-org/matrix-spec-proposals/pull/4133). | ||
|
||
## Proposal | ||
|
||
Profiles may have an optional `m.pronouns` field as an | ||
array. These fields can be fetched through the | ||
everypizza1 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
[profile API endpoints](https://spec.matrix.org/unstable/client-server-api/#profiles). | ||
Clients should parse this and use these instead of they/them where possible. All fields | ||
within `m.pronouns` are optional, exluding `"language"` and `"summary"`. | ||
everypizza1 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Example | ||
|
||
```json | ||
{ | ||
"avatar_url": "…", "displayname": "…", | ||
"m.pronouns": [ | ||
{ | ||
"subject": "it", | ||
everypizza1 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
"object": "it", | ||
"possessive_determiner": "its", | ||
"possessive_pronoun": "its", | ||
"reflexive": "itself", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not sure if these fields are a good idea, since they seem to be specific to English and probably aren't compatible with any other language. Also, I'd guess most implementations will simply use It might be better to just have the freeform field. Maybe also an enum (non-freeform string) for preferred grammatical gender, although even that could get complicated. Is there any prior art or research into user-definable pronouns that support internationalization? If the fields are kept as-is, each of them needs to be defined separately, it's not enough to have them in the example. Keeping the fields may also require an implementation actually using them to show they're useful. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thinking more about the enum: it should at least have values
On the implementation side: pronoun information is generally only needed for rendering state events like profile changes ("X changed his/her/their name"), but those state events don't include this profile info. Fetching the full profile for each profile change state event seems like a bad idea. In any case, a freeform field should exist to display when viewing someones profile. If the other fields can't be used effectively, then it may be best to narrow this down to only have the freeform field and nothing else. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we may want to throw out There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I've tried out a few options across a few languages, and for languages like Russian that modify other words in the sentence depending on the pronouns, I'd probably use something like this so you can just specify the grammatical pattern once per profile so software can know which form of words you want it to use around your pronouns, but then have the option to specify pronouns per-language (if you want, you could just specify English, etc): {
"m.pronouns": [
{
"grammatical_pattern": "feminine",
"forms": {
"en": {
"subject": "she",
"object": "her",
"possessive_determiner": "her",
"possessive_pronoun": "hers",
"reflexive": "herself",
"dependent": "her"
},
"de": {
"subject": "sie",
"object": "sie",
"possessive_determiner": "ihre",
"possessive_pronoun": "ihres",
"reflexive": "sich",
"dependent": "sie"
},
"ja": {
"subject": "彼女",
"object": "彼女",
"possessive_determiner": "彼女の",
"possessive_pronoun": "彼女のもの",
"reflexive": "自分",
"dependent": "彼女"
},
"zh": {
"subject": "她",
"object": "她",
"possessive_determiner": "她的",
"possessive_pronoun": "她的",
"reflexive": "自己",
"dependent": "她"
},
"fi": {
"subject": "hän",
"object": "häntä",
"possessive_determiner": "hänen",
"possessive_pronoun": "hänen",
"reflexive": "itsensä",
"dependent": "hänen"
}
},
"display": {
"en": "she/her",
"de": "sie/ihre",
"ja": "彼女/彼女の",
"zh": "她/她的",
"fi": "hän/häntä"
}
}
]
} This is just an example, I haven't factored in multiple genders/pronouns per language, etc... also in some languages we end up with duplicates because they don't distinguish between the two pronoun forms, but including all grammatical categories is probably simpler in the long run... what do you think? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (also, some languages like Japanese vary the content based on the "formality" so you'd likely need to put some wording in that it's out of scope for this MSC, as public pronouns can't really specify whether this particular interaction has a particular level of formality) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Running the test against more languages, Hungarian and Tamil would be a challenge... they have loads of forms that would be quite difficult to describe without supporting all of them 🤔 {
"grammatical_pattern": "feminine",
"forms": {
"hu": {
"subject": "ő", // Nominative: She
"object": "őt", // Accusative: Her (direct object)
"possessive_determiner": "ővé", // Possessive determiner: Her
"possessive_pronoun": "övé", // Possessive pronoun: Hers
"reflexive": "magának", // Reflexive: Herself
"instrumental": "vele", // Instrumental: With her
"dative": "neki", // Dative: To/for her
"locative": "nála", // Locative: At her place
"ablative": "tőle", // Ablative: From her
"allative": "hozzá", // Allative: To her
"elative": "belőle", // Elative: Out of her
"illative": "bele", // Illative: Into her
"superessive": "rajta", // Superessive: On her
"sublative": "alá", // Sublative: Under her
"delative": "róla", // Delative: From (off) her
"terminative": "őig", // Terminative: As far as her
"essive": "őként", // Essive: As her
"translative": "ővé", // Translative: Becoming her
"causal-final": "miatta", // Causal-final: Because of her
"temporal": "őtől fogva", // Temporal: Since her
"dependent": "őt" // General dependent form: Her
}
},
"display": {
"hu": "ő/őt"
}
},
{
"grammatical_pattern": "feminine",
"forms": {
"ta": {
"subject": "அவள்", // Nominative: She
"object": "அவளை", // Accusative: Her (direct object)
"possessive_determiner": "அவளுடைய", // Possessive determiner: Her
"possessive_pronoun": "அவளுடையது", // Possessive pronoun: Hers
"reflexive": "தன்னால்", // Reflexive: Herself
"instrumental": "அவளால்", // Instrumental: With/by her
"dative": "அவளுக்கு", // Dative: To/for her
"locative": "அவளிடம்", // Locative: At her place
"ablative": "அவளிடமிருந்து", // Ablative: From her
"genitive": "அவளுடைய", // Genitive: Belonging to her
"vocative": "அவளே", // Vocative: Calling her
"dependent": "அவளை" // General dependent form: Her
}
},
"display": {
"ta": "அவள்/அவளை"
}
} That said, if the main purpose is to just tell people some pronouns, and there's no expectation that clients will have different messages/etc based on the pronoun data, perhaps it could just be stated in the MSC that many of these are not needed for an online chat medium so have been intentionally left out? It seems to me that the purpose of this MSC is to help people know what pronouns to use when talking to another person, not to entirely describe how a given language's grammatical system works. |
||
"language": "en", | ||
"summary": "it/its" | ||
}, | ||
{ | ||
"subject": "she", | ||
"object": "her", | ||
"possessive_determiner": "her", | ||
"possessive_pronoun": "hers", | ||
"reflexive": "herself", | ||
"language": "en", | ||
"summary": "she/her" | ||
} | ||
] | ||
} | ||
``` | ||
The example uses it/its pronouns followed by she/her pronouns, both in English. | ||
The array is ordered by preference, `language` should be a | ||
[BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language code, and | ||
clients should render the `summary` for the pronouns. Clients may offer | ||
everypizza1 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
pre-defined sets of common pronouns like she/her, they/them, he/him, it/its, | ||
etc. | ||
|
||
## Potential issues | ||
|
||
Some users may not want to publish pronouns to others, although that is out of | ||
scope for this MSC. Some users may also complain about "woke", although | ||
pronouns are a basic part of langauge. | ||
|
||
## Security issues | ||
|
||
None. | ||
|
||
## Unstable prefix | ||
|
||
Clients and servers wishing to implement this early may use | ||
`io.fsky.nyx.pronouns`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implementation requirements:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Conduwuit already supports this by supporting arbitrary fields in #4133 so I'd assume this MSC only requires a client implementation that can read/write the field?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With tulir/gomuks#574, Gomuks supports rendering pronouns (setting them is not implemented in the UI yet, but is supported on the backend).