Skip to content
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

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
54 changes: 54 additions & 0 deletions proposals/4247-user-pronouns.md
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implementation requirements:

  • Client
  • Server

Copy link

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?

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).

Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# 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 use these instead of they/them where possible. All fields
within `m.pronouns` are optional, exluding `"language"` and `"summary"`.

Check warning on line 13 in proposals/4247-user-pronouns.md

View workflow job for this annotation

GitHub Actions / Spell Check with Typos

"exluding" should be "excluding" or "exuding".
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
within `m.pronouns` are optional, exluding `"language"` and `"summary"`.
within `m.pronouns` are optional, excluding `"language"` and `"summary"`.

(since there is only one more field, it might be better to reverse the wording of this sentence and say that all are required except grammatical gender)


### Example

```json
{
"avatar_url": "…", "displayname": "…",
"m.pronouns": [
{
"grammatical_gender": "inanimate",
Copy link
Contributor

@sumnerevans sumnerevans Jan 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What grammatical genders are available? I think they need to be enumerated. I don't know what grammatical gender "they/them" would be, for example.

I also think they need to be prefixed (m.male for example) and defined what that means in terms of how the UIs should adapt their rendering. This will also allow for future grammatical genders from other languages or linguistic innovations to be defined later (and use unstable prefixes).

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some languages distinguish between "animate" and "inanimate" so @everypizza1 may want to consider whether it's important to consider bot accounts as "inanimate" or whether we just anthropomorphise every user, but from brief research into a few African, Asian, and European languages, I think this should cover most of them:

{
    "m.pronouns": [
        {
            "grammatical_pattern": "masculine",
            "forms": {
                "en": {
                    "subject": "he",
                    "object": "him",
                    "possessive_determiner": "his",
                    "possessive_pronoun": "his",
                    "reflexive": "himself",
                    "dependent": "him"
                }
            },
            "display": { "en": "he/him" }
        },
        {
            "grammatical_pattern": "feminine",
            "forms": {
                "en": {
                    "subject": "she",
                    "object": "her",
                    "possessive_determiner": "her",
                    "possessive_pronoun": "hers",
                    "reflexive": "herself",
                    "dependent": "her"
                }
            },
            "display": { "en": "she/her" }
        },
        {
            "grammatical_pattern": "neuter",
            "forms": {
                "en": {
                    "subject": "it",
                    "object": "it",
                    "possessive_determiner": "its",
                    "possessive_pronoun": "its",
                    "reflexive": "itself",
                    "dependent": "it"
                }
            },
            "display": { "en": "it/its" }
        },
        {
            "grammatical_pattern": "common",
            "forms": {
                "sv": {
                    "subject": "hen",
                    "object": "hen",
                    "possessive_determiner": "hens",
                    "possessive_pronoun": "hens",
                    "reflexive": "sig",
                    "dependent": "hen"
                }
            },
            "display": { "sv": "hen/hens" }
        },
        {
            "grammatical_pattern": "plural",
            "forms": {
                "en": {
                    "subject": "they",
                    "object": "them",
                    "possessive_determiner": "their",
                    "possessive_pronoun": "theirs",
                    "reflexive": "themself",
                    "dependent": "them"
                }
            },
            "display": { "en": "they/them" }
        },
        {
            "grammatical_pattern": "epicene",
            "forms": {
                "en": {
                    "subject": "ze",
                    "object": "zir",
                    "possessive_determiner": "zir",
                    "possessive_pronoun": "zirs",
                    "reflexive": "zirself",
                    "dependent": "zir"
                }
            },
            "display": { "en": "ze/zir" }
        },
        {
            "grammatical_pattern": "none",
            "forms": {
                "fi": {
                    "subject": "hän",
                    "object": "häntä",
                    "possessive_determiner": "hänen",
                    "possessive_pronoun": "hänen",
                    "reflexive": "itsensä",
                    "dependent": "hänen"
                }
            },
            "display": { "fi": "hän/häntä" }
        }
    ]
}

There are extra forms not covered here, e.g. some languages have "noble" versions, but this MSC might want to just state an assumption that a chat protocol does not necessarily need or want to record the nobility level of the user 🙂

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

may want to consider whether it's important to consider bot accounts as "inanimate" or whether we just anthropomorphise every user

It's not just bot accounts that would have that - some users also use inanimate pronouns. The extended classes of pronouns will probably end up being removed, because most users will just want the summary and grammatical gender.

"language": "en",
"summary": "it/its"
},
{
"grammatical_gender": "feminine"
"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 SHOULD use the
`grammatical_gender` if possible in state events. For example, "Alice changed
her avatar" for `feminine` or "Alex changed its avatar" for `inanimate`.

## 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.

Check warning on line 45 in proposals/4247-user-pronouns.md

View workflow job for this annotation

GitHub Actions / Spell Check with Typos

"langauge" should be "language".

## Security issues

None.

## Unstable prefix

Clients and servers wishing to implement this early may use
`io.fsky.nyx.pronouns`.
Loading