Project

General

Profile

CIM Issues #5111

Versioning of CIM packages

Added by Chavdar Ivanov over 2 years ago. Updated about 1 year ago.

Status:
Closed
Priority:
Normal
Author/Contact Info:
Chavdar Ivanov
Base Release:
Solution to be Applied To:
CIM18v03
Solution Version:
CIM18v03
Solution Applied By:
Chavdar Ivanov
Completion Date:
02/11/2023
CIM Keywords:
Breaking Change:
No
Breaking Change Description:
CIM Impacted Groups:
WG13
Requestor:
Standard(s):

61970-301

Version:
CIM18
Clause:
Sub-Clause:
Paragraph:
Table:
Originally Closed in Version:
Origination Date:
Origination ID:
Originally Assigned To:
Yang Feng

Description

CIM is growing and the efforts on maintenance, model management, structured development, managing dependencies, etc are increasing. There is versioning of the 3 main packages 61970, 61968 and 62325. There are dependency diagrams on high level.
However there is a need to version subpackages, e.g. Base, Dynamics, Wires, Core, etc. This will allow the following
- provide a clear indication which package is changes in a given release. For instance it could well happen that Core does not changes for StateVariables and users will clearly know that from the version of the package
- facilitate documentation handling
- allows better understanding which profiles are affected if a package is modified. Dependency diagrams will also help here.
- enable an approach that deal with vocabularies related to sub packages, e.g. Core vocabulary, Wires vocabulary, etc
...

Issue was discussed multiple times in WG13 and members find versioning of packages a good approach. There are also options to version on class level, but this is considered too much.


Proposed Solution

There are at least 2 options on how to add the version
- add a version class in each package
- add a tagged value on the package. This could be a number xx.yy.zz to indicate major.minor.revision numbers, but it could also be URI http://iec.ch/TC57/CIM/{package name}/xx.yy where xx is major version and yy is minor version, e.g. http://iec.ch/TC57/CIM/Core/17.40

Such solution can already be applied in the Dynamics package and subpackages as it is in CDV stage. The version information will then be printed in 61970-302:Ed2. 301 and other standard will follow according to their release plan


Decision

UTF13 decided to apply the versioning to Base and Dynamics packages and subpackages starting from CIM18
all URIs will get v 1.0
The domain is uca, e.g. http://ucaiug.org/CIM/Dynamics/1.0

Version and URI are only changed in official releases at least in the begining of development of the package. For instance working drafts may not get newer versions.


Release Notes

Two tag values were added to the UML
uri which has the URI of the package, e.g. http://ucaiug.org/CIM/Dynamics/1.0
version which is the version of the package, e.g. 1.0.0

#1

Updated by Todd Viegut over 2 years ago

Chavdar, a couple of questions. For the proposed solution options you have described i.e. xx.yy.zz or http://iec.ch/TC57/CIM/{package name}/xx.yy. I would like to simply formalize what types of UML changes fall into each component of the semantic version. I'd like to additionally document this in the CIM modeling guidelines document.

xx -> As part of semantic versioning this would translate to breaking changes within the package such as:
- A class is removed
- A class is renamed
- An attribute is removed from an existing class
- An attribute is renamed within an existing class
- An association is removed
- An association role end is renamed

yy -> As part of semantic versioning would translate to non-breaking changes within the package such as:
- A new class is added
- A new attribute is added to an existing class
- A new association is added

zz -> As part of semantic versioning would translate to very minor non-breaking changes within the package such as:
- description of the package is updated/clarified
- description of an existing class is updated/clarified
- description of an existing attribute is updated/clarified

Additional questions/assumptions we should formalize:
- What if a package is added under an existing package (e.g. a new child package under the Base package)? Is our position that the semantic version of the Base package would or would not change to reflect this addition? Currently, I do not see a reason to change the version of the parent package (i.e. for Base in this example). Just want us all to be on the same page.
- Do we update the semantic version IF a UML diagram is updated or do we restrict to only changes to the UML proper? At first UML proper seemed reasonable but I vacillate.
- Currently for your URI-based option it seems to me we'd also want to include 'zz'. Thoughts?

