FamilySearch / GEDCOM.io

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

Defining compatibility without referencing specific features #48

Open tychonievich opened 2 years ago

tychonievich commented 2 years ago

The current compatibility guide suggests compatibility with the specification is tied to supporting a wide set of features. I'd rather define it in terms of the alignment between whatever features an application supports and the files they read and write.

As a discussion proposal, perhaps we could define something like the following


The FamilySearch GEDCOM 7 specification contains more than 150 standard structure types appearing in more than 1000 contexts, and many family history applications use only a subset of them. Additionally, many applications implement features that are not (yet) part of the specification. Because of this, compatibility with the specification is dependent on the features implemented by a given application.

The following compatibility categories are defined.

Import Compliance
The application can successfully import any file that conforms to the specification.
Export Compliance
Every file exported by the application with a HEAD.GEDC.VERS is a valid file as defined by the identified version of the specification.
Import Coverage
For each component of the application's data model, if a standard structure in the imported file corresponds to that component then that component is set to match that structure during import.
Export Coverage
For each component of the application's data model, if a standard structure is available in the specification to represent that component then that structure is used to represent that component during export.
Import Transparency
The application alerts the user of any structures in an imported file that are not fully imported into the application's data model.
Export Transparency
The application alerts the user of any structures in the application's internal data that are not fully represented in the exported file. This is trivially achieved if the application has lossless exports.
Lossless Exports
The application loses no data if it (1) exports a FamilySearch GEDCOM 7 file, (2) clears its internal state, and then (3) imports the file it exported. Achieving this may entail the use of extension structures in the exported file.
dthaler commented 2 years ago

Comments:

clarkegj commented 2 years ago

I like the word coverage instead of compliance. Transparency implies a review of the software and how it communicates with the user. Likewise, I don't know how or what program would check Lossless Exports.

tychonievich commented 2 years ago

Discussed by steering committee. There was interest in this topic, but not yet consensus. Lossless imports seemed difficult to properly define. We noted that it would also be nice to include some kind of pre-purchase transparency, such that users could determine what specific structure coverage an application has without first using the application.

tychonievich commented 2 years ago

Below is a longer draft that I think addresses the above comments.