Skip to content
Open
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 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
Contributor

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 gomuks/gomuks#574, Gomuks supports rendering pronouns (setting them is not implemented in the UI yet, but is supported on the backend).

Copy link
Member

Choose a reason for hiding this comment

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

@ara4n pointed out JSContact (RFC9553) in #4175 (comment). Looks like they have a pronoun field and ended up with basically the same design of declaring a grammatical gender and summary: https://www.rfc-editor.org/rfc/rfc9553.html#name-speaktoas

Main difference is that they only allow declaring 1 grammatical gender, which seems quite dumb. It's also a lot more complicated overall (translations are in an entirely separate top-level object and I have no idea what those k19 and k32 keys are)

Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# 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
Copy link
Member

Choose a reason for hiding this comment

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

With regards to this being an array, note that JContact is a dictionary with context and preference order which means it's possible to designate different pronouns for different situations, and also to have pronouns of equal preference. However, given that this also has to be easy for a user to input and read, I think I'm leaning towards the solution of an array and assuming that if some are context-dependent then it will be apparent to the reader which to use when. In any case, a machine won't know this context so it's useful to express a default for this. I do think it's worth adding as an alternative though: this proposal lacks an alternatives section and it could probably use one.

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

### Example

```json
{
"avatar_url": "…", "displayname": "…",
"m.pronouns": [
{
"subject": "it",
"object": "it",
"possessive_determiner": "its",
"possessive_pronoun": "its",
"reflexive": "itself"
},
{
"subject": "she",
"object": "her",
"possessive_determiner": "her",
"possessive_pronoun": "hers",
"reflexive": "herself"
}
]
}
```

## 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.
Copy link
Member

Choose a reason for hiding this comment

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

Potential for abusive content in the free-text field (obviously no more so than display names though, but I think it's worth noting).


## Unstable prefix

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