Preferences

This project seems like an architect just gave up and said fine, you get an enum value for any relationship you can think of, what do people want? And this was one suggestion.

This enum could have been replaced with data model where you set of a bunch of relationship links:

Relationship:

- type: parent (up), child (down), sibling (sideways)

- gender: male, female, ...

I am confused by the "younger" denotation, because it seems strangely specific to just the last relationship, rather than all of the links.

If you have a lot of relations, it would be easier to just create a family tree then you can skip having to have multiple duplicate links being created for say each cousin.


Making software that works across cultures (and especially _as many_ cultures as Apple's software does) is difficult.

I guarantee you that every single one of those enum cases exists, because there is a language/culture where there is a specific word to describe that relationship; not "because an architect gave up".

I didn't know there were words for those in other languages. I guess I'd still prefer an expressive composable model for them so that I could reason about them. At least know who is related to who in which way, rather than these enums. But I guess that is outside of the scope for Apple - they just want that short name in the UX somewhere when adding a contact.
The point is that you don’t need to reason about the relationship because the name, in the local language, tells you everything you need to know. Of course, if you don’t speak the language then that’s not useful but the code is written for the end user to be able to use the labels, not for the software or its developer to be able to parse the family tree :)
Even if it's modeled with more compositional finesse in the code, you still need a UI level label for this combination of relationships in some culture where there's an appropriate term for it, so you still end up with some label like this.
Localizing, this falls into the things you thought about x are true.

This is the end result of a bunch of switches and ifs in a ui where your model, in very specific circumstances, boils down to a few words that most people understand without computer programming experience.

> I am confused by the "younger" denotation, because it seems strangely specific to just the last relationship, rather than all of the links.

In many cultures you address someone differently depending on whether they are younger or older than you.

> This enum could have been replaced with data model where you set of a bunch of relationship links:

How is that going to look on the user side? Most people just want to label their contact "Mom" and be done with it, they don't want to construct a family tree and say "this person is an older female parent" or maybe even "older elder female parent" if they have two moms.

You might think "well Mom is clearly an exception" but that's a very North America point of view. A lot of cultures would find it weird if you could label someone as 어머니 but not 장모 because they're equally important.

Apparently, Chinese uses different words for "cousin" depending on whether they're older or younger than you.
I think this was motivated by non-English languages which have separate terms for different relations than English?

This item has no comments currently.

Keyboard Shortcuts

Story Lists

j
Next story
k
Previous story
Shift+j
Last story
Shift+k
First story
o Enter
Go to story URL
c
Go to comments
u
Go to author

Navigation

Shift+t
Go to top stories
Shift+n
Go to new stories
Shift+b
Go to best stories
Shift+a
Go to Ask HN
Shift+s
Go to Show HN

Miscellaneous

?
Show this modal