-
Notifications
You must be signed in to change notification settings - Fork 14
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
Object and inventory versioning #475
Comments
I think it is also important to recognize that we are defining a data packaging format, and not a piece of software. There is value in keeping data structures stable, since we need predictable behaviours from it. This is not the same values that we have in software, where the emphasis is more on constant improvement of the system. If a software package goes years without updates, it's generally considered stale. If data goes years without updates, it's stable. The 'b' makes a big difference. :-) I fully understand that there is a tension for the people who have to write constantly improving software, whose lifespan is generally under a decade, against a stable data format whose lifespans should be measured in multiple decades. But I also think it's shortsighted to design these data formats with the idea that they should change at the same rate as we think software will change. It we do, we don't actually solve the problem that we're trying to solve, which is to reduce long-term risk to data by decoupling the storage format from the application(s) that manage it. |
I think this issue should be deferred. Currently we are working toward v1.0. Both the conformance declaration file in the object root and the |
At this point, I don't have a personal opinion about how I would like OCFL to behave here. I raised these questions because, as it currently stands, the intent of the spec is ambiguous, and, based on the discussion in the other ticket, there is not a shared editorial understanding of what the intent is either. I don't necessarily have a problem deferring these decisions until there actually are multiple OCFL spec versions in existence. However, I will say that to me it seems like there is a conflict between what @ahankinson was saying about stable data formats and taking an iterative approach to the OCFL specification. I'm not saying that either is wrong, but it seems to me like there are plans for future OCFL spec versions within the next, say, 2-5 years (maybe?). And, if this is the case, it does not seem like a stable format, and, if I had migrated to OCFL 1.0 only to later find out a couple years down the road that I would need to rewrite all of my objects if I wanted them to make use of OCFL 2.0 features, then I might be a little miffed. |
But the 1.0 spec won't change, so any content that is produced as 1.0 will stay as 1.0. Unless there is something you need in 2.0, there is no real reason to upgrade your data to the latest version of the spec. |
Fair enough (and I mostly agree with your positions both in this ticket and the other)! For the sake of clarity of OCFL implementations, I still think it would be helpful if the spec picked a side in 1.0, even though there is only one version. For example, the root conformance section already states:
I can write code for that. Is object conformance <= root conformance. On the other hand, the spec is silent about the relationship between the object conformance and inventory |
Based on discussion with @pwinckles on the community call I think the key point here that we should consider and decide before releasing v1.0 is whether we want to be explicit that the object conformance declaration MUST match the version of the In https://ocfl.io/draft/spec/#version-inventory perhaps change:
to
|
The discussion in #474 raised a number of additional versioning related questions.
type
definition? That is, does one represent the version of the object and the the other the inventory, or do they both represent the version of the object as a whole?type
definition?The text was updated successfully, but these errors were encountered: