blob: 368ac2ceaf1508996d0c0e41cc41d0d26266d99e [file] [log] [blame] [view] [edit]
# Versions and releases
MDC's version numbers strictly follow [semantic versioning](http://semver.org/):
`MAJOR.minor.patch`. In short, if the current version is `1.1.1`, then:
* A major release has a version number of `2.0.0`.
* A minor release has a version number of `1.2.0`.
* A patch release has a version number of `1.1.2`.
> These are *engineering* version numbers, intended for communicating to our engineering clients
> what type of follow-up work a upgrading to a release might entail. Since every breaking change
> bumps the major version number, we'll quickly run up to "large" major versions. That's ok.
Major releases can contain breaking changes to clients, while minor and patch releases cannot.
## What are breaking changes?
- API deletions or modifications.
- Visible changes to user interface components.
## What are non-breaking changes?
- API additions.
- Behavioral changes.
## How can a release be a patch release?
Either:
- There are *no changes to component sources* (changes to documentation—README.md or
header docs—do not count), or
- Component changes *only include bug fixes with no apparent behavioral changes*.
## What is the source of truth for MDC's version number?
The [VERSION](https://github.com/material-components/material-components-ios/blob/develop/VERSION)
file contains the current version as a simple string (and nothing else). Our `scripts/release/bump`
script updates that number and copies it into all the locations that it needs to end up, e.g.
CocoaPods podspecs, etc. You can use the `scripts/print_version` script to print out the version
number of the library.