While implementing XEP-0055 Jabber Search in Telepathy, we've hit an ambiguity
in the spec between first/last names, and given/family names.

It's clear that to find a person with a Western name in a Jabber directory,
you would use something like this:

    <first>Gordon</first>
    <last>Brown</last>

or this:

    <field var='first'><value>Gordon</value></field>
    <field var='last'><value>Brown</value></field>

However, names in many Asian cultures (e.g. Chinese names) don't work like
Western names: for example, in the name "Hu Jintao", Jintao is the given name
and Hu is the family. To search for the Chinese leader, should one use

    <field var='first'><value>Hu</value></field>
    <field var='last'><value>Jintao</value></field>

(i.e. the field semantics are as suggested by the markup, and are really
first name and last name), or

    <field var='first'><value>Jintao</value></field>
    <field var='last'><value>Hu</value></field>

(i.e. the markup is by historical accident, and what was really meant is
"family name" and "given name")?

Similarly, in the historical version, the fields are called <first/> and
<last/>, although I realise this doesn't necessarily mean anything about
their semantics.

vCard explicitly specifies that the first component of the "N"
(structured name) type-name (field) contains the family name, and the
second contains the given name, like so:

    FN:Hu Jintao
    N:Hu;Jintao

    FN:Gordon Brown
    N:Brown;Gordon

In Telepathy, we want to propagate correct information through the framework
to UIs: this means that in protocols that use given name/family name, we want
to use fields x-n-given and x-n-family (in our notation), and for
protocols that use first/last name, we want to use x-first and x-last.
Which of these categories does XMPP fall into, in practice?

Unhelpfully, the spec and examples in XEP-0055 v1.2 seem to be evenly
distributed between the two models:

* XMPP Registrar Considerations: <field var='first' label='First Name'/>
* XMPP Registrar Considerations: <field var='last' label='Family Name'/>
* Example 7: <field var='first' label='Given Name'/>
* Example 7: <field var='last' label='Family Name'/>
* Example 9: <field var='first' label='First Name'/>
* Example 9: <field var='last' label='Last Name'/>

In particular, the XMPP Registrar registration is not even internally
consistent!

It would be helpful if one of these could be chosen:

* Accept Example 7 (family/given) as the canonical interpretation:
  - change Example 9 and the Registrar registration for 'first' to match it
  - explain that the "first" and "last" naming is a historical accident, and
    that's not really what the fields mean

* Accept Example 9 (first/last) as the canonical interpretation:
  - change Example 7 and the Registrar registration for 'last' to match it

It would also be very useful to include a family-name-first (e.g. Chinese)
name in at least one example to illustrate how that works, although
unfortunately that breaks the convention of using examples from Shakespeare :-)

Regards,
    Simon

Attachment: signature.asc
Description: Digital signature

Reply via email to