-
Notifications
You must be signed in to change notification settings - Fork 55
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
Clarify how NXDL versions relate to application definitions #1038
Comments
Great question! I consider the repository version number as being the set of all the different NXDL versions at the time when the repository version was tagged. That set includes the Your (a) case describes which version of the repository and the corresponding version of NXmx that was included in the release. (The various rules for NXmx will also depend on the various items in the If the application definition was updated since the repository version and if the new version was tagged, then (c) would be used to clarify. Option (b) does not describe the version of the |
Yes. |
Only if these versions existed together in default branch of the repository at the same time. The validating programs will look at a specific snapshot of the repository (tagged version, commit hash, ...). |
Examples of different repository snapshots: ============== =================== =======
NXDL reference date & time commit
============== =================== =======
a4fd52d 2016-11-19 01:07:45 a4fd52d
v3.3 2017-07-12 10:41:12 9285af9
Schema-3.4 2018-05-15 08:24:34 aa1ccd1
v2018.5 2018-05-15 16:34:19 a3045fd
main 2021-12-17 13:09:18 041c2c0
============== =================== ======= |
@prjemian Thanks so much for the quick reply!
Let me make sure I understand what you're saying. So by repository version "number" you mean any specific commit including a tagged version like Also, related to this, what is the correct nomenclature to use? You have a file |
Understood. On the other hand, it seems a bit problematic to use a non-released nexus version (e.g. with (c)). If various items in |
In this light, one could be argue that (b) is actually less problematic than (c) for the example above? (b) would simply specify the state of the repository at the corresponding application definition version tag (e.g. tag A definite issue with (b) is that some application definitions have had their version numbers go backwards: |
Also, what is the policy for changing the versions of application definitions? For example, if a new field/attribute is added to some related class definition, does this warrant a version bump of an application definition? Or do version changes only signify changes that are incompatible in some way? |
Thinking out loud here. If you think about it as a python programmer, our NXDL version (the one in the NXDL_VERSION file) is the version of our language and our libraries. In analogy, suppose
Then our NXDL version is the python version and at the same time the numpy/scipy/pandas version. Each NXDL version gets released under releases: v2020.1, v2020.10, ... In our analogy, this release contains the python source code (.xsd) and the numpy source code (NXmx.nxdl.xml), scipy source code (NXdetector.nxdl.xml) etc, like the repo does but then snapshot at a certain version. In our analogy, you don't want python and numpy/scipy/pandas to have the same version. So now the confusion starts. We have
Other NeXus classes that mention a So in our analogy these would clearly be the version of So to summarize using our analogy:
Note that NXtomo does not mention any version, which leads me to believe that Also note that like Of course another analogy is to look at NeXus classes as classes in object oriented programming. That's useful when talking about inheritance but not when talking about versioning. All this has evolved historically and probably will evolve in the future. |
NIAC2022 suggested this become an issue for a future code camp. |
So, is the consensus so far that we should rely on the NX release-date version, the application version, some hybrid of these, or an as yet to-be-defined version ID? |
I usually use the (as you call it) release date version. Most recent was
v2022.07.
…On Tue, Oct 11, 2022, 5:39 PM pshafer-als ***@***.***> wrote:
So, is the consensus so far that we should rely on the NX release-date
version, the application version, some hybrid of these, or an as yet
to-be-defined version ID?
—
Reply to this email directly, view it on GitHub
<#1038 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AARMUMHW6WIYKIHPTNIRK2TWCXUBRANCNFSM5RCREWXQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
That contradict NXcanSAS-1.1, NXtomo-2.0, ... But maybe we don't do those anymore? |
The problem is that the NXDL version covers much more than "the version of the NeXus Definition Language". It's like python 3.7.11 pins numpy to 1.19.4. So in our case the version of python (NXDL) pins the version of numpy (the application definition). So from that pov I would agree with @prjemian : use the NXDL version. |
I always hope that these reaction emojis get communicated to you. In any case, I want to say thank you for the quick feedback. :) |
Proposal for an |
As for the deployment of NXDL versions: we could put it here:http://definition.nexusformat.org/nxdl/ |
Concerning the proposal of @woutdenolf, I would like to have a version attribute at the NXroot level because
|
The definition field is used for one purpose, to state the application definition being used. It is required when the application definition is used in the NXentry or NXsubentry group. |
You can do this now. Why must it be part of the standard? |
It would be machine-readable. If I add something that is not part of the standard it is in the best case human-readable, in the worst case only intelligible to me. |
We are seeking clarification on how NXDL versions relate to application definitions. Does a particular NXDL version imply fixed versions of each application definition? For example: Does NXDL v2020.10 imply NXmx 1.0? Could it ever make sense to use a newer/older NXDL version with a particular version of an application definition?
We are writing NeXus data files and may let the user choose the application definitions (e.g. NXmx vs. NXsas). If we end supporting multiple versions of said application definitions, what is the recommended way to present this to the user?
For example:
a) Nexus 2020.10 NXmx
b) NXmx 1.0
c) Nexus 2020.10 NXmx 1.0
Is simply specifying (a) or (b) enough? Or are there arguments for presenting it as (c)? Please provide guidance about which option (a)-(c) would be preferred.
The text was updated successfully, but these errors were encountered: