A topic that was discussed on the Architecture call today was how to manage version dependencies between the various components of the architecture. The purpose of this post is to introduce the discussion we have been having and allow for comment from the community.
We currently have evolving versions of practically every aspect of our architecture including our R packages, CDM specification, WebAPI, ATLAS, etc... As these platforms evolve we will need to clearly document what dependencies exist for running a particular part of the platform.
For example, today any version of ATLAS beyond 2.0 requires at least version 2.0 of the WebAPI. In this particular case (ATLAS and the WebAPI) we are keeping the version numbers in sync. If you want to run 2.2 or ATLAS you should run 2.2 of the WebAPI. It is not the case that all version numbers are currently in sync. For example the CDM specification has currently released version 5.3. While no one is running their CDM in version 5.3 today, they soon will be. Here is where our conversation began.
Changes in the CDM V5.3 specification will change tables and will require changes to the WebAPI. It will also require changes in ATLAS to support a designer for the new cohort definitions that will be possible. Here are a few of the issues that were discussed:
- The WebAPI has no property in data source configuration that tracks the version of the CDM specification for that particular data source.
- ATLAS does not know the version of the underlying WebAPI
- WebAPI does not have a list of "supported features" that it can provide to help control what the UI presents to the user.
- In the case where a user were to create a cohort definition that requires the table updates found in CDM v5.3, there is no way to know that the cohort definition requires that CDM version, and if that cohort definition were shared to an environment where their CDM is still on versions prior to v5.3 how should that be handled?
These issues will certainly require our attention. I invite others from the call to comment on other topics that I did not capture here and invite others from the community to provide comment as we consider possible solutions.