Skip to content

Instantly share code, notes, and snippets.

@JScott
Last active December 23, 2016 10:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JScott/66bc60e967e88cc3595f to your computer and use it in GitHub Desktop.
Save JScott/66bc60e967e88cc3595f to your computer and use it in GitHub Desktop.
TenVer v10

Ten Versioning v10

Summary

The version of your product is and always will be 10.

Introduction

As you manage a software product, you will have many choices on how to manage the versions of it. Most versioning systems have the following problems:

  • Increasing complexity over time
  • Dependent on manual human intervention
  • Non-deterministic rules

As your product evolves, you will bottleneck on human-to-human communication and waste time with "version bump" code changes just for the sake of versioning your code. Additionally, we can't get rid of versioning or lock it as it provides a valuable tool for people to understand the compatibility of your code.

As a solution to this problem, I propose Ten Versioning to solve these problems. Developers will initially benefit from saving valuable time to automation of version numbers. As the product evolves, it will be easier for people to contribute due to the removal of conversation for version increments. While popular systems like Semantic Versioning can create complex versions like "1.0.0-alpha+001, 1.0.0+20130313144700", Ten Versioning will convey the same information for the same code with a double-digit integer.

Ten Versioning Specification (TenVer)

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

  1. A normal version number MUST take the form 10.
  2. Version 10 MUST be backward compatible with versions before 10.
  3. Version 10 MUST be future compatible with versions after 10.

FAQ

How do I know when to release 10?

You already have.

How do I version pin for compatibility?

Simply pin to version 10. This will never be a problem if TenVer is adhered to.

How should I handle deprecating functionality?

Use a different code repository.

Who else uses TenVer?

Company Product
Microsoft Windows 10
Apple OSX
Google Google X team projects
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment