I'm currently learning how to make custom Field types in #Drupal, and I'm using the Address module as an example for how to handle multiple properties per field item/instance. It's kind of boggling how often you have to keep re-defining the same things in slightly different ways. Surely there's a better way to do this, all in one place?!

It's bad enough that you have to keep track of different naming conventions for "a collection of values that are related to each other" used in different contexts:

- properties
- parameters
- settings
- attributes
- options
- configurations
- schemas

I'm still trying to figure out the differences between the parts of the plugin code that relate to

- global configurations for the module on a per-site basis
- field level configuration values managed by the site builder set when a field is added to an entity
- - those which can't be changed later because they impact storage
- - those which CAN be changed later because they're independent of storage
- field instance/item values set by content managers