FamilySearch / GEDCOM.io

Files for the GEDCOM.io website
2 stars 5 forks source link

gedcom-registries discussion #103

Open dthaler opened 12 months ago

dthaler commented 12 months ago
tychonievich commented 11 months ago

On the second item, I'm hesitant to use paths for versions for the following reasons:

On the other hand, we will need different files for different versions, for example the 8.0 EXID is scheduled to change in a backwards-incompatible way and 7.1 could add new substructures to 7.0 structures. Subdirectories might be the easiest way to make those files have unique names.

I'd prefer to add some kind of versions flag inside the YAML itself, but have not settled on how I think that should be done. For example, we could do

versions:
  - "5.5.1"
  - "7.0"

or

from-version: "5.3"
removed-from-version: "8.0"

but that might not be ideal. For example, we could record changes in a single YAML file, so e.g. we could have EXID's file have something like

substructures:
  "https://gedcom.io/terms/v7/EXID-TYPE": "{0:1}"

changes:
  - version: "8.0"
    substructures:
      "https://gedcom.io/terms/v7/EXID-TYPE": "{1:1}"
dthaler commented 5 months ago

Regarding version numbering...

The use case is to support registering third-party extensions to motivate features meeting the "awaiting use" criteria, even if the extension was only for 5.5.1 so far because the app hasn't yet supported 7.0.

For validation purposes there should be a way to match the GEDC.VERS value against some list or range in the yaml file.

The 7.0 spec says:

The version number of the official specification that this document’s data conforms to. This must include the major and minor version (for example, “7.0”); it may include the patch as well (for example, “7.0.1”), but doing so is not required.

So the same yaml file for 7.0.x should work in 7.0.y. But for 5.5.* this was not true. 5.5.1 has things that were not in 5.5 and vice versa (see https://gedcom.io/specifications/ged551.pdf "Modifications in Version 5.5.1" which include both things added and things removed).

dthaler commented 5 months ago

Another point to discuss... YAML files are being generated off the spec today for the standard ones. However if we want them to have from-version: "5.3" etc. then that would not be possible without additional input. Having separate directories instead would allow using the existing tooling to auto-generate the ones for 7.0 and later.

Luther asked:

Where do we put files that apply in multiple versions?

They would appear in the directory for each relevant version.

If paths are used for versions it becomes difficult to re-structure the repo later

Maybe, maybe not. First, we don't have an issue that I know of that would require restructuring the repo. Second, even if restructured, the repo could contain both the old and the new structure in parallel or even in different branches or repos. So I don't see that as a blocker.

dthaler commented 5 months ago

For third party extensions, getting them registered is a challenge. So what do we do if an application's extensions are registered for 7.0 and then it supports 7.1? By the rules of 7.0's SemVer then they should by default apply to 7.1 as well. But there might be things added that would result in some change like

7.0: "https://gedcom.io/terms/v7/EXID-TYPE": "{0:1}" 7.1: "https://gedcom.io/terms/v7/EXID-TYPE": "{0:M}"

Perhaps a minor release by default inherits the files from the previous one, and only deltas require their own file?

dthaler commented 5 months ago

Discussion May 2, 2024 in the GEDCOM Steering Committee meeting:

dthaler commented 4 months ago

Example discussed 9 MAY 2024: Extension allows _FOO under an INDI-record in 7.0. When the application that defined the extension updates their app to support 7.1, they decide to also allow DATE under _FOO where they didn't before, so the list of substructures changes. This requires an updated YAML, but does the URI change or not?

We think we would recommend: If they don't export to 7.0 then they use a new URI for the 7.1 variant. If they export to 7.0 with DATE then they update the same YAML file without a new URI.

For standards, the committee has stricter control and can guarantee the URIs would change in any minor or major change. The spec says that the structure type defines its (standard) substructures.

dthaler commented 4 months ago

For documented extensions, the GEDCOM version seems to be irrelevant as it could be used in any GEDCOM version that supports the superstructures/substructures referenced in the YAML file.