Chavdar (et al.), please add/modify/clarify what I've proposed here.

#2

Updated by Chavdar Ivanov over 2 years ago

Todd, very good
in the xx we can add
- description is modified to a higher degree potentially changing the meaning
- constraint is added - that maybe in yy

I guess if a package is added to Base this is yy increase of the version as this should bring features. It will also depend if this package will have to do something with classes under Base. In case the versioning of Base might not be super useful - just on global level. What will be really good if the versioning of the packages down the hierarchy

I think versioning of diagrams might not bring that much

on the URI. If we want to have more stable approach we can keep the URI without the zz and have the zz in another tag value. The zz should normally be editorial changes that would not need change in implementation. So if we use the URI to actually get the vocabulary for that package the http://iec.ch/TC57/CIM/Core/17.40 will always refer to the latest revision but the URI would only have xx.yy. In fact if we want to really publish this we can use the ucaiug domain instead of iec.ch. Basically an RDF export of that vocabulary can be published there

#3

Updated by Todd Viegut over 2 years ago

Chavdar, excellent! Thanks for your feedback as that what I was hoping for. Your additional suggestions make solid sense. Also you clarifications on the URI-base approach is helpful and we will be able to discuss better when Eric and I set up the meeting with the Becky and Henry. Anything else you end up thinking of please add to this thread. :)

#4

Updated by Eric Stephan over 2 years ago

  • Status changed from New to Open

This was approved at the October 13, 2021 WG13 meeting.

#5

Updated by Eric Stephan over 2 years ago

  • Status changed from Open to Review
#6

Updated by Eric Stephan about 2 years ago

From WG13 November 24, 2022 Meeting:

o Proposed using existing package properties (uri, version and package) for version.
o Proposed: start at 1.0 (major.minor version)
o Applied to the base CIM17v40 version that we used as baseline for CIM18 going forward.

Discussion on xx.yy.zz release format from the Issue 5111:

xx > As part of semantic versioning this would translate to breaking changes within the package such as:
A class is removed
- A class is renamed
- An attribute is removed from an existing class
- An attribute is renamed within an existing class
- An association is removed
- An association role end is renamed

yy > As part of semantic versioning would translate to non-breaking changes within the package such as:
A new class is added
- A new attribute is added to an existing class
- A new association is added
- description of the package is updated/clarified
- description of an existing class is updated/clarified
- description of an existing attribute is updated/clarified

zz -> As part of semantic versioning would translate to very minor non-breaking changes within the package such as:
-syntax generation
-spelling mistakes, editorial fixes etc

Additional questions/assumptions we should formalize:
- What if a package is added under an existing package (e.g. a new child package under the Base package)?
- The packages will follow the same rules as the classes. (above)

Is our position that the semantic version of the Base package would or would not change to reflect this addition? Currently, I do not see a reason to change the version of the parent package (i.e. for Base in this example). Just want us all to be on the same page.
- The packages will follow the same rules as the classes. (above)

- Do we update the semantic version IF a UML diagram is updated or do we restrict to only changes to the UML proper? At first UML proper seemed reasonable but I vacillate.

• The assumption is that the current version of the 301v7.1 is 1.0.
• In the 302 ed2 we should put in 1.0 for the package version.
• If we had a new amendment to the 301 (prior to the CIM18) we would add the versioning to that document

#7

Updated by Eric Stephan about 2 years ago

I meant November 24, 2021 in the last note

#8

Updated by Eric Stephan over 1 year ago

  • Status changed from Review to In Progress
  • Originally Assigned To set to Yang Feng
#9

Updated by Todd Viegut about 1 year ago

  • Version changed from CIM17 to CIM18
#10

Updated by Chavdar Ivanov about 1 year ago

  • Solution to be Applied To set to CIM18v03
  • Solution Version set to CIM18v03
  • Solution Applied By set to Chavdar Ivanov
  • Completion Date set to 02/11/2023
  • Decision updated (diff)
  • Release Notes updated (diff)
#11

Updated by Chavdar Ivanov about 1 year ago

  • Status changed from In Progress to Closed

Also available in: Atom PDF