Giter Site home page Giter Site logo

sapioit-com / explicit-versioning-1 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from exadra37-versioning/explicit-versioning

0.0 1.0 0.0 33 KB

A specification for Software Releases that care about intentional breaking changes being explicit announced in the versioning schema.

License: GNU General Public License v3.0

explicit-versioning-1's Introduction

Explicit Versioning

To know why another Software Versioning Schema exists as an alternative to SemVer please read here.

Explicit Versioning is a specification for developers that care about releasing software and explicit announce intended breaking changes, by using an extra required identifier to handle Incompatible changes that are intentional.

Specification Schema

Explicit Versioning specification will use a schema composed of 4 identifiers, that are represented like:

  • Disruptive.Incompatible.Compatible.Fix-Optional_Identifiers

Required Identifiers

Creating a Tag, by incremented any of the 4 required identifiers, represents a new Software Release.

Given 1.0.0.0 as the first version for a Production Release:

  • Disruptive
    • is incremented when deep changes will occur across the API, Web or CLI Interfaces in a way that will be Disruptive for the previous User Experience.
    • version will go from 1.0.0.0 to 2.0.0.0.
  • Incompatible
    • is incremented when a Intentional and backwards Incompatible change is introduced as part of a bug or security fix, while keeping the affected User Experience localized in a specific Feature of the API, Web or CLI Interfaces.
    • version will go from 1.0.0.0 to 1.1.0.0.
  • Compatible
    • is incremented when adding or improving functionality in a Compatible way with previous User Experience when using the API, Web or CLI Interfaces.
    • version will go from 1.0.0.0 to 1.0.1.0.
  • Fix
    • is incremented when a bug is fixed, or a security gap is solved without affecting the previous User Experience for using the API, Web or CLI Interfaces.
    • version will go from 1.0.0.0 to 1.0.0.1.

NOTE:

The usage of v preceding the schema, like v1.0.0.0 is not recommend, but is acceptable.

Optional Identifiers

Each team of Developers and Organization may have specific needs in their Software release process that they can address with the Optional Identifiers.

Recommended:

  • Alpha

    • Unstable Release to gather earlier user feedback in the Development process.
    • Tags will look 1.0.0.0-Alpha1, 1.0.0.0-Alpha2...
  • Beta

    • Experimental Release to test viability and get user feedback.
    • Tags will look 1.0.0.0-Beta1, 1.0.0.0-Beta2...
  • RC - Release Candidate

    • A stable release to get user feedback and hunt last minute bugs.
    • Tags will look like 1.0.0.0-RC1, 1.0.0.0-RC2...
  • LTS - Long Term Support

    • A release that guarantees the software will be supported until a certain date, using the format LTS_YYYY-MM.
    • Tag 1.0.0.0-LTS_2019-05
    • Tag 1.1.0.0-LTS_2019-05
      • guarantees support until May of 2019 for any Compatible or Fix Release.
      • to be required as 1.1.*.
    • Tag 1.0.1.0-LTS_2019-05
      • guarantees support until May of 2019 for any Fix Release.
      • to be required as 1.0.1.*.
  • EOS - End of Support

    • A Release to announce the termination of support for a Software Life Cycle.
    • MUST NOT be used when already exists a LTS Release for this Software Life Cycle.
    • Given that the last tag was 1.0.8.22:
      • the End of Support tag will be 1.0.9.0-EOS_2018-05.
      • guarantees support for Security and Bug Fixes Releases until May of 2018.
      • to be required as 1.0.9.*.
      • in any tag from 1.* MUST NOT exist a LTS Release with an expiration date set before the EOS was uploaded.

MAY be used to:

  • Give a name to the Release, like 1.0.0.0-Xenial_Xerus.
  • Track the build, like 1.0.1.0-Build_12345.
  • For other wisely chosen situations, that should be Explicit and not Implicit.

MUST NOT be used to:

  • Announce a Major release.
  • Breaking change release.
  • New Feature release.
  • Security release.
  • Patch release.
  • To identify a Developer. Use branches instead.
  • Any other situation that clashes with the Required Identifiers implementation.

NOTE:

When creating a tag a message can be added, therefore don't use an Optional Identifier for something that is more appropriated to be told in the message.

Conclusion

Basically Explicit Versioning main differential factors to SemVer versioning schema are:

  • Isolates any Incompatible Release, that is Intentional, from any other type of Release.
  • Only increment the most left number when a Disruptive situation happens in the Software, not to be increment per the minimal backward Incompatible change.
  • Remove/reduces the ambiguity from usage/interpretation of the versioning schema.

explicit-versioning-1's People

Contributors

exadra37 avatar sapioit avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.