Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[rdf4j-dev] Backwards compatibility

Hi,

Backwards compatibility is very important to the RDF4J project.

Currently we are very strict. Any change of method signature or return type is considered non backwards compatible. Any removal of a class, method or field is also not backwards compatible. Of course limited to public things.

We also don't allow for methods to be added to public interfaces.

This last point is something I would like to discuss a bit. 

What I have done currently is to add default methods to interfaces and then override them in our own code. This means that anyone who uses those interfaces will get default implementations, usually no-ops, and don't notice anything. Then when we release a major version we would remove these default implementations.

I'm not sure if I really like this, but I am thinking that we should look into how to formalise this so that we remember to remove the default implementations when it comes to for a major release.

Another option would be to say that we do not extend semantic versioning to imply that public interfaces can not grow. We would then be able to add methods to interfaces in minor versions.

Håvard

Back to the top