On 16/06/2011 09:24, Thomas Beale wrote:
>
> Erik,
> thanks for the pointer. I like this set of rules. It is not too 
> different from the current draft identification spec 
> <http://www.openehr.org/svn/specification/TRUNK/publishing/architecture/am/knowledge_id_system.pdf>,
>  
> and it would be easy to upgrade it to reflect the SemVer rules more 
> faithfully. In the openEHR spec, major.minor.patch is referred to as 
> version.revision.build. I seem to remember a discussion where we 
> thought about renaming these. Do people think we should just stop 
> mentioning version/revision/build with respect to archetypes? Or is it 
> helpful to think of an openEHR 'revision' as being the same as a 
> 'minor' version (personally I think yes)?
>
> The only thing I don't like that much is going back to putting 'draft' 
> etc on the end of the version string, but I guess it is so common, 
> that we should just go with the flow.
>
> If we can get a bit of consensus here, I can update this draft 
> proposal to reflect it pretty quickly.
>
> - t
> *
> *

I meant to add that the SemVer concept of 'public API' for an archetype 
will obviously be something a bit different from a standard software 
API, i.e. set of class/function definitions. So the 'public API' itself 
will be part of what needs to be described. We can potentially interpret 
the version rules below for openEHR (for versions above 1.0.0; prior to 
that, you do what you want):

7. Patch version Z (x.y.Z | x > 0) MUST be incremented if only backwards 
compatible bug fixes are introduced. A bug fix is defined as an internal 
change that fixes incorrect behavior.

openEHR:

    * increment patch version ('build') incremented if change limited
      errors are corrected so that the original intention is preserved.
      Q: how do we document what the 'original intention' was?

8. Minor version Y (x.Y.z | x > 0) MUST be incremented if new, backwards 
compatible functionality is introduced to the public API. It MAY be 
incremented if substantial new functionality or improvements are 
introduced within the private code. It MAY include patch level changes.

openEHR:

    * increment minor version (openEHR 'revision') if change limited to
      compatible additions; in openEHR-land, the idea is that data of a
      previous revision remains conformant to new form of archetype. The
      general rule with constraints is that this can be done by:
          o widening existing constraints
          o adding new constraints not incompatible with existing
            constraints, i.e. at a clinical/domain semantic level

9. Major version X (X.y.z | X > 0) MUST be incremented if any backwards 
incompatible changes are introduced to the public API. It MAY include 
minor and patch level changes.

openEHR:

    * increment major version (openEHR 'version') if change causes
      archetype to no longer be compatible with existing data. In
      openEHR, a new 'version' is a treated like a new archetype, hence
      the use of the top-level version number in the semantic identifier.

some more work is obviously needed to get all this where it needs to be, 
but I think the SemVer rules look like a good basis to hang openEHR 
principles on.

- thomas

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.openehr.org/mailman/private/openehr-clinical_lists.openehr.org/attachments/20110616/09dfd4ce/attachment.html>

Reply via email to