Skip to content

Establish and Enforce Consistent Language Support Policy #626

@rhamzeh

Description

@rhamzeh

Checklist

Describe the problem you'd like to have solved

As a consumer of the OpenFGA SDKs, I'd like to understand whether the language/framework version I am using is supported.

Describe the ideal solution

All languages should have a Supported Languages and Frameworks step after the Installation step. That would have a quick summary and would link to SUPPORTED_FRAMEWORKS.md that would contain more details.

This includes defining the policy for dropping support for EOL versions without necessarily forcing a major SDK version bump.

We should follow the official vendor/community support policies for each language, with specific exceptions for Node.js and .NET around best effort support. For each SDK, we will formally support the following versions:

Language Policy Source Supported Versions Best Effort for Unsupported?
Go Go Release Policy The two most recent major releases of Go. No
Node.js Node.js Previous Releases All versions currently in LTS (Long-Term Support) or Maintenance mode. Yes (see note below)
Java Oracle JDK Java SE Premier Support The latest two actively supported LTS versions (e.g., JDK 17 and 21) or any other version currently receiving free security updates. No
Python Python Developer's Guide Versions currently in their Security Fix or Bug Fix phase. No
.NET .NET Support Policy Versions currently in LTS or Current status, PLUS .NET Standard 2.0. Yes (see note below)

Language Specific Notes:

  • Node.js: We will make a best effort to maintain compatibility with Node.js versions that have reached their End-of-Life (EOL), but we will not test against them in our CI/CD pipelines.
  • .NET: While we explicitly support .NET Standard 2.0, when this SDK is used within an unmaintained EOL framework (e.g., .NET Core 3.1 or .NET Framework 4.6.1), we will provide best effort support only. We will primarily test against supported .NET runtimes.

Implementation Steps

In the Generator:

  1. Create a standardized SUPPORTED_FRAMEWORKS.mustache template that would generate a SUPPORTED_FRAMEWORKS.md (similar to the OpenFGA .NET SDK example) that includes the currently supported versions based on the policy above - each SDK will have a version of that file.
  2. Add this new file to the base config
  3. Add a header - [Supported Languages and Frameworks](#supported-languages-and-frameworks) to the table of content in [README.mustache]https://github.com/openfga/sdk-generator/blob/main/config/common/files/README.mustache#L17-L18
  4. Append the header (## Supported Languages and Frameworks) and summary to the README_installation.mustache of each repo. See https://github.com/openfga/dotnet-sdk/blob/main/README.md for reference

In the SDK:
5. Configure the CI/CD pipeline for each SDK to only test against currently supported versions. If needed add unsupported frameworks that you also want to test against if needed, but document that support for them is not guaranteed.

Alternatives and current workarounds

No response

References

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    Projects

    Status

    Intake

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions