owlcs / owlapi

OWL API main repository
823 stars 315 forks source link

Welcome to owlapi version 10 #624

Open sesuncedu opened 7 years ago

sesuncedu commented 7 years ago

Starting from owlapi-5.0.0, then incrementing version numbers in accordance with semantic versioning principles have the following sequence of changes in package version numbers. I am leaving out bumps in the micro version.

5.0.1

The Bundle-Version should be 6.0.0, as there is a major version change.

LEVEL Package Version
MINOR org.semanticweb.owlapi.io {version=5.1.0}
MAJOR org.semanticweb.owlapi.model.parameters {version=6.0.0}
MINOR org.semanticweb.owlapi.rdf.rdfxml.renderer {version=5.1.0}

5.0.2

The Bundle-Version should be 7.0.0, as there is a major version change.

LEVEL Package Version
MAJOR org.coode.owlapi.manchesterowlsyntax 6.0.0
MINOR org.semanticweb.owlapi.io 5.2.0
MAJOR org.semanticweb.owlapi.krss2.renderer 6.0.0
MAJOR org.semanticweb.owlapi.manchestersyntax.parser 6.0.0
MINOR org.semanticweb.owlapi.model 5.1.0
MINOR org.semanticweb.owlapi.model.axiomproviders 5.1.0
MINOR org.semanticweb.owlapi.model.parameters 6.1.0
MINOR org.semanticweb.owlapi.model.providers 5.1.0
MAJOR org.semanticweb.owlapi.rdf 6.0.0
MINOR org.semanticweb.owlapi.rdf.rdfxml.renderer 5.2.0
MINOR org.semanticweb.owlapi.rdf.turtle.renderer 5.1.0
MINOR org.semanticweb.owlapi.reasoner 5.1.0
MINOR org.semanticweb.owlapi.rio 5.1.0
MINOR org.semanticweb.owlapi.util 5.1.0
MAJOR org.semanticweb.owlapitools.builders 6.0.0
MAJOR uk.ac.manchester.cs.owl.owlapi 6.0.0

5.0.3

The Bundle-Version should be 8.0.0, as there is a major version change.

LEVEL Package Version
MAJOR org.coode.owlapi.manchesterowlsyntax 7.0.0
MINOR org.semanticweb.owlapi.dlsyntax.renderer 5.1.0
MAJOR org.semanticweb.owlapi.manchestersyntax.parser 7.0.0
MINOR org.semanticweb.owlapi.model 5.2.0
MINOR org.semanticweb.owlapi.rio.utils 5.1.0
MAJOR org.semanticweb.owlapi.util 6.0.0

5.0.4

The Bundle-Version should be 8.1.0, as there is a minor version change.

LEVEL Package Version
MINOR org.semanticweb.owlapitools.decomposition 5.1.0

5.0.5

The Bundle-Version should be 9.0.0, as there is a major version change.

LEVEL Package Version
MINOR com.clarkparsia.owlapi.explanation.io 5.1.0
MAJOR org.obolibrary.obo2owl 6.0.0
MINOR org.obolibrary.oboformat.diff 5.1.0
MAJOR org.obolibrary.oboformat.model 6.0.0
MINOR org.obolibrary.oboformat.parser 5.1.0
MINOR org.semanticweb.owlapi.change 5.1.0
MINOR org.semanticweb.owlapi.model 5.3.0
MINOR org.semanticweb.owlapi.model.parameters 6.2.0
MINOR org.semanticweb.owlapi.profiles.violations 5.1.0
MAJOR org.semanticweb.owlapi.rdf 7.0.0
MAJOR org.semanticweb.owlapi.rdf.model 6.0.0
MAJOR org.semanticweb.owlapi.rdf.rdfxml.parser 6.0.0
MAJOR org.semanticweb.owlapi.rdf.rdfxml.renderer 6.0.0
MINOR org.semanticweb.owlapi.rdf.turtle.parser 5.1.0
MAJOR org.semanticweb.owlapi.rdf.turtle.renderer 6.0.0
MAJOR org.semanticweb.owlapi.rio 6.0.0
MINOR org.semanticweb.owlapi.rio.utils 5.2.0
MAJOR org.semanticweb.owlapi.util 7.0.0
MAJOR org.semanticweb.owlapi.vocab 6.0.0
MINOR uk.ac.manchester.cs.owl.explanation.ordering 5.1.0
MAJOR uk.ac.manchester.cs.owl.owlapi 7.0.0

5.0.6-SNAPSHOT (as of even date)

The Bundle-Version should be 10.0.0, as there is a major version change.

LEVEL Package Version
MAJOR org.coode.owlapi.obo12.parser 6.0.0
MINOR org.semanticweb.owlapi.apibinding 5.1.0
MINOR org.semanticweb.owlapi.dlsyntax.parser 5.1.0
MAJOR org.semanticweb.owlapi.formats 6.0.0
MAJOR org.semanticweb.owlapi.functional.parser 6.0.0
MINOR org.semanticweb.owlapi.krss1.parser 5.1.0
MINOR org.semanticweb.owlapi.krss2.parser 5.1.0
MINOR org.semanticweb.owlapi.model 5.4.0
MINOR org.semanticweb.owlapi.rdf.turtle.parser 5.2.0
MAJOR org.semanticweb.owlapi.rio 7.0.0
MAJOR org.semanticweb.owlapi.rio.utils 6.0.0
MAJOR uk.ac.manchester.cs.owl.owlapi 8.0.0
MAJOR uk.ac.manchester.cs.owl.owlapi.concurrent 6.0.0

Packages which are still at 5.0.X

Note: The micro part of the version number has been bumped when either the bnd baseline tool detects a micro change, or the sha1 digest of the class file changes. These numbers are as of 5.0.6-SNAPSHOT.

package version
com.clarkparsia.owlapi.explanation {version=5.0.1}
com.clarkparsia.owlapi.explanation.util {version=5.0.1, imported-as=[5.0,6)}
com.clarkparsia.owlapi.modularity.locality {version=5.0.1, imported-as=[5.0,6)}
de.uulm.ecs.ai.owlapi.krssparser {version=5.0.0}
org.coode.owl.krssparser {version=5.0.0}
org.coode.owlapi.latex {version=5.0.0}
org.coode.owlapi.obo.parser {version=5.0.0}
org.coode.owlapi.turtle {version=5.0.1}
org.obolibrary.macro {version=5.0.1}
org.obolibrary.oboformat.writer {version=5.0.1, imported-as=[5.0,6)}
org.obolibrary.owl {version=5.0.1}
org.semanticweb.owlapi {version=5.0.2, imported-as=[5.0,6)}
org.semanticweb.owlapi.annotations {version=5.0.0, imported-as=[5.0,6)}
org.semanticweb.owlapi.atomicdecomposition {version=5.0.0, imported-as=[5.0,6)}
org.semanticweb.owlapi.debugging {version=5.0.1}
org.semanticweb.owlapi.expression {version=5.0.1, imported-as=[5.0,6)}
org.semanticweb.owlapi.functional.renderer {version=5.0.3, imported-as=[5.0,6)}
org.semanticweb.owlapi.latex.renderer {version=5.0.3}
org.semanticweb.owlapi.manchestersyntax.renderer {version=5.0.3, imported-as=[5.0,6)}
org.semanticweb.owlapi.metrics {version=5.0.1}
org.semanticweb.owlapi.modularity {version=5.0.0, imported-as=[5.0,6)}
org.semanticweb.owlapi.normalform {version=5.0.1}
org.semanticweb.owlapi.oboformat {version=5.0.1}
org.semanticweb.owlapi.owlxml.parser {version=5.0.4}
org.semanticweb.owlapi.owlxml.renderer {version=5.0.2}
org.semanticweb.owlapi.profiles {version=5.0.3, imported-as=[5.0,6)}
org.semanticweb.owlapi.reasoner.impl {version=5.0.3, imported-as=[5.0,6)}
org.semanticweb.owlapi.reasoner.knowledgeexploration {version=5.0.0}
org.semanticweb.owlapi.reasoner.structural {version=5.0.3}
org.semanticweb.owlapi.search {version=5.0.4, imported-as=[5.0,6)}
org.semanticweb.owlapi.test {version=5.0.2}
org.semanticweb.owlapi.util.mansyntax {version=5.0.0, imported-as=[5.0,6)}
uk.ac.manchester.cs.atomicdecomposition {version=5.0.1}
uk.ac.manchester.cs.chainsaw {version=5.0.0}
uk.ac.manchester.cs.factplusplusad {version=5.0.1}
uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer {version=5.0.1}
uk.ac.manchester.cs.owlapi.dlsyntax {version=5.0.0}
uk.ac.manchester.cs.owlapi.modularity {version=5.0.1, imported-as=[5.0,6)}

