This document outlines how versions are handled for the Netdata Agent. This policy applies to version 2.0.0 of the Netdata Agent and newer versions.
Versions for stable releases of the Netdata Agent consist of three parts, a major version, a minor version, and
a patch version, presented like <major>.<minor>.<patch>
. For example, a version of 1.42.3
has a major version
of 1, a minor version of 42, and a patch version of 3.
The patch version is incremented when a new stable release is made that only contains bug fixes that do not alter the public API in a backwards incompatible manner. Special exceptions may be made for critical security bugs, but such exceptions will be prominently noted in the release notes for the versions for which they are made.
The minor version is incremented when a new stable release is made that contains new features and functionality that do not alter the strictly defined parts of public API in a backwards incompatible manner. A new minor version may have changes to the loosely defined parts of the public API that are not backwards compatible, but unless they are critical security fixes they will be announced ahead of time in the release notes for the previous minor version. Once a new minor version is published, no new patch releases will be published for previous minor versions unless they fix serious bugs.
The major version is incremented when a new stable release is made that alters the strictly defined public API in some backwards incompatible manner. Any backwards incompatible changes that will be included in a new major version will be announced ahead of time in the release notes for the previous minor version. Once a given major version is published, no new minor releases will be published for any prior major version, though new patch releases may be published for the latest minor release of any prior major version to fix serious bugs.
In most cases, just prior to a new major version being published, a final stable minor release will be published for the previous major version, including all non-breaking changes that will be in the new major version. This is intended to ensure that users who choose to remain on the previous major version for an extended period of time will be as up-to-date as possible.
Versions for nightly builds of the Netdata Agent consist of four parts, a major version, a minor version, a revision
number, and an optional commit ID, presented like <major>.<minor>.0-<revision>-<commit>
. For example, a version
of 1.43.0-11-gb15437502
has a major version of 1, a minor version of 43, a revision of 11, and a commit ID of
gb15437502
. A commit ID consists of a lowercase letter g
, followed by the short commit hash for the corresponding
commit. If the commit ID is not included, it may be replaced by the word ‘nightly’.
The major and minor version numbers for a nightly build correspond exactly to an associated stable release. A given major version of a nightly build has the same compatibility guarantees as it would for a stable release. A given minor version of a nightly build will generally include any backwards-incompatible changes to the loosely defined public API that will be in the next minor version of the associated stable release.
The revision number indicates the number of commits on the main branch of the Netdata Agent git repository since the associated stable release, and the commit ID, if included, should indicate the exact commit hash used for the nightly build.
Due to how our release process works, nightly version numbers do not track stable patch releases. For example, if the
latest stable release is 1.42.4
, the latest nightly version will still show something like 1.42.0-209-nightly
. The
first nightly build version published after an associated stable release will include all relevant fixes that were
in that stable release. In addition, in most cases, the last nightly build version published before an associated
stable patch release will include all relevant fixes that are in that patch release.
Nightly builds are only published on days when changes have actually been committed to the main branch of the Netdata Agent git repository.
The remainder of the document outlines the public API of the Netdata Agent.
We define two categories of components within the public API:
There are also a few things we handle specially, which will be noted later in the document.
The following aspects of the public API are strictly defined, and are guaranteed not to change in a backwards incompatible manner without an associated major version increase, and such changes will be announced in the release notes at least one minor release prior to being merged:
/api
endpoint. This
does not extend to the charts, labels, or other system-specific data returned by some API endpoints.python.d.plugin
and charts.d.plugin
data collection frameworks.The following aspects of the public API are loosely defined. They are guaranteed to not change in a backwards incompatible manner without an associated minor version increase, and such changes will be announced in the release notes at least one minor release prior to being merged:
/etc/netdata
on a typical install,
as well as their default values.All loosely defined API components may also change in a backwards incompatible manner if the major version is increased. Large scale changes to these components may also warrant a major version increase even if there are no backwards incompatible changes to strictly defined public API components.
The following special exceptions to the public API exist:
kickstart.sh
install script and the netdata-updater.sh
script
are handled separately from regular Netdata Agent versioning. Backwards compatible changes may happen at any
time for these, while backwards incompatible changes will have a deprecation period during which the old behavior
will be preserved but will issue a warning about the impending change.Any components which are not explicitly listed above as being part of the public API are not part of the public API. This includes, but is not limited to:
kickstart.sh
installation
script.