Match the uid preload structure to the uuid() function

Certainly not a coincidence and I should have made that more clear! Deeper changes like changing the way instanceID is represented are certainly worth considering and I trust they would be carefully considered and implemented since they require changes across the whole ecosystem.

My preference would be to consider deep changes to how unique identifiers are represented and computed in the context of formalizing behavior that is directly valuable to users like edit workflows.

But since I may not be around to participate in those discussions (!), my priority in the short term is making sure that if the XLSForm change is considered, there is a public, archived discussion describing the context. It's the kind of thing that seems really minor (and very well might be) but I have a hard time predicting the side effects.

I should have said that from a user perspective, the calculation is recomputed on subsequent form loads. What you describe is not necessarily accurate either because generally, implementations will maintain a dependency graph for performance purposes.

Note that this all has not been much of a user-facing issue because typically when users want to make edits to data, they want those edits to be linked to the prior data but not replace it. In other words, it's not desirable for an edited filled form to have the same instanceID as its parent. That is what deprecatedID is for. Also, clients like Collect don't make an edit workflow all that visible. I presume/hope Enketo uses deprecatedID in the way I described but that has yet to be formalized.

My primary objection is that they're "magic" unrelated to the XForms spec. They're not terrible, though, and do get the job done. But if there are going to be more configuration options made available to the form from the client, I do think it's worth considering alternatives. For example, an option would be for clients to generate or download real or virtual XML documents and for forms to be able to query those in a similar way to how secondary instances are queried -- https://opendatakit.github.io/xforms-spec/#secondary-instances---internal.

1 Like