Additional packages still matching 5.X.X

package version
com.clarkparsia.owlapi.explanation.io {version=5.1.0}
org.obolibrary.oboformat.diff {version=5.1.0}
org.obolibrary.oboformat.parser {version=5.1.0, imported-as=[5.1,6)}
org.semanticweb.owlapi.apibinding {version=5.1.0}
org.semanticweb.owlapi.change {version=5.1.0, imported-as=[5.1,6)}
org.semanticweb.owlapi.dlsyntax.parser {version=5.1.0}
org.semanticweb.owlapi.dlsyntax.renderer {version=5.1.1}
org.semanticweb.owlapi.io {version=5.2.2, imported-as=[5.2,6)}
org.semanticweb.owlapi.krss1.parser {version=5.1.0, imported-as=[5.1,6)}
org.semanticweb.owlapi.krss2.parser {version=5.1.0}
org.semanticweb.owlapi.model {version=5.4.0, imported-as=[5.4,6)}
org.semanticweb.owlapi.model.axiomproviders {version=5.1.0, imported-as=[5.1,6)}
org.semanticweb.owlapi.model.providers {version=5.1.0, imported-as=[5.1,6)}
org.semanticweb.owlapi.profiles.violations {version=5.1.0, imported-as=[5.1,6)}
org.semanticweb.owlapi.rdf.turtle.parser {version=5.2.0}
org.semanticweb.owlapi.reasoner {version=5.1.1, imported-as=[5.1,6)}
org.semanticweb.owlapitools.decomposition {version=5.1.1, imported-as=[5.1,6)}
uk.ac.manchester.cs.owl.explanation.ordering {version=5.1.0}

Packages that are no longer backwards compatible with 5

package version
org.coode.owlapi.manchesterowlsyntax {version=7.0.1}
org.coode.owlapi.obo12.parser {version=6.0.0}
org.obolibrary.obo2owl {version=6.0.1, imported-as=[6.0,7)}
org.obolibrary.oboformat.model {version=6.0.1, imported-as=[6.0,7)}
org.semanticweb.owlapi.formats {version=6.0.0, imported-as=[6.0,7)}
org.semanticweb.owlapi.functional.parser {version=6.0.0, imported-as=[6.0,7)}
org.semanticweb.owlapi.krss2.renderer {version=6.0.2}
org.semanticweb.owlapi.manchestersyntax.parser {version=7.0.2, imported-as=[7.0,8)}
org.semanticweb.owlapi.model.parameters {version=6.2.1, imported-as=[6.2,7)}
org.semanticweb.owlapi.rdf {version=7.0.1, imported-as=[7.0,8)}
org.semanticweb.owlapi.rdf.model {version=6.0.1, imported-as=[6.0,7)}
org.semanticweb.owlapi.rdf.rdfxml.parser {version=6.0.1, imported-as=[6.0,7)}
org.semanticweb.owlapi.rdf.rdfxml.renderer {version=6.0.1, imported-as=[6.0,7)}
org.semanticweb.owlapi.rdf.turtle.renderer {version=6.0.1}
org.semanticweb.owlapi.rio {version=7.0.0}
org.semanticweb.owlapi.rio.utils {version=6.0.0, imported-as=[6.0,7)}
org.semanticweb.owlapi.util {version=7.0.1, imported-as=[7.0,8)}
org.semanticweb.owlapi.vocab {version=6.0.1, imported-as=[6.0,7)}
org.semanticweb.owlapitools.builders {version=6.0.2, imported-as=[6.0,7)}
uk.ac.manchester.cs.owl.owlapi {version=8.0.0, imported-as=[8.0,9)}
uk.ac.manchester.cs.owl.owlapi.concurrent {version=6.0.0, imported-as=[6.0,7)}
ignazio1977 commented 7 years ago

