Do SemVer corretly

Discussion in 'Programming' started by Muehre, Aug 11, 2018.

  1. Hey Folks,

    I experienced lot of issues with SemVer regarding Plugin releases.
    I would like to make a small Explanation/Tutorial in the Spigot/Bungeecord Context.


    First of all lets align on the Vocabulary:
    Let's take the example v1.2.3
    In this case the Major Version would be 1, the Minor 2 and the Patch 3.

    Major Version

    This Version should indicate that a breaking Change happened. A breaking change does not mean
    that you released a breaking cool feature. It means i.e. that the Interface of the module changed. So people using your Plugin need to adjust something.
    In the plugin world this would be in most cases a change in the configuration without backwards compatibility.

    Minor Version

    You added a cool feature but the Interface stays compatible? This is the update to choose. It informs your consumers that they can update without any need of touching the implementation.
    Be gently try to add backwards compatibility or config migrations to allow your plugin users a smooth journey.

    Patch Version

    You fixed a Bug, enhanced code style or something that is not changing the expected behavior of you Plugin?
    Draft a patch release.

    Version 1.0.0

    The 1.0.0 release means that your Plugin is prodcution ready.
    You should not release the first major as long as your plugin is not stable.
    In my opinion this should also include at least unit test coverage.

    Some Scenarios

    • Fixed MySql error XY > Patch
    • Fixed Java Error XY > Patch
    • Added new config entry but current configuration stays compatible > Minor
    • Added feature without any config or interface changes > Minor
    • Removed feature xy but current configuration stays compatible > Minor
    • Changed Feature XY and renamed half of the configurations without any auto migration > Major
    • Totally change how the whole plugin works and what behavior it has include interface changes > Major

    Also make sure to checkout

    I hope some people will try to align to semver conventions to avoid making the live of the plugin consumers harder.

    Anything to add? Feel free! :)

    Greetings ;)
    #1 Muehre, Aug 11, 2018
    Last edited: Aug 11, 2018