Skip to content

Commit

Permalink
plan breaking 4.x changes
Browse files Browse the repository at this point in the history
  • Loading branch information
telyn committed Jan 31, 2019
1 parent c77a060 commit 2dcc668
Showing 1 changed file with 31 additions and 7 deletions.
38 changes: 31 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,41 @@ If you have problems to report, or contributions to make, feel free to [use the
Compatibility Guarantee
=======================

In go, semantic versioning is pretty hard. We guarantee that the following types of changes will not occur between minor versions within the lib package and all packages under its path (e.g. lib/brain)

* Publicly-exported functions and methods will not be removed, renamed, nor will their prototypes change.
* Publicly-exported struct-type fields will not be removed, renamed, nor will their types change.
* Publicly-exported variables and constants will not be removed, renamed, nor will their types change.

It's suggested that you avoid using struct embedding or interface composition with multiple types if any of those types are from bytemark-client/lib or any packages inside - bytemark-client's types are wont to have extra fields and methods added.
The following guarantee applies to versions of bytemark-client before 4.0. The
major version 4 is reserved for an upcoming series of breaking changes. Versions
5 and onwards are expected to be compatible as normal. See the "Breaking API
change" section below.

In go, semantic versioning is pretty hard. We (attempt to) guarantee that the
following types of changes will not occur between minor versions within the lib
package and all packages under its path (e.g. lib/brain)

* Publicly-exported functions and methods will not be removed, renamed, nor will
their prototypes change.
* Publicly-exported struct-type fields will not be removed, renamed, nor will
their types change.
* Publicly-exported variables and constants will not be removed, renamed, nor
will their types change.

It's suggested that you avoid using struct embedding or interface composition
with multiple types if any of those types are from bytemark-client/lib or any
packages inside - bytemark-client's types are wont to have extra fields and
methods added.

Breaking API change
===================

The following changes are planned to occur during the 4.x version series and to
be finalized in version 5.0:

* All request-making functions removed from `lib.Client` and replaced with
requests in the relevant package under `lib/requests`.
* All requests in `lib/requests` rewritten in terms of new `Pather` types.
* `lib.VirtualMachineName` and `lib.GroupName` rewritten in terms of new
`Pather` types.
* `lib.VirtualMachineName` and `lib.GroupName` will be moved into the
`lib/pathers` package.

The following breaking API change to the `lib` package occurred in version 3.0

* These functions have been removed from `lib`
Expand Down

0 comments on commit 2dcc668

Please sign in to comment.