Skip to content

Commit b263d09

Browse files
committed
Add versioning and support policy information
This PR adds information about the support status of various Apache Log4j releases. Related to #1867
1 parent f72c843 commit b263d09

File tree

2 files changed

+157
-0
lines changed

2 files changed

+157
-0
lines changed

src/site/antora/modules/ROOT/nav.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
* xref:download.adoc[Download]
1919
** xref:release-notes.adoc[]
2020
* link:{logging-services-url}/support.html[Support]
21+
** xref:versioning.adoc[]
2122
** link:{logging-services-url}/security.html[Security]
2223
2324
.xref:manual/index.adoc[]
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
////
2+
Licensed to the Apache Software Foundation (ASF) under one or more
3+
contributor license agreements. See the NOTICE file distributed with
4+
this work for additional information regarding copyright ownership.
5+
The ASF licenses this file to You under the Apache License, Version 2.0
6+
(the "License"); you may not use this file except in compliance with
7+
the License. You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
////
17+
18+
= Versioning and support policy
19+
20+
== Versioning
21+
22+
Apache Log4j releases follow the
23+
https://semver.org/spec/v2.0.0.html[Semantic Versioning specification], which means that the release numbering is of the form:
24+
25+
[source]
26+
----
27+
<major>.<minor>.<patch>[-<pre-release>]
28+
----
29+
30+
where:
31+
32+
<major>::
33+
+
34+
Is the major version number.
35+
This number is incremented when **breaking changes** are introduced to the software.
36+
+
37+
Upgrading to a new major release might require code changes.
38+
See
39+
xref:migrate-from-log4j1.adoc[]
40+
to migrate from Log4j 1 to Log4j 2.
41+
42+
<minor>::
43+
+
44+
Is the minor version number.
45+
This number is incremented each time:
46+
+
47+
--
48+
* A new Java method/class appears in the public API of one of the
49+
xref:components.adoc[Log4j artifacts].
50+
* A new configuration attribute is added to one of the
51+
xref:manual/plugins.adoc[Log4j Plugins (appenders, layouts, filters, etc.)].
52+
* A functionality or Java method/class are deprecated.
53+
* A behavioral change is introduced.
54+
--
55+
+
56+
When upgrading to a new minor version, check the
57+
xref:release-notes.adoc[]
58+
of the new minor version: behavioral changes are highlighted in the release description and contained in the "Changed" section.
59+
60+
<patch>::
61+
+
62+
Is the patch release number.
63+
This number is incremented if the release only contains bug fixes.
64+
+
65+
Upgrading to a new patch release constitutes the easiest upgrade path.
66+
+
67+
[NOTE]
68+
====
69+
The classification of behavioral changes as minor or patch release is up to interpretation: what constitutes a bug for one user might be a feature for somebody else.
70+
====
71+
72+
=== OSGi package versioning
73+
74+
Since release `2.21.0` Log4j follows the OSGi practice of versioning each Java package separately (see
75+
https://bnd.bndtools.org/chapters/170-versioning.html#versioning-packages[Versioning Packages] for more information).
76+
The version of each package is available in the manifests of each artifact and in the Javadoc of each package: e.g. the version of the `o.a.l.l.core.appender` package is available in the
77+
link:javadoc/log4j-core/org/apache/logging/log4j/core/appender/package-summary.html[package summary Javadoc page].
78+
79+
Package versions are in the form `X.Y.Z`, where the `X.Y` part corresponds to the Apache Log4j version that contained the last modifications in the public API of the package.
80+
For example, if a package has version `2.34.5` **all** the functionality of the package has been available since Log4j `2.34.0`.
81+
82+
== Version compatibility
83+
84+
Due to the separation between
85+
xref:manual/api.adoc[Log4j API]
86+
and
87+
xref:manual/implementation.adoc[implementation]
88+
the versions of the `log4j-api` and `log4j-core` artifacts at **runtime** must be aligned:
89+
90+
* Log4j Core version X depends on Log4j API version X, so you need to have **at least** version X of Log4j API at runtime.
91+
* Conversely, to be able to use all the methods provided by Log4j API X, you need to have a version of Log4j Core that implements those methods, i.e., Log4j Core X or later.
92+
93+
The easiest way to ensure version alignement in your project is to use the
94+
xref:components.adoc#log4j-bom[`log4j-bom` artifact]
95+
in your build tool.
96+
The usage of `log4j-bom` guarantees that the correct versions will be chosen, regardless of the conflict resolution algorithm used by your tool.
97+
98+
== Support policy
99+
100+
Apache Log4j currently supports two versions: Apache Log4j 2.x and the incubating Apache Log4j Core 3.x as in the table below:
101+
102+
[cols="1,1,1m,1,1"]
103+
|===
104+
| Version | Status | Latest release | General availability | End-of-life
105+
106+
| 3.x
107+
| Pre-release
108+
| 3.0.0-beta3
109+
|
110+
|
111+
112+
| 2.x
113+
| Active
114+
| {log4j-core-version}
115+
| July 12, 2014
116+
|
117+
118+
| 2.12.x
119+
| **EOS**
120+
| 2.12.4
121+
| June 23, 2019
122+
| December 28, 2021
123+
124+
| 2.3.x
125+
| **EOS**
126+
| 2.3.2
127+
| May 9, 2015
128+
| December 29, 2021
129+
130+
| 1.x
131+
| **EOL**
132+
| 1.2.17
133+
| January 8, 2000
134+
| August 5, 2015
135+
136+
|===
137+
138+
The levels of support for each release train are:
139+
140+
Pre-release::
141+
+
142+
The version is under active development, but it is not recommended to use it in production.
143+
144+
Active::
145+
+
146+
The version is under active development.
147+
148+
EOS::
149+
+
150+
The version will not receive any updates, including security updates.
151+
New security advisories against this version might be published in the future.
152+
153+
EOL::
154+
+
155+
The version will not receive any updates, including security updates.
156+
No new security advisories will be published for it.

0 commit comments

Comments
 (0)