View Issue Details

IDProjectCategoryView StatusLast Update
0003231Slicer4Core: MRMLpublic2018-03-31 00:37
ReporterkikinisAssigned Toalexy 
PrioritynormalSeverityfeatureReproducibilityN/A
Status assignedResolutionfixed 
Product Version 
Target VersionSlicer 4.11.0Fixed in Version 
Summary0003231: mrml should be versioned (and documented)
Description

The mrml tree is evolving dynamically. This makes it difficult to develop technology that interprets mrml files or mrb files. As this topic is of increasing relevance, it would be good to introduce versioning and documentation. A stable version would be a good target for developers.

I would like to introduce versioning with slicer 4.3 and to explore how much work would be required to add documentation describing the different sections of the mrml tree.

Additional Information

A versioned and documented mrml tree would allow to selectively extract information out of a scene, using a third party program. This will allow previews and web-based viewers.

TagsNo tags attached.

Relationships

related to 0003306 assignedalexy should have a meaningful version in the mrml scene file 

Activities

fedorov

fedorov

2013-09-29 15:03

developer   ~0010104

FYI MRML scene versioning was supported in Slicer3 and then dropped.

pieper

pieper

2014-03-07 06:17

administrator   ~0011325

We should set a version number that is monotonically increasing when we knowingly add non-compatible change to MRML. This means that when old versions of slicer will not be able to load a newer scene correctly then this number should be incremented. When slicer tries to load a scene that has a newer version number than the version used to build it then there should be a warning.

pieper

pieper

2014-03-07 06:20

administrator   ~0011326

Modules/Loadable/Data/qSlicerSceneWriter.cxx:

this->mrmlScene()->SetVersion("Slicer4");

pieper

pieper

2014-04-15 12:52

administrator   ~0011593

This should at least be changed to use the version numbers that are defined by cmake and become #defines in the code. This would give us at least some idea which version of slicer was used to generate a particular mrml file.

@Alex do you know what I mean by this and are you able to implement it?

fedorov

fedorov

2014-04-15 13:04

developer   ~0011595

I think Slicer already has the macro to do this (or at least this is done in some extensions).

I recently did something similar, you can take a look here: https://github.com/QIICR/Slicer-SUVFactorCalculator/commit/357bf6cb241cb2972250c58e3361ba8be6bb1752

alexy

alexy

2014-06-10 08:39

developer   ~0012042

Last edited: 2014-06-10 08:41

Questions: What defines Slicer version?
-Slicer3 had configuration file with svn version in it, I could not find one for Slicer4
-I don't see any version info in CMakeLists.txt

pieper

pieper

2014-06-10 10:09

administrator   ~0012043

I suggest assigning a number based on the current release (so call this 4.4) and add the svn revision number for it (we are still using svn at the moment).

Then later we should only update the version of mrml when something actually changes in mrml that we know will break backward compatibility. I.e. it will be a manual process.

alexy

alexy

2014-06-13 10:25

developer   ~0012060

Added MRML scene version check and warning on scene load.
At revision: 23331

fedorov

fedorov

2014-09-19 06:57

developer   ~0012578

Alex, I tried latest nightly, and all that it has in mrml is

<MRML version="Slicer4.4.0" userTags="">

But where is the SVN revision tag, what we had in Slicer3?

fedorov

fedorov

2014-09-19 07:00

developer   ~0012579

Alex, I am not sure this issue is resolved.

lassoan

lassoan

2017-09-27 13:27

developer   ~0015189

Current version in the scene is still Slicer4.4.0. It would not make sense to change it now, while we are still using SVN. We should revisit for Slicer5 once we moved to github.

Issue History

Date Modified Username Field Change
2013-07-17 10:45 kikinis New Issue
2013-07-17 10:45 kikinis Status new => assigned
2013-07-17 10:45 kikinis Assigned To => alexy
2013-08-02 05:40 alexy Target Version Slicer 4.3.0 => Slicer 4.4.0
2013-09-29 15:03 fedorov Note Added: 0010104
2014-03-07 06:17 pieper Note Added: 0011325
2014-03-07 06:20 pieper Note Added: 0011326
2014-04-15 12:52 pieper Note Added: 0011593
2014-04-15 13:04 fedorov Note Added: 0011595
2014-06-10 08:39 alexy Note Added: 0012042
2014-06-10 08:41 alexy Note Edited: 0012042
2014-06-10 10:09 pieper Note Added: 0012043
2014-06-13 10:25 alexy Note Added: 0012060
2014-06-13 10:25 alexy Status assigned => resolved
2014-07-22 19:28 kikinis Status resolved => closed
2014-07-22 19:28 kikinis Resolution open => fixed
2014-09-19 06:47 fedorov Relationship added related to 0003306
2014-09-19 06:57 fedorov Note Added: 0012578
2014-09-19 07:00 fedorov Note Added: 0012579
2014-09-19 07:00 fedorov Status closed => assigned
2014-09-25 12:49 jcfr Target Version Slicer 4.4.0 => Slicer 4.4.1
2015-09-09 08:28 jcfr Target Version Slicer 4.4.1 => Slicer 4.5.0-1
2015-11-02 11:27 jcfr Target Version Slicer 4.5.0-1 => Slicer 4.6.0
2016-10-12 14:33 jcfr Target Version Slicer 4.6.0 => Slicer 4.7.0
2017-09-27 13:27 lassoan Target Version Slicer 4.7.0 => Slicer 4.9.0
2017-09-27 13:27 lassoan Note Added: 0015189
2018-03-31 00:37 jcfr Target Version Slicer 4.9.0 => Slicer 4.11.0