Skip to content
Justin "J.R." Hill edited this page Dec 20, 2023 · 1 revision

Tenets

There is a small group of core contributors to the project, and they will not be experts in every language supported. Therefore, there are some guiding principles from the team that help determine the direction of strategic and technical choices for the SDKs we can produce and support.

Consistency

Contributors need consistency. It's unlikely that an end-user will use the SDK in many languages, but an OpenFGA contributor must be able to maintain and extend SDKs even for languages they are not an expert in. To help ensure a contributor to the OpenFGA can be effective, the project strives for consistency between SDK implementations in different languages.

More specifically this means the features, logic, and behavior should be as identical as possible within the semantics of a given language. Surface-level concerns like naming, errors/exceptions, APIs, structure, and organization of the SDKs should be very similar.

Change is sometimes necessary, and an improvement must start as inconsistent implementation. That said, consistency across implementations ensures that we can take a positive improvement from one language, and drive that change across multiple languages more easily if they are consistent.

Dependency-light

OpenFGA SDKs try to avoid as many dependencies as possible. For end users this makes OpenFGA easier to incorporate and less effort to maintain. For contributors this makes OpenFGA SDKs less effort to maintain, and requires following and responding to change in less projects.

For end-users, there should be no need to request an SDK implementation any more specific than the language you use. As an example, for Java we use the standard library's built-in HttpClient. This allows OpenFGA to work with an end-user's project without requiring or restricting other HTTP dependencies.