iVendNextDevelopers Request a sandbox

18. Versioning — how long a version keeps working

This chapter says what counts as a breaking change, how a version is announced, and how long an old version is served. It is for a builder deciding whether to build on an extension point today, and for a licensed customer's IT team deciding when to move to a new one.

Reference implementation: the kit's changelog, where a change to a preview is announced · the version line at the top of each extension point's library page · manifest_version in a manifest.

When to use it

Before you build on an extension point, on an API call the kit describes or on the manifest format; and each time we announce a change.

The policy

We give no date for release 1.0. Chapter 9's table What is live where says which build carries which extension point.

What counts as breaking

A change is breaking when something that worked against a version stops working, or answers differently, without you changing anything. For each of the three:

Breaking Not breaking
An extension point's contract removing or renaming a field you are sent, or an answer you may give; changing what a field means or its units (money is a whole number of the currency's smallest units, quantities are in thousandths); making an answer you may give stricter (a shorter limit, a shorter time to answer, a refusal of something that was accepted); changing what the till does with an answer, or when your service is down or the till is offline; changing how a call is signed what the library says is added within a version: a new label on the event feed, a new kind of save rule, a new screen or field in a field rule's list. An existing one never changes what it does
An API call the kit describes a call that stops answering as described: a path, a field, a status or a meaning changes a description that gains a call
The manifest format a manifest that installed before, and now does not, or installs something different a new kind of record a manifest may carry

A change that would break a version-1 service is a new version, published beside the old one; the library says so for the remote till key and for the capture. While a contract is a preview, we may instead change it in place and announce it in the changelog.

An example from the preview: manifest version 2 reads every version-1 manifest, but only once each of its permission rows writes all nine rights (chapter 7).

How a version is announced

Steps

  1. Read the version line of each page you build on, and write the version into your service's tests and logs.
  2. Read the header on each call and answer the version you were built for. A call that names a version you do not know is not one to answer in the old way.
  3. While it is a preview, read the kit's changelog before each build and before each release of your own.
  4. From release 1.0, when a successor ships, the version you built on is served for another 12 months: move to the successor inside that time.

What is refused, and why

When your service is down, and when the till is offline

A version does not change these answers: what the till does when your service is down, and when it is offline, is part of each extension point's contract (chapter 9), so a change to it is a breaking change.

Technical notes

What the kit has proven

What it has not

Sources

See also

1. Welcome · 3. The ladder and the four rules · 7. Manifests · 9. The extension points · 14a. Deploying to a chain

This page in the kit