When you look at JSON schemas in name.py and surname.py of gramps/gen/lib, you notice a strange distribution of name data between objects.
- All given names are grouped into a single string in first_name, i.e. when a person has several given names they are all in a single item, separated by spaces.
- Name is the support object for various “attributes” such as title, nickname, grouping, proofs (citations and notes) … and anchors the array for the surname but singles out given names.
- Surname gives a detailed structure to components of a name flagging their nature or origin in an array.
I find this not homogeneous and culturally Europe (in a broad sense, including North America) oriented. This design does not allow to take easily into account other cultures. As an example, a former colleague of mine who was of India origin had no given name and his surname had two component, one of which was frequently misused as a given name (first name). In most reports, his full name would be prefixed with something like <unknown> because of missing given names which is an error.
If each individual given name is considered a component of the Surname object (with a dedicated origin of “given” or “call”) and the convention they precede all non-given components, we gain in versatility.
Coupled with a small modification of the name format with new descriptor codes, we can then manipulate separately first and middle names (in US culture) as was asked in a question on this site or handle more easily the Indian case mentioned above.
This would also simplify general name handling as all components would then reside in a single object.
I hesitate about Suffix, Title, Nickname and Family Nickname. Are they person attributes (associated closely to the person) or name attributes (susceptible to vary across time and name variants)? Presently they are associated to the name and must be repeated if this a constant for the person. And even with nicknames, won’t they be better considered as name components with a specific connector such as a dash or “called”, “aka.” and specific origin?
A possible benefit could be the automatic hinting for Scandinavian or Spanish naming schemes where components could then be automatically added when creating the name. Perhaps with a menu selection to pre-fill items when creating the name.
This could make the whole feature more consistent.
Last, as I am working on a true relational database schema, the present state of affairs makes deletion of a person extremely tricky. Reorganising things a bit would allow to use
ON DELETE CASCADE on the Name and Surname tables.
A related question is about name “share-ability”. Separating Surname from Name suggests that a family name could be entered only once and shared among family members. This is not possible presently because Surname is not a “primary object”, i…e not individualised in the data base as it lacks a handle. Does sharing a family name improve person management? This share makes sense in modern times where legal authorities are extremely picky about name inheritance but is less meaningful when dealing with old records as name spelling may widely vary across a person’s life. Name sharing would also forbid merging given names with surname as proposed above.
What is a name in the most general sense when we abstract from our native culture? How can we deal in the most “neutrel” way with this?