Umbrellaleaf
Document Status | DRAFT |
|---|---|
Last TC Review Date | Jan 12, 2026 |
Last TC Review Outcome | Moved back to draft due to Trillium delay. Changes: Go 1.27/1.28, Java 25, Spring Boot 4.1/4.2, Spring Framework 7.0/7.1, Minio client latest, AWS SDK latest, Quarkus September 2026 LTS release/March 2027 LTS release, Docker Hardened Images, Grails, JUnit 6 It’s proposed to remove the list in “First Party Libraries / Frameworks” |
Frontend
Languages
Policy: One of Specified Versions
Reasoning: Adopting new versions of these technologies may have substantial impact on shared community tooling or hosting providers
Chosen Technologies:
JavaScript
TypeScript
Build Tools
Policy: One of Specified versions
Reasoning: Adopting new versions of these technologies may have substantial impact on shared community tooling or hosting providers
Chosen Technologies:
Node ^24
Yarn 1
First Party Libraries / Frameworks
Policy: One of Specified versions
Reasoning: The FOLIO community has previously adopted the policy that first party technologies must be synchronized across all modules within the system for easier support
Notes: These versions are often only decided upon in the latter states of the flower release process and may be subject to change even after this document is accepted
Chosen Technologies:
Likely Stripes ^11.0; possibly only Stripes ^10.2
Shared Third Party Libraries / Frameworks
Policy: One of Specified versions
Reasoning: These technologies are fundamental to the operation of FOLIO. Modules supporting incompatible versions would lead to an non-operational system
Chosen Technologies:
Likely React ^19.2, possibly only React ^18.2
During Build Automated Testing
Policy: Unspecified versions
Reasoning: These technologies are only used for automated testing within the module. It is reasonable for the versions to vary between modules as the choice does not affect other modules or centralised community tooling
Chosen Technologies:
Jest
should be 29 or greater
RTL
should be 14 greater
Post Build Integration Testing
Policy: TBD
Reasoning: TBD
Chosen Technologies:
Cypress 12.0 or greater
* Pending verification
Backend
Languages
Policy: One of Specified Versions
Reasoning: Adopting new versions of these technologies may have substantial impact on shared community tooling or hosting providers
Chosen Technologies:
Java 25 / JDK 25; Grails modules use at least Java 17
Java 25 is the latest LTS version, it has been released September 2025.
Spring Framework 7.0 is “recommending JDK 25 as the latest LTS release.” Spring Boot >= 4.1 requires Spring Framework 7.0.
Keycloak supports only the latest Java LTS version, older Java LTS versions are deprecated.
Other software libraries used by FOLIO will also drop 21 support soon.
FOLIO Java modules are based on Eclipse Temurin OpenJDK (base Dockerfile). Eclipse Temurin OpenJDK supports Java 21 until at least Dec 2029 and Java 25 until at least Dec 2031 (temurin support timetable, docker hardened images support timetable).
Java 25 more efficiently uses resources (cpu, memory) than Java 21 saving costs for implementers and devops.
New language features improve developer satisfaction and code quality/correctness.
Groovy (version determined by the version of Grails, below)
OpenAPI (OAS) 3
OpenAPI 4 doesn’t have a scheduled release date (“Don’t wait for Moonwalk!”)
Go 1.27 (until July 2027), Go 1.28
Go supports the latest two major releases, and releases a new major release in February and in August, see https://go.dev/doc/devel/release#policy
Go 1.27 support: August 2026 – August 2027
Go 1.28 support: February 2027 – February 2028
FOLIO modules must migrate to Go 1.28 before August 2027 to cover the full Umbrella support period (December 2027).
Policy: One of Specified versions
Reasoning: Adopting new versions of these technologies may have substantial impact on shared community tooling or hosting providers
Maven 3.9
provided by build system (GitHub Actions runners)
Policy: Unspecified Versions
Docker
FOLIO doesn’t use any recently added feature
Docker Hardened Images
For security reasons use hardened images where possible
This applies to docker.io/eclipse-temurin:*-jre-alpine in https://github.com/folio-org/folio-tools/blob/master/folio-java-docker/openjdk21/Dockerfile and https://github.com/folio-org/folio-module-sidecar/blob/v3.0.18/Dockerfile#L2
Gradle
The source code repository specifies the Gradle version and downloads it during build process.
Make
Go modules use GitHub Actions with the make version provided by GitHub Actions runners.
First Party Libraries / Frameworks
Policy: One of Specified versions
Reasoning: The FOLIO community has previously adopted the policy that first party technologies must be synchronised across all modules within the system for easier support
Notes:
These versions are often only decided upon in the latter states of the flower release process and may be subject to change even after this document is accepted.
A first party library/framework needs to support only one of the versions allowed in the "Third Party Libraries / Frameworks" list.
Chosen Technologies:
folio-spring-support 9.2 or greater
folio-vertx-lib 3.5 or greater
raml-module-builder 35.6 or greater
deprecated. Only existing FOLIO modules may continue to use raml-module-builder
edge-common 4.11 or greater
edge-common-spring 3.2 or greater
folio-service-tools 5.2 or greater
folio-s3-client 2.5 or greater
folio-kafka-wrapper 3.5 or greater
folio-custom-fields 2.5 or greater
folio-liquibase-util 1.12 or greater
folio-di-support 3.2 or greater
Third Party Libraries / Frameworks
Policy: Unspecified versions
Reasoning: These technologies are only used within a module. It is reasonable for the versions to vary between modules as the choice does not affect other modules or centralized community tooling
Notes: A first party library/framework may support only one of these versions.
Chosen Technologies:
Spring Boot 4.1 (until 2027-06), Spring Boot 4.2
Spring Boot support periods:
4.1 from 2026-05 until 2027-06
4.2 from 2026-11 until 2027-12
FOLIO modules must migrate from Spring Boot 4.1 to 4.2 by 2027-06 to cover the full Umbrellaleaf support period that ends 2027-12.
Migration guide: Migration to Spring Boot 4.2
Spring Framework 7.0 (until 2027-06), Spring Framework 7.1
Spring Framework support periods:
7.0 from 2025-11 until 2027-06
7.1 from 2026-11 until 2028-06
Spring Boot 4.1 requires Spring Framework 7.0, Spring Boot 4.2 requires Spring Framework 7.1
FOLIO modules must migrate from Spring Framework 7.0 to 7.1 by 2027-06 to cover the full Umbrellaleaf support period that ends 2027-12.
Grails – any Grails version with supported Spring Boot OSS version
As of 2026-02 latest released Grails 6 version is 6.2 that is based on Spring Boot 2.7 and Spring Framework 5.3 (see Grails 2.7).
Spring Boot 2.7 OSS EOL: 2023-06 (Spring Boot Support)
Spring Framework 5.3 OSS EOL: 2024-08 (Spring Framework Support)
As of 2026-02 latest released Grails 7 version is 7.0.7 that is based on Spring Boot 3.5 and Spring Framework 6.2 (see Grails 7.0.7).
Spring Boot 3.5 OSS EOL: 2026-06 (Spring Boot Support)
Spring Framework 6.2 OSS EOL: 2026-06 (Spring Framework Support)
As of 2026-02 Grails 7.1 and Grails 8.0 are not released and still use Spring Boot 3.5 (see Grails 7.1 and Grails 8.0)
Eclipse Vert.x 5
Lombok
Version compatible with Java 25 (1.18.40 or greater)
AWS SDK for Java 2: Latest release for best compatibility
MinIO Client library: Latest release for best compatibility https://github.com/minio/minio-java/tags
Quarkus: September 2026 LTS release (until August 2027), March 2027 LTS release
FOLIO modules based on Quarkus must migrate to the March 2027 LTS Quarkus release by August 2027 to cover the full Umbrellaleaf support period that ends December 2027.
New Quarkus LTS release every 6 months, each maintained for 12 months (LTS micro-releases will occur every two months).
See https://github.com/quarkusio/quarkus/wiki/Release-Planning and https://quarkus.io/blog/lts-cadence/ and https://endoflife.date/quarkus-framework
Keycloak Admin Client: Latest minor release
Only latest minor release version is supported: https://github.com/keycloak/keycloak/security/policy#supported-versions
Minor versions bumps are backwards compatible, see https://www.keycloak.org/2024/10/release-updates
During Build Automated Testing
Policy: Unspecified versions
Reasoning: These technologies are only used for automated testing within the module. It is reasonable for the versions to vary between modules as the choice does not affect other modules or centralized community tooling
Chosen Technologies:
JUnit
6 should be used, use JUnit 6 vintage for existing Junit 4 tests
rest-assured
testcontainers
Post Build Integration Testing
Policy: TBD
Reasoning: These tests are run within a single repository, thus they must all use the same technology versions. However, I don't know if that version should be centrally controlled
Chosen Technologies:
karate
cucumber-reporting
Infrastructure
Policy: All of Specified Versions
Reasoning: These technologies are fundamental to the operation of FOLIO. Modules supporting incompatible versions would lead to an non-operational system. It may be necessary for modules to support multiple versions in the same module version e.g. in order to ease transition between infrastructure technology versions during system upgrades
Chosen Technologies:
Postgresql 16
See https://www.postgresql.org/support/versioning/ – 16 is supported until November 2028
OpenSearch 3 and Elasticsearch 9
OpenSearch release schedule and maintenance policy
Elasticsearch support policy, EOL dates, release history
MSK/Kafka
Kafka 4.2 - See https://endoflife.date/apache-kafka and https://cwiki.apache.org/confluence/display/KAFKA/Future+release+plan; an open source minor version is supported for ~ 12 months; we expect 4.2 release ~ Feb 2026 (releases)
MSK 4 - See https://docs.aws.amazon.com/msk/latest/developerguide/supported-kafka-versions.html (we expect 3 to be supported by MSK until ~ April 2027)
S3/MinIO - Current version of MinIO compatible with S3
Fast moving infrastructure
Policy: System operators are highly encouraged to update to the latest versions of these components as they are released.
Reasoning: These technologies have a support period of about three months. It's a security risk to run an unsupported version in production. FOLIO builds a new folio-kong or FOLIO keycloak release as soon as a new minor version of these technologies is available.
folio-kong
Latest version
Kong Open Source Software (OSS) = Community Edition essentially only supports the most recent release. Releases (Enterprise Support Policy) typically happen every 3-4 months.
FOLIO Keycloak
Latest version
See https://github.com/keycloak/keycloak/security/policy#supported-versions: "Supported Versions: Depending on the severity of a vulnerability the issue may be fixed in the current
major.minorrelease of Keycloak, or for lower severity vulnerabilities or hardening in the followingmajor.minorrelease."See https://github.com/keycloak/keycloak/discussions/19937: "the latest version is the only actively supported version. Therefore any version that is not the latest version is technically end-of-life."
See https://www.keycloak.org/2024/10/release-updates
“... after Keycloak 26.0 is released there will be some changes to how Keycloak is being released:
Keycloak server will have 4 minor releases every year, and a major release every 2-3 years
Keycloak client libraries will be released separately. The latest client library release will support all currently supported Keycloak server releases”
Policies
Policies should use the language described in RFC-2119
Technology Version Policies
These policies define guidance for module developers on which versions of technologies are reasonable to use by a module version targeted for a given flower release
One of Specified Versions
When one or more versions are provided for a technology, the modules must use / work with / support one (or more) of the specified versions
For example, if Java 17 and 21 are supported, a module a may choose to support either 17, 21 or both
All of Specified Versions
When one or more versions are provided for a technology, the modules must use / work with / support all of the specified versions
For example, if Postgresql 14 and 16 are supported, a module must work with both 14 and 16
Unspecified Versions
When no versions are provided for a technology, the module should use the latest supported version where possible. Optional guidance specific to the technology may be provided within the document
Support period
Technology versions must support the full Umbrellaleaf support period that ends around Q4 2027: Umbrellaleaf will be released in Q4 2026 and will be supported until 2027-12, see DR-000043 - Support period. The Umbrella dates are the current best guess.
Release name | Release Date | End of Support |
|---|---|---|
Sunflower | Q2 2025 | 2026-06-30 |
Trillium | Q2 2026 | 2027-06-30 |
Umbrellaleaf | Q4 2026* | 2027-12-31* |
* Current best guess