Semantic Versioning
SEITENBAU LIGHTNING TALKS
     Christian Baranowski
Version Syntax



1 . 0 . 0 . b1
major   minor   micro    qualifier
Semantic Versioning
                 Version=1.0.0

                  Application
  Consumer         API                       Provider




Version=1.0.0                Version=1.0.0
Semantic Versioning
                             Version=1.0.1
                             Version=1.0.0

                              Application
      Consumer                  API                          Provider

                                       1




    Version=1.0.0                            Version=1.0.0
                                             Version=1.0.1

1   API Bugfix (in Exported Packages).
    E.g. JavaDoc change, Method parameter rename, …
Semantic Versioning
                                  Version=1.0.2
                                  Version=1.0.0

                                   Application
       Consumer                      API                      Provider

                                                                         1




    Version=1.0.0                             Version=1.0.1
                                              Version=1.0.2

1   Provider internal change.
    E.g. bugfix in the class ServiceImpl.
Semantic Versioning
                                 Version=1.0.3
                                 Version=1.0.2

                                  Application
      Consumer                     API                           Provider




                    1




    Version=1.0.0                                Version=1.0.2
    Version=1.0.1


1   Consumer internal change.
    E.g. bugfix in the class MyListener.
Semantic Versioning
                                Version=1.1.0
                                Version=1.0.3

                                 Application
      Consumer                    API                           Provider

                                          1




    Version=1.0.1                               Version=1.0.2
                                                Version=1.1.0


1   API backward compatible change.
    E.g. add a method to service class.
Semantic Versioning
                                Version=2.0.0
                                Version=1.0.3

                                  Application
       Consumer                    API                          Provider




                                          1




     Version=1.0.1                              Version=1.1.0
     Version=1.0.2                              Version=2.0.0


1   API not backward compatible
    e.g. add a method to the Listener class.
Semantic Versioning
• Major
  Must be increase if the changes effects providers as well as consumers.

• Minor
  Must be increase if the changes are backward compatible for the
  consumers, but not backward compatible for the providers.

• Micro
  A difference in micro part does not signal any backward compatibility
  issues.

• Qualifier
  The qualifier is used to indicate a build.

For more details see the “ OSGi Technical Whitepaper about Semantic
Versioning”
Tools
• Bnd / Bndtools Semantic Versioning for OSGi
  based Applications
  http://bndtools.org/
• Semantic Versioning for Jars and Maven
  https://github.com/jeluard/semantic-
  versioning
Links
• OSGi Technical Whitepaper Semantic
  Versioning
  http://www.osgi.org/wiki/uploads/Links/Sem
  anticVersioning.pdf
• Semantic Versioning Specification (SemVer)
  http://semver.org/

Semantic Versioning

  • 1.
    Semantic Versioning SEITENBAU LIGHTNINGTALKS Christian Baranowski
  • 2.
    Version Syntax 1 .0 . 0 . b1 major minor micro qualifier
  • 3.
    Semantic Versioning Version=1.0.0 Application Consumer API Provider Version=1.0.0 Version=1.0.0
  • 4.
    Semantic Versioning Version=1.0.1 Version=1.0.0 Application Consumer API Provider 1 Version=1.0.0 Version=1.0.0 Version=1.0.1 1 API Bugfix (in Exported Packages). E.g. JavaDoc change, Method parameter rename, …
  • 5.
    Semantic Versioning Version=1.0.2 Version=1.0.0 Application Consumer API Provider 1 Version=1.0.0 Version=1.0.1 Version=1.0.2 1 Provider internal change. E.g. bugfix in the class ServiceImpl.
  • 6.
    Semantic Versioning Version=1.0.3 Version=1.0.2 Application Consumer API Provider 1 Version=1.0.0 Version=1.0.2 Version=1.0.1 1 Consumer internal change. E.g. bugfix in the class MyListener.
  • 7.
    Semantic Versioning Version=1.1.0 Version=1.0.3 Application Consumer API Provider 1 Version=1.0.1 Version=1.0.2 Version=1.1.0 1 API backward compatible change. E.g. add a method to service class.
  • 8.
    Semantic Versioning Version=2.0.0 Version=1.0.3 Application Consumer API Provider 1 Version=1.0.1 Version=1.1.0 Version=1.0.2 Version=2.0.0 1 API not backward compatible e.g. add a method to the Listener class.
  • 9.
    Semantic Versioning • Major Must be increase if the changes effects providers as well as consumers. • Minor Must be increase if the changes are backward compatible for the consumers, but not backward compatible for the providers. • Micro A difference in micro part does not signal any backward compatibility issues. • Qualifier The qualifier is used to indicate a build. For more details see the “ OSGi Technical Whitepaper about Semantic Versioning”
  • 10.
    Tools • Bnd /Bndtools Semantic Versioning for OSGi based Applications http://bndtools.org/ • Semantic Versioning for Jars and Maven https://github.com/jeluard/semantic- versioning
  • 11.
    Links • OSGi TechnicalWhitepaper Semantic Versioning http://www.osgi.org/wiki/uploads/Links/Sem anticVersioning.pdf • Semantic Versioning Specification (SemVer) http://semver.org/