WIP - Policies and Reasoning

Document StatusDRAFT
Document Version1
Last TC Review Date


Last TC Review Outcome


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 18
  • 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 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

Chosen Technologies:

  • Stripes ^9.0.0

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
  • RTL
    • should be ^14

Post Build Integration Testing

Policy: ??

Reasoning: ??

Chosen Technologies:

  • Cypress ^9.1.1

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:

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

Chosen Technologies:

  • folio-spring-base 7.4
  • folio-vertx-lib 3.2
  • raml-module-builder 35
    • deprecated. Only existing FOLIO modules may continue to use raml-module-builder
  • edge-common 4
  • edge-common-spring 2

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 centralised community tooling

Chosen Technologies:

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:

Post Build Integration Testing

Policy: ??

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:


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 Ramsons support period that ends around April 2025: Ramsons will be released in August 2024 and will be supported until Trillium (R1 2025) gets released around April 2025 (based upon assumption that future releases will follow a similar cadence to previous releases), see FOLIO support policy.