Bug or Feature - deegree/deegree3 GitHub Wiki

This section is meant to clarify when we consider an issue reported as a defect, enhancement or a feature.

Bugs

Bugs, defects or issues, are things that need to be fixed urgently (ideally, in the next release) and do impair the functionality of the software.

For users:

Please have a look on our Bug Report writing Guidelines.

For developers:

Please commit a bug fix for the current stable and the unstable version as two separate pull requests.

Enhancements

Enhancements, improvements are things which are implemented for the current stable version and improve an already implemented feature of deegree.

For developers:

Please commit an enhancement for the current stable and the unstable version as two separate pull requests.

Features

Feature requests are things that need to be added at some point in the future and will add new functionality to the software.

For users:

Please have a look on our Feature Request writing Guidelines.

For developers:

Please commit a new feature for the unstable version only! The TMC will not except new features for the current stable version! Please read the following paragraph about semantic versioning which explains why.

Semantic versioning

Each release of deegree has a version number. The version number has a pattern like 3.4.0 or in general MAJOR.MINOR.PATCH. This has some implications.

For users

  • MAJOR versions provides new features but can also drop features. Major versions can result in changes to the deegree workspace configuration files. Modifications and andjustments of configuration files may be needed!
  • MINOR versions will contain enhancements or small improvements and are considered to be backwards-compatible to the previous version of the same release line. Configuration files may include backward compatible changes such as optional attributes or elements.
  • PATCH versions contain only backwards-compatible bug fixes. Upgrading to a new release version is considered easy and safe. No changes to the deegree configuration files needed.

For developers

  • MAJOR versions allow to make incompatible API changes. Changing the signature of a public method, remove or move a public class or interface to a different package. Creating new packages and types are considered as API changes too. As well as changes to the configuration XML schema files!
  • MINOR versions allow to add functionality in a backwards-compatible manner by adding a public, protected or private method.
  • PATCH versions allow to make backwards-compatible bug fixes by changing a method implementation block only! You can add private methods only!

Read more about semantic versioning here: http://semver.org/

Stable vs unstable version

Stable version

A stable version is the current line of releases which has been tested and is virtually "bug free".

Unstable version

An unstable version has not been tested (only automatic unit and integration tests) and is still under development. A unstable version replaces the previous version when it is finally released. It also indicates the public announcement of the launch of any new version (stable). Where the term 'release' indicates a particular version of the software.

Lifecycle

The following example shows the lifecycle. Let's assume that we have already released 3.3.0 and move on towards 4.0.:

Stable Unstable Comment
3.3.0 3.4-pre1 With releasing 3.3.0 the trunk aka main branch is set to 3.4
3.3.1 3.4-pre2 bug fix release for 3.3 line
3.3.2 3.4-pre3 bug fix release for 3.3 line
3.3.3 3.4-pre4 bug fix release for 3.3 line
... ... several bug fixes for 3.3 line
3.3.6 3.4-pre6 bug fix release for 3.3 line
3.3.7 3.4-RC last bug fix release for 3.3 line, 3.4 release candidate
3.4.0 3.5-pre1 3.3 line ends, 3.4 line is now stable, starting new unstable 3.5 line
... ... several bug fixes for 3.4 line
3.4.7 3.5-RC last bug fix release for 3.4 line, 3.5 release candidate
3.5.0 4.0-pre1 3.4 line ends, 3.5 line is now stable, starting new unstable 4.0 line, which contains new features
... ... ...
4.0.0 4.1-pre1 3.5 line ends, 4.0 line is now stable, starting new unstable 4.1 line for bug fixes and enhancements

You can find the actual overview of supported versions in support and EoL matrix.