[community-group] The $ property name prefix should be unnecessary with a well-structured schema (#225)

justinfagnani has just created a new issue for https://github.com/design-tokens/community-group:

== The $ property name prefix should be unnecessary with a well-structured schema ==
I was looking into this format recently and I came away quite confused why the `$` prefix was required everywhere. The rationale pointed to in the format spec (https://design-tokens.github.io/community-group/format/#additional-group-properties) indicates that it's to differentiate between group properties and the tokens within a group.

How this is usually handled in JSON is that the key/value maps are separated from the data structurally - they don't mix in a single object. For groups, all the _child_ tokens would be in a sub-object called `children` or `tokens`, and so could never clash with group _properties_ like `description`.

So a group would look like:
```json
{
  "Group of tokens": {
    "description": "This is an example of a group containing a nested group",
    "tokens": {
      "Subgroup of tokens": {
        "Token 1 name": {
          "value": "#aabbcc"
        },
        "Token 2 name": {
          "value": "#ddeeff"
        }
      }
    }
  }
}
```

Many, many JSON schemas have both defined properties and open-ended key/value maps and work just fine without prefixing every defined property name in the schema. This spec is the first I've ever seen that does it, and I think it harms the human readability of the documents. It also makes programatic handling of groups more difficult, because to get child tokens you need to filter on a group name prefix instead of just getting the keys of the `children` property.



Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/225 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Saturday, 22 July 2023 20:50:12 UTC