Tools For Better Developers

Meta: Initial Releases

2021 September Meta

2 years ago ∙ 1 minute read

This article describes our package release process before v1.0.0. In short, every change is released as soon as it's ready, and all dependent packages are updated at the same time.

Contents:

Version Tags And Branches

Use semantic versioning.

Mark every new version with vX.Y.Z Git tag. Initial version is v0.1.0. Major updates increment Y (v0.2.0, v0.3.0, ...), while minor updates and fixes increment Z (v0.1.1, v0.1.2, ...).

Develop v0.Y.Z versions on a v0.Y long-living Git branch. Initial branch is v0.1.

Composer Version Constraints

In composer.json, use ^0.Y version constraint for the osmphp/* dependencies:

{
    ...
    "require": {
        ...
        "osmphp/framework": "^0.10"
    },
    ...
} 

This way, minor non-breaking changes and bug fixes, tagged with v0.10.Z, will be installed automatically. In order to get major breaking changes, tagged with v0.11.0, switch to ^0.11 version constraint, and fix compatibility issues.

Release Often

Once a new package feature is ready, even if it's a major one and breaks something, ship it.

Keep dependent projects and packages up-to-date. Switch to the latest ^0.Y version constraint, and fix compatibility issues.

Support

Fix issues in the latest v0.Y branch. Prior versions are not supported.