?

sesuncedu commented 7 years ago

THE VERSION NUMBER IS A LIE!

ignazio1977 commented 7 years ago

I'm not clear on the definition of truth.

sesuncedu commented 7 years ago

Since the actual release history has used package version numbers that are the same as the maven version number, an alternative re-numbering scheme would be:

  1. if the package version number matches 5.0.*, keep it, as it is less than or equal to an existing equivalent release.
  2. If the package version number matches 5.[1-9].*, set the package number to 5.1.0, since the minor version increases weren't done in actual releases.
  3. If the package version number is >=6.0.0 , set the package version number to 6.0.0 , since the major version increases weren't done in actual releases.
sesuncedu commented 7 years ago

The package version numbers in the initial message are the version numbers that should have been used in the current version of the api if numbers had been bumped appropriately according to the principals of semantic versioning for each release in the 5.0.* series.

See e.g. Semantic Versioning 2.0.0 - http://semver.org/

Given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version when you make backwards-compatible bug fixes.

OSGI Semantic Versioning Whitepaper

ignazio1977 commented 7 years ago

OK, so we've made less minor releases than strictly required.

I question whether strict adherence to this scheme solves the problem presented, i.e., dependency hell. I have the feeling more versions make it worse, not better.

sesuncedu commented 7 years ago

The numbering makes it much easier to have backwards compatibility (and not have 5 different versions of owlapi loaded in the same runtime). They're different from human consumable release numbers :)

Ideally, packages that are not supposed to be for general use would be made private. Also, packages and bundles could be made smaller, with a smaller API surface.

ansell commented 7 years ago

Should we look into making the next OWLAPI major release consistent with the OSGi package numbers?

ansell commented 7 years ago

Overall though I think the BND automated detection of "new functionality" is too vigourous, and even strict SemVer advocates wouldn't advocate for requiring a new minor release for every new field or method just for the sake of it if the patch could otherwise fit into a smaller and sooner to be released patch version.

Once we fully support SemVer, we could still support multiple major versions of OWLAPI on the classpath by changing package names to include the major version number.

In terms of stable API's, it may be more useful to release multiple beta versions of major version releases and work through any small niggles before actually releasing X.0.0 so we are less likely to need to release an incompatible X.0.1 release to patch a major bug that can't be patched while keeping the API backwards compatible.

sesuncedu commented 7 years ago

On Feb 23, 2017 8:50 PM, "Peter Ansell" notifications@github.com wrote:

Overall though I think the BND automated detection of "new functionality" is too vigourous, and even strict SemVer advocates wouldn't advocate for requiring a new minor release for every new field or method just for the sake of it if the patch could otherwise fit into a smaller and sooner to be released patch version.

JAPICMP seems pickier about some things. I haven't wired up the semver switch yet. BTW, I switched the gradle japicmp to base against the last release, rather than at 5.0.0. Didn't know what to do for the pom.

The key is that the versioning is done at a finer level, and only publicly exposed APIs need bumps. Clients by default import packages from the current minor release up to the next major.

At the moment, everything in owlapi is exported, so internal changes are more visible (also a problem with mixing internals and external classes in the same package, which jigsaw is going to make people notice).

The problem is that we are conditioned to seeing minor version bumps as being more significant than they are in a semver sense.