Sunflower
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 20
- 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.0.0 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
- Groovy (version determined by the version of Grails, below)
- OpenAPI (OAS) 3
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
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-base 8.1 or greater
- folio-vertx-lib 3.2 or greater
- raml-module-builder 35
- deprecated. Only existing FOLIO modules may continue to use raml-module-builder
- edge-common 4.5.2 or greater
- edge-common-spring 2.3.2 or greater
- https://github.com/folio-org/folio-s3-client 2.1.1 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
- 3.4 or later recommended (OSS support until 2025-11)
- Spring Framework
- 6.2 or later recommended (OSS support until 2026-08-31)
- Grails
- Eclipse Vert.x 4
- Lombok
- 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
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 2 and Elasticsearch 8
- OpenSearch maintenance policy
- Elasticsearch support policy, EOL dates, release history
- MSK/Kafka - 3.5.1
- S3/MInIO - Current version of MinIO compatible with S3
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 Sunflower support period that ends around Q1 2026: Sunflower will be released in Q2 2025 and will be supported until Umbrellaleaf (R1 2026) gets released around Q1 2026 (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 |
* Current best guess
All checked and ok.