Never a Wrong (Semantic) Version Again! - Ferry Huberts

14
Never A Wrong (Semantic) Version Again! bndtools

description

OSGi Community Event 2013 (http://www.osgi.org/CommunityEvent2013/Schedule) ABSTRACT

Transcript of Never a Wrong (Semantic) Version Again! - Ferry Huberts

Page 1: Never a Wrong (Semantic) Version Again! - Ferry Huberts

Never A Wrong

(Semantic) Version Again!

bndtools

Page 2: Never a Wrong (Semantic) Version Again! - Ferry Huberts

2/14

About Me

● Ferry Huberts M.Sc.● Open Source Entrepreneur (pelagic.nl)

● Member of the bnd / bndtools team● Contributor in several other projects

– Like olsrd, cgit

Page 3: Never a Wrong (Semantic) Version Again! - Ferry Huberts

3/14

Meaning of Semantic

se·man·ticadjective \si- man-tik\ˈ

Origin of SEMANTIC

Greek sēmantikos significant, from sēmainein to signify, mean, from sēma sign, token

* From http://www.merriam-webster.com/dictionary.

Page 4: Never a Wrong (Semantic) Version Again! - Ferry Huberts

4/14

Meaning of Version

ver·sionnoun \ v r-zh n, -sh n\ˈ ə ə ə

Origin of VERSION

Middle French, from Medieval Latin version-, versio act of turning, change, from Latin vertere to turn — more at worth

* From http://www.merriam-webster.com/dictionary.

Page 5: Never a Wrong (Semantic) Version Again! - Ferry Huberts

5/14

Meaning of Semantic Version

A Semantic Version

isA change with (strict) meaning

Page 6: Never a Wrong (Semantic) Version Again! - Ferry Huberts

6/14

Semantic Versioning Schemes

● OSGihttp://www.osgi.org/wiki/uploads/Links/SemanticVersioning.pdf

● SemVer.orghttp://semver.org/

● Eclipsehttp://wiki.eclipse.org/Version_Numbering

Page 7: Never a Wrong (Semantic) Version Again! - Ferry Huberts

7/14

Semantic Versioning

● OSGihttp://www.osgi.org/wiki/uploads/Links/SemanticVersioning.pdf

Page 8: Never a Wrong (Semantic) Version Again! - Ferry Huberts

8/14

Premise

Semantic Versions

are all about

(Backward) Compatibility

Page 9: Never a Wrong (Semantic) Version Again! - Ferry Huberts

9/14

Major.Minor.Micro.Qualifier*

● Major: incompatible change for providersand consumers

● Minor: incompatible change for providers● Micro: compatible change● Qualifier: anything (e.g. build identity)

* Major, Minor and Micro are numbers, Qualifier is a string

Semantic Version

Page 10: Never a Wrong (Semantic) Version Again! - Ferry Huberts

10/14

API

Coherent setof

exported classes

Page 11: Never a Wrong (Semantic) Version Again! - Ferry Huberts

11/14

Hands-On

bndtoolsThe easy, powerful and productive way to develop with OSGi.

Based on bnd and Eclipse.

Page 12: Never a Wrong (Semantic) Version Again! - Ferry Huberts

12/14

Rocket Example

rocket.control.apirocket.control

rocket.blackbox

API

rocket.control.api.RocketControlListener

Provider

Consumerbndtools

Page 13: Never a Wrong (Semantic) Version Again! - Ferry Huberts

13/14

Summary

● Semantic Versions:– Theory:

● conceptually easy

– Reality:● not so easy● easy to forget to update the multiple places

– There are some subtleties

● bndtools can handle* it for you● Never Stop Thinking

* except for semantic changes not detectable by a machine, like kph to mph renames

Page 14: Never a Wrong (Semantic) Version Again! - Ferry Huberts

14/14

Contact

bndtools: http://bndtools.org/https://github.com/bndtools/bndtoolsmailto:[email protected]

bnd: http://www.aqute.biz/Bnd/Bnd https://github.com/bndtools/bndmailto:[email protected]

Ferry Huberts <[email protected]>