-
Notifications
You must be signed in to change notification settings - Fork 22
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
Investigate methods for versioning RAD schemas. #347
Comments
Comment by William Jamieson on JIRA: Versioning of the RAD schemas and consequently the data models built to support them will be a process that can quickly spiral out of control into large amounts of interconnected complexity. Thus the strategy for managing schema versions needs to make some attempt to limit the creation of large amounts of inter connections among versions AND clearly delineate versions from one another. A cohesive strategy for schema versioning will naturally involve our efforts to handle the data model code moving forward. In particular, this will occur so that To start with schema versioning, we first should note some important assumptions that are being made. Once a schema version is "published" (released for production), it for all practical purposes needs to become static. This means that no updates should be made to published schemas unless absolutely necessary.A distinction between "published" and in-development schemas needs to be in place.RAD will retain a static version of all "published" schemas.In order to limit the possible backwards compatiblity issues inherent in assumptions 1 and 3, my first proposal is that RAD should march all the schema versions forward at the same time and not allow any cross referencing between version sets. By this I mean that if say the In an effort to learn from some of the complexities of maintaining the ASDF-standard (and related) schemas, I think RAD should explicitly separate published versions and in-development versions. By this I mean that instead of having every version of every schema next to each other in the same directory structure I propose altering the structure of RAD such that instead of the schemas being in My reasoning for being extremely strict about separation of rad versions into whole separate independent sets of schemas is tied to the ideas in RAD-141, automatic code generation from schemas. The strict separation of schema sets for each RAD version will enable us to run an automatic code generator on each set of schemas independently. This means we can get an independently functional set of Python code which at least allows for the opening and writing of the data under each set of schemas as we noted in RAD-141, it is easy to tie the models generated into ASDF and ASDF, by the nature of how it functions, will correctly open to or write from the correct set of models. Since published schemas should be fixed once they are published, this separation should ensure that data written under old schemas is still easily accessible. Distinct-separate versioning also lets us use or emulate the functionality of The distinct-separate versioning allows us to provide a single conversion from a pervious version to a newer version. In most cases, such a conversion would simply be a 1-to-1 as the object data is exactly identical. Only when actual changes are made, will we need to actually write any true conversion utilities. We maybe able to do this transparently to users, meaning they might be able to use their existing versions of data without having to reacquire new data files from the archive. Note, that there maybe cases where no direct upgrade path is possible in which case we will have to document how to handle these cases. Finally, to make things simpler on ourselves, I propose that the version numbers for each successive version of the schemas be the published version of rad. I.E. we publish RAD 1.1.1, then it should have a published set of schemas under the version 1.1.1. |
Comment by William Jamieson on JIRA: Since RAD-141 has been closed, the ideas put forth in this ticket are no longer completely relevant. It appears that separate work has taken place outside this ticket, see #359 So I am closing this one. |
Issue RAD-142 was created on JIRA by William Jamieson:
As JWST has gone into actual use, changes to the schemas defining its data models have become necessary to adapt it to the realities of what is required. Often these changes have created backwards incompatibility changes which create problems with opening/handling data files created before these changes were made with later codes. This creates many complications with having to deal with older data files while using newer versions of the code.
Roman is likely going to encounter similar challenges, necessitating changes to the schemas which will not be compatible with earlier versions of the code. Thus we should investigate methods/strategies for dealing with these issues now, before they become more difficult to overcome. In particular, we should have some sort of versioning plan that enables us to do two things:
Be able to at least open existing/older data files with newer versions of the code. This will at least enable users to do some things with those files without having to deal with multiple conflicting versions of the code.
Have a mechanism in place to open and "update" older data files to newer versions of those data files whenever possible (or at least to the extent that it is practical).
To address both of these, we need to employ a strategy which realistically enables us to version the schemas and deal with the consequences resulting from the changes.
The text was updated successfully, but these errors were encountered: