Extensibility (adding features, and carry-forward of customizations at next major version upgrade)

The system has to allow for extensibility whilst remaining interoperable between two major versions. Incompatibility between software versions is inevitable as systems mature and improve over their lifetime, but it is a priority to minimise disruption between upgrades. Maintaining a stable interface between two major versions would allow the wider user community the opportunity to upgrade their software at the most suitable time, rather than enforcing the need for updating as soon as a new release becomes available.