= Versioning Policy

:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
:page-partial:

[#semantic-versioning]
== Semantic Versioning

Starting from v1.0.0, Apache Causeway has adopted link:http://semver.org[semantic versioning] for its versioning policy.

Version numbers are in the form `x.y.z`:

* x is bumped up whenever there a breaking API change
* y is bumped up whenever there is a new feature that does not break API
* z is bumped up for minor bug fixes.

This scheme would be adopted for both core and components.

== Version ranges

Version ranges may not be used.
If necessary, end-users can use `<dependencyManagement>` elements to have combine components built against different versions of core.

That said, this can introduce instability and so generally we recommend that end-users configure the `maven-enforcer-plugin` and its link:http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html[DependencyConvergence] rule.
This will help avoid "jar hell" (components having conflicting dependencies of core).

If there is a conflict, we would ask that end-users engage with Apache Causeway committers to have an updated version of the component(s) pushed out.
