11# Versioning Strategy
22
3- ` twilio-java ` uses [ Semantic Versioning] [ semver ] for all changes to the helper
4- library. It is strongly encouraged that you pin at least the major version to
5- avoid pulling in breaking changes.
3+ ` twilio-java ` uses a modified version of [ Semantic Versioning] [ semver ] for all
4+ changes to the helper library. It is strongly encouraged that you pin at least
5+ the major version and potentially the minor version to avoid pulling in breaking
6+ changes.
67
78Semantic Versions take the form of ` MAJOR ` .` MINOR ` .` PATCH `
89
910When bugs are fixed in the library in a backwards compatible way, the ` PATCH `
10- level will be incremented by one. ` PATCH ` changes should _ not_ break your code
11- and are generally safe to upgrade to.
12-
13- When new features are added to the library in a backwards compatible way, the
14- ` MINOR ` level will be incremented by one and the ` PATCH ` level will be reset to
15- zero. ` MINOR ` changes are should _ not_ break your code and are generally safe
16- to upgrade to. After a ` MINOR ` change you may wish to review the helper library
17- for new features and functionality.
18-
19- When a bug or feature requires a breaking change, the ` MAJOR ` level will be
20- incremented by one and the ` MINOR ` and ` PATCH ` levels will reset to zero. These
21- changes can break your code. Twilio understands that this can be very
22- disruptive, we will only introduce breaking changes when absolutely necessary.
23- Breaking changes will be communicated in advance with ` Release Candidates ` and a
11+ level will be incremented by one. When new features are added to the library
12+ in a backwards compatible way, the ` PATCH ` level will be incremented by one.
13+ ` PATCH ` changes should _ not_ break your code and are generally safe for upgrade.
14+
15+ When a new large feature set comes online or a small breaking change is
16+ introduced, the ` MINOR ` version will be incremented by one and the ` PATCH `
17+ version reset to zero. ` MINOR ` changes _ may_ require some amount of manual code
18+ change for upgrade. These backwards-incompatible changes will generally be limited
19+ to a small number of function signature changes.
20+
21+ The ` MAJOR ` version is used to indicate the family of technology represented by
22+ the helper library. It increased from ` 6.x.x ` to ` 7.x.x ` when Twilio moved to
23+ auto generation of helper libraries. Breaking changes that requires extensive
24+ reworking of code (like the ` 6.x.x ` to ` 7.x.x ` upgrade) will case the ` MAJOR `
25+ version to be incremented by one, the ` MINOR ` and ` PATCH ` versions will be reset
26+ to zero. Twilio understands that this can be very disruptive, we will only
27+ introduce this type of breaking change when absolutely necessary. New ` MAJOR `
28+ versions will be communicated in advance with ` Release Candidates ` and a
2429schedule.
2530
2631## Supported Versions
@@ -35,25 +40,25 @@ features.
3540Twilio frequently rolls out new features in public and private beta periods.
3641Twilio strives to ship early and often and bake customer feedback back into our
3742products. To support that mission, the ` twilio-java ` helper library has an
38- ` Edge ` version based of the ` edge ` branch. This version is identified with an
39- ` edge ` metadata tag on the version number.
43+ ` Edge ` version based of the ` alpha ` branch. This version is identified with an
44+ ` alpha ` metadata tag on the version number.
4045
4146The way the ` Edge ` artifact is created is by playing the ` Edge ` features on top
4247of our stable artifact. The ` Edge ` artifact will always have the same version
43- number as the stable artifact it was created from, but with an ` edge ` suffix.
48+ number as the stable artifact it was created from, but with an ` alpha ` suffix.
4449
45- For example, ` 5.0.1-edge1 ` is the ` 5.0.1 ` branch with ` Edge ` features included.
50+ For example, ` 7.1.0-alpha-1 ` is the ` 7.1.0 ` branch with ` Edge ` features included.
4651If there is a change to one of the ` Edge ` features we may regenerate the ` Edge `
47- artifact and release a new ` 5.0.1-edge2 ` , new ` Edge ` artifacts simply increment
48- the number after the ` edge ` suffix. All ` Edge ` features are considered
52+ artifact and release a new ` 7.1.0-alpha-2 ` , new ` Edge ` artifacts simply increment
53+ the number after the ` alpha ` suffix. All ` Edge ` features are considered
4954unstable and a backwards incompatible change in an ` Edge ` feature will not cause
50- any version change so you should take care when upgrading from one ` edge `
55+ any version change so you should take care when upgrading from one ` alpha `
5156version to another.
5257
5358Once an ` Edge ` feature has matured it will be considered ` Mainline ` and included
5459in the stable artifact, with a ` MAJOR ` or ` MINOR ` version bump.
5560
5661To use an ` Edge ` artifact in your JAVA project you will have to make sure that
57- you pin the artifact with ` edge ` stability in your ` pom.xml ` .
62+ you pin the artifact with ` alpha ` stability in your ` pom.xml ` .
5863
5964[ semver ] : http://semver.org/
0 commit comments