Currently, we have the following folder structure in the
`logging-log4j-site` repository for the Log4j project:
- `log4j-1.2.17` – the website generated by the last Log4j 1 release,
i.e, `1.2.17`
- `log4j-1.2` – symlinks to `log4j-1.2.17`
- `1.x` – symlinks to `log4j-1.2.17`
- ...
- `log4j-2.19.0` – the website generated by the `2.19.0` release
- `log4j-2.20.0` – the website generated by the `2.20.0` release
- `log4j-2.21.0` – the website generated by the `2.21.0` release
- `2.x` – symlinks to `log4j-2.21.0` (the latest Log4j 2 release)
I propose keeping existing folders as is (hence, *no changes to the
existing URLs!*) and applying following practices:
1. *Add a `latest` symlink* pointing to the latest stable version. Today
it will point to `2.x`, sometime in the future it will point to `3.x`.
- This will make following URLs possible:
https://logging.apache.org/log4j/latest
- This convention is practiced by several other projects, e.g.,
Spring Boot: https://docs.spring.io/spring-boot/docs/current
2. *Redirect root to `latest`*, i.e., `logging.apache.org/log4j` will
redirect to `logging.apache.org/log4j/latest`
3. *Don't create a new folder for every release, but override the `2.x`
folder.*
- This is okay, since we keep backward compatibility in minor+patch
releases and explicitly provide version for features that are added later
on (e.g., "starting from 2.17.0 Log4j provides X...")
- We can set up CI jobs to periodically populate `1.x`, `2.x`, `3.x`,
`4.x`, etc. websites and avoid the need to generate the website once and
for all.
- We will stop polluting the folder structure.
As a matter of fact, I already implemented this convention for some
projects. All the following URLs work:
- `logging-parent`
- logging.apache.org/logging-parent
- logging.apache.org/logging-parent/latest
- logging.apache.org/logging-parent/10.x
- `logging-log4j-kotlin`
- logging.apache.org/log4j/kotlin
- logging.apache.org/log4j/kotlin/latest
- logging.apache.org/log4j/kotlin/1.x
- `logging-log4j-scala`
- logging.apache.org/log4j/scala
- logging.apache.org/log4j/scala/latest
- logging.apache.org/log4j/scala/13.x
- `logging-log4j-tools`
- logging.apache.org/log4j/tools
- logging.apache.org/log4j/tools/latest
- logging.apache.org/log4j/tools/0.x
- `logging-log4j-transform`
- logging.apache.org/log4j/transform
- logging.apache.org/log4j/transform/latest
- logging.apache.org/log4j/transform/0.x
Unless there are objections, I will update the CI in this direction and we
all will enjoy automatically populated Log4j websites.