@issa and I were discussing version in https://github.com/opendatakit/build/issues/154 and I think this is a longer discussion that should be had more broadly.
Historically, people have used the form id
as a kind of a version. So the first version of the form is my_form_1
and the second version is my_form_2
. This has been the recommended practice (see #6 in form design guidelines) for a while. And since it's user-defined, there are no checks (e.g., on structure) on what a new version means. Aggregate currently treats them as totally separate forms and it's up to the user to decide how to merge them.
We added version
, the attribute, sometime later and the guidelines read:
a separate version setting is used for revisions that do not change the data being collected or their data types. These 'minor' revisions include adding language translations, correcting spelling errors within the text, changing external dataset files, and updating multi-media prompts. E.g., changing the media files used in audio, image or video labels (prompts). Using the version setting enables form definitions to be enhanced mid-survey while allowing all of the older and newer submissions to be stored in the same data table on the ODK Aggregate server. The version of the form definition used is retained in the meta-data of each individual submission so that it is available during data analysis.
version -- must be a small 10-digit-or-less numeric string. We recommend using strings of the form: 'yyyymmddrr' e.g., 2015012901 (the 1st revision on January 29, 2015). Revised form definitions must have a version string that compares lexically (alphabetically) greater than the current form definition. I.e., ODK Aggregate does not accept changes to a form definition unless the version string is different and lexically (alphabetically) greater than the version string of the existing form definition (and the version string must be a 10-digit-or-less integer).
So that's what Aggregate does, but I don't know what ELMO, ONA, Enketo, Kobo do as far as version
.
My guess is that as we move towards supporting form updates, I think we'll adjust these guidelines, so I think we should have a discussion about what version
means now and what we want it to mean.