Diese Seite ist auch auf Deutsch verfügbar. Zur deutschen Seite wechseln

Shopware 6 versioning strategy

Copy-1-of-SW6-1-Bannerset_NEW-with-Text-860x325-px-1

Zum Deutschen Artikel

With the release of Shopware 6.3, we are also switching to more strict adherence to Semantic Versioning. And with good reason, this switch will help us be more in line with the standards of the PHP community and will make it more clear to you as a developer whether a release introduces any breaking changes, or if it is safe to apply.

Let's dive into the details of this change.

A short refresher on why it makes sense at all to assign version numbers to software and how the versioning strategy of Shopware looked like so far can be read here in the fold-out menu

 

Preface: The reason behind versioning software
The Shopware versions so far

The new Shopware versioning system

Shopware implemented SemVer as  "SemVer with benefits".

SemVer (semantic versioning) is a specification that defines a version number and, more importantly, the importance of an incrementation of a version number. 

Blog_860x325

A SemVer compliant version has three numbers: Major, Minor, and Patch. They are incremented following this ruleset:

  • MAJOR: Incompatible API changes are made
  • MINOR: Functionality is added in a backward-compatible manner
  • PATCH: Backward-compatible bug fixes are made

The "with benefits" part is: We keep the big marketing number. So Shopware 6 still is the product, but there's a Shopware 6.3.0.0. With 3.0.0 being the SemVer part.

The public API

These indicators of versioning apply to something called the "public API". This public API is the Shopware code a theme or extension is communicating with. That can be the REST API, but there is also an internal API or the public methods that cover the core functionality, used by plugins.

This is important since a change that introduces breaking changes to code that is not considered public API would only increment the PATCH number. Luckily, since using the non-public API is regarded as bad practice, this should not impact well-written themes and plugins. But still, there is no safety net when it comes to software updates - always use a staging system.

Shopware release cycle

With the new versioning system, the release cycle of Shopware changes as well. The new Shopware versions will release once a month. This can include new features, but it can also be a simple patch-release. While the new and exciting features are still announced and marketed, you now get them potentially earlier or, in some cases, later, but in a more mature state.

All that does not mean merchants should upgrade their shops once a month. It means features and patches are more frequently released, including all the support and testing they deserve.

Merchants and SemVer

Apart from any versioning schema, it is always essential to test updates in a staging system before applying them to the live shop.

That said, as a merchant, you get more reliable information from now on.

When the last two numbers change, you can install the new version without the fear of breaking anything. A change from 6.3.0.0 to 6.3.0.1 would only contain bug fixes, a change from 6.3.0.0 to 6.3.1.0 would include feature additions, but without breaking anything.

Plugin developer and SemVer

What do I have to consider as a plugin developer? 

With the new adjustments, we will no longer publish a "Release Candidate" in the future. Plugin developers will be able to view the current development status at any time via the master branch on GitHub and check the compatibility of their plugins.  

Plugin compatibility can still be controlled via Composer. We recommend one of the following scenarios: 

 ~6.3.0: With this configuration, the plugin would be marked as compatible for all minor versions within the 6.3 major cycle. This includes all minor and patch versions in the 6.3.x.x grid.  

 ~6.3.1.0: Even if all minor versions are backward compatible, there might be changes in logic from time to time. If you want to make sure that a plugin is compatible with a certain minor version, you can mark your plugin for certain minor versions by specifying four digits. The plugin is then compatible with all 6.3.1.x patch versions within the minor version. 

Detailed information about the version configuration can also be found in the official documentation of Composer. 

The 6.3.0.0 update is planned for the beginning of August, with which these new adjustments will come into effect. 

If you have any questions regarding the new Shopware versioning schema, please head over to our community workspace in Slack and tell us!