Umbrellaleaf
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 22
- 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:
- Stripes 10.1 or greater
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:
- 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*
- * 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 21 / JDK 21
- Keycloak 25.0.0 release notes: "OpenJDK 17 support is deprecated in Keycloak, and will be removed in a following release in favor of OpenJDK 21."
- Other software libraries used by FOLIO will also drop 17 support soon.
- Java 21 more efficiently uses CPU resources (virtual threads, improved garbage collection, etc.) saving costs for implementers and devops.
- New language features improve developer satisfaction and code quality/correctness.
- Grails modules use at least Java 17
- Groovy (version determined by the version of Grails, below)
- OpenAPI (OAS) 3
- Go 1.27, see https://go.dev/doc/devel/release#policy:
- Go 1.26 support period is ~ 2026-02 until ~ 2027-02, this doesn't cover the Trillium support period that ends Q2 2027
- Go 1.27 support period is ~ 2026-08 until ~ 2027-08; FOLIO Go modules must migrate from Go 1.26 to Go 1.27 after Trillium general availability (GA, Q2 2026) as soon as Go 1.27 is available
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:
- Maven 3.8 or later
- Docker
- Gradle - we should specify a version here... maybe 8.5 or greater based on the Java 21 requirement?
- Make - we should clarify this, e.g. with a version, is it gnu make, etc.?
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 or later recommended (4.1 OSS support until 2027-06-30, 4.0 OSS support until 2026-12-31)
- This requires using release candidate and milestone releases, at least during development time. This has been discussed for sunflower and trillium with the release management stakeholder group. (TODO: Migration guide, similar to FOLIO's migration guide for Spring Boot 4.0.)
- Spring Framework
- 7.0 (required by Spring Boot 4.1) or later recommended (7.0 OSS support until 2027-06-30)
- This requires using release candidate and milestone releases, at least during development time, see Spring Boot above.
- Grails 7
- See https://grails.org/blog/2024-12-23-grails-7-m1.html (pre-release)
- NOTE: it looks like grails 7 will still be using an older version of spring boot. Something to keep an eye on.
- Eclipse Vert.x 5
- See https://vertx.io/blog/eclipse-vert-x-5-candidate-7-released/ (release candidate), Vert.x 5 is scheduled for the May 2025
- Lombok
- Version compatible with Java 21 (1.18.38 or greater)
- AWS SDK for Java
- version 2 (version 1 will reach end-of-support on December 31, 2025)
- MinIO Client library 8.5 or higher recommended https://github.com/minio/minio-java/tags
- Quarkus: The latest LTS release (3.32 LTS will get released March 2026)
- 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
- Previous release cadence:
- 2025-04 – 26.2.0
- 2025-01 – 26.1.0
- 2024-10 – 26.0.0
- 2024-06 – 25.0.0
- 2024-03 – 24.0.0
- 2023-11 – 23.0.0
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
- 5 should be used, 4 (is in maintenance mode) may be used, however JUnit 5 vintage is preferred
- 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
- 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
- MSK - See https://docs.aws.amazon.com/msk/latest/developerguide/supported-kafka-versions.html (we expect 3.8 to be supported by MSK ~Oct 2025)
- S3/MInIO - Current version of MinIO compatible with S3
- folio-kong
- Latest version
- Versioning approach for folio-kong and folio-keycloak
- Kong Open Source Software (OSS) = Community Edition essentially only supports the most recent release, which is 3.10 as of . Releases (Enterprise Support Policy) typically happen every 3-4 months.
- Rough prediction based on the 3-4 mo. release cadence:
- Dec `24 - 3.9
- Mar `25 - 3.10 (current latest)
- Jun `25 - 3.11
- Sept `25 - 3.12
- Dec `25 - 3.13
- Mar `26 - 3.14 → folio-kong 3.14.* built on Kong 3.14.*
- FOLIO Keycloak
- Latest version
- Versioning approach for folio-kong and folio-keycloak
- 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.minor
release of Keycloak, or for lower severity vulnerabilities or hardening in the followingmajor.minor
release." - 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
- Rough prediction based on the above:
- Jan `25 - 26.1
- Apr `25 - 26.2
- Aug `25 - 26.3
- Nov `25 - 26.4
- Jan `26 - 26.5 → folio-keycloak 26.5.* built on Keycloak v26.5.*
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 Q2 2027: Umbrellaleaf will be released in Q2 2026 and will be supported until Wisteria (R1 2027) gets released around Q2 2027 (based upon assumption that future releases will follow a similar cadence to previous releases), see FOLIO support policy.
Release name | Release Date* | End of Support* |
---|---|---|
Sunflower | Q2 2025 | Q2 2026 |
Trillium | Q4 2025 | Q4 2026 |
Umbrellaleaf | Q2 2026 | Q2 2027 |
Vetch | Q4 2026 | Q4 2027 |
Wisteria | Q2 2027 | Q2 2028 |
Xiquexique | Q4 2027 | Q4 2028 |
* Current best guess