Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add rules on how to identify and date compiled/versioned releases #834

Closed
jpmckinney opened this issue Mar 25, 2019 · 5 comments
Closed
Assignees
Labels
Focus - Documentation Includes corrections, clarifications, new guidance, and UI/UX issues Ready for PR
Milestone

Comments

@jpmckinney
Copy link
Member

Split from #455. Copying relevant contributions:

From @mpostelnicu

[compiled releases] is where we need a better handling of IDs. Even then, maybe the ID of a compiled release could be constructed adding ocid to say the compiled release creation datetime, or a random hash. i am not entirely sure that for the same contract, two compiled releases done at a different time and having different content, would have to have the same id or not...

From @jpmckinney

we should add more guidance about the identification of compiled releases.

For context, release-schema.json has "omitWhenMerged": true for id and date, which means that the compiled release will not retain these fields from the releases on which it is based.

The compiled release is essentially the "present state of the contracting process". However, as you note, this "present state" can be published at multiple times, such that you can have many compiled releases for the same contracting process. Without id or date fields, it's more difficult to distinguish compiled releases, or to establish their sequence (since a record must always include at least one release, a user could look up the latest date among those releases, but this is a greater effort). We might therefore consider introducing a date field on the compiled release, whose semantics would be the time at which it was updated.

Since the compiled release reuses the release schema, id is required – though with #330 this requirement might be removed for the compiled release. In the meantime, I think it makes sense to set the id to the <ocid>-<date>, where the date is the last release's date, and to set the date similarly.

@jpmckinney jpmckinney added the Focus - Documentation Includes corrections, clarifications, new guidance, and UI/UX issues label Mar 25, 2019
@jpmckinney jpmckinney added this to the 1.2 milestone Mar 25, 2019
@jpmckinney
Copy link
Member Author

The versioned release has no id or date field, so if we identify use cases for those fields, they will need to be added by the make_versioned_release_schema.py script.

@jpmckinney jpmckinney changed the title Add guidance on how to identify and date compiled/versioned releases Add rules on how to identify and date compiled/versioned releases Apr 1, 2019
@duncandewhurst
Copy link
Contributor

We might therefore consider introducing a date field on the compiled release, whose semantics would be the time at which it was updated.

Does this conform to the description of the date field in the release schema?

The date on which the information contained in the release was first recorded in, or published by, any system.

Arguably, taking the information in the compiled release as a whole, the date the information was first published is the date the compiled release was updated.

In which case, should we clarify the schema description as follows?

The date on which the information contained in the release was first recorded in, or published by, any system. For a compiled release, the date of the last release used to create the compiled release.

@duncandewhurst duncandewhurst self-assigned this Jun 14, 2021
@jpmckinney
Copy link
Member Author

Yes. Another option:

... For a compiled release, the maximum date among the individual releases used to create the compiled release.

To avoid ambiguity with respect to "last" (e.g. if some historical release were backfilled at a later date).

@duncandewhurst
Copy link
Contributor

For id:

... For a compiled release, the ocid and the maximum date among the individual releases used to create the compiled release, separated by a dash: {ocid}-{date}.

I used {} notation for consistency with the description for Organization/id.

Potentially, this creates a conformance issue: if the publisher already uses ocid-date for release IDs, then the compiled release and the last release would share the same id, so it would not be unique within the scope of the contracting process. @jpmckinney what do you think?

In addition to the schema changes, should we add a note to https://standard.open-contracting.org/staging/1.2-dev/en/schema/records_reference/#compiled-release explaining the rules?

@jpmckinney
Copy link
Member Author

dash -> hyphen

I consider compiled releases to be grouped separately from individual releases, in terms of uniqueness. Their uniqueness rules are more like records.

Rather than the records reference page, this section of the merging page needs to be updated: https://standard.open-contracting.org/staging/1.2-dev/en/schema/merging/#merging-specification

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Focus - Documentation Includes corrections, clarifications, new guidance, and UI/UX issues Ready for PR
Projects
Status: Done
Development

No branches or pull requests

2 participants