Git Product home page Git Product logo

flagd-schemas's People

Contributors

alexsjones avatar bacherfl avatar beeme1mr avatar benjiro avatar fabriziodemaria avatar github-actions[bot] avatar james-milligan avatar josecolella avatar kavindu-dodan avatar renovate[bot] avatar skyerus avatar tcarrio avatar toddbaert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

flagd-schemas's Issues

[DOC] Update buf.md with new protos

With the new release of better named protos here, we should update the buf.md file.

  • reference new names/locations
  • mention migration from old
    • flagd will support both for some time
    • generate sources based on new protos

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/pr-checks.yml
  • bufbuild/buf-setup-action v1
  • actions/checkout v3
  • bufbuild/buf-lint-action v1
  • bufbuild/buf-setup-action v1
  • actions/checkout v3
  • bufbuild/buf-setup-action v1
  • actions/checkout v3
  • bufbuild/buf-breaking-action v1
  • actions/checkout v3
  • actions/setup-node v4.0.1
  • actions/setup-go v4
.github/workflows/pr-lint.yml
  • amannn/action-semantic-pull-request v5
.github/workflows/release-please.yaml
  • google-github-actions/release-please-action v3
  • actions/checkout v3
  • bufbuild/buf-setup-action v1
  • actions/checkout v3
  • JasonEtco/create-an-issue v2
gomod
go.mod
  • go 1.18
  • github.com/xeipuuv/gojsonschema v1.2.0
npm
package.json
  • ajv-cli ^5.0.0

  • Check this box to trigger a request for Renovate to run again on this repository

Use `Value` for `ResolveObjectResponse` value type.

If the discussion here is implemented, I think we want to change ResolveObjectResponse from:

message ResolveObjectResponse {
    google.protobuf.Struct value = 1;
    string reason = 2;
    string variant = 3;
}

to:

message ResolveObjectResponse {
    google.protobuf.Value value = 1;
    string reason = 2;
    string variant = 3;
}

This allows us to return arrays (as well as other protobuf values) as the top level object in the object resolver.

Is there any objections or challenges to doing this? I've POC'd it in the flagd-java provider. Would it be reasonable in flagd?

@james-milligan @skyerus @beeme1mr

[FEATURE] Validation and editor support via rigorous JSON schema

Currently, we define a JSON-schema definition for flagd. This schema is adequate, but doesn't support:

  • validation of JSON logic rules
  • validation of custom injected properties (might not be possible)
  • validation that defaultVariant is actually one of the variant keys (might not be possible)

We should implement a JSON schema that includes as many of the above validations as possible. Once we have this, we could host it at flagd.dev, and when users edit a JSON file in vscode or other editors, they could get built-in validation if the schema is referenced in their doc ("$schema": "https://flagd.dev/flagdefition").

Remove OpenAPI

Remove the OpenAPI folder and associated workflows. We're now using Buf and gRPC.

Add / Update package name options

In the schema we are currently only providing the java and go package name options, these options will be required for any languages we expect to produce a provider for.

This would also be a good opportunity to review the existing package names.

flagd grpc api client code generation

Update the buf gen configs to generate client stubs for the grpc apis.

Currently buf.gen.yaml is configured to generate grpc-gateway and go-grpc code, however, stubs will need to be generated in all languages we intend to produce a client for.

(Java, Typescript, Go etc ...)

Register JSON Schema in the Schema Store

Schema Store is a collection of JSON schemas that are automatically loaded in supported IDEs. This would make editing flagD configurations easier because it would automatically perform basic validation and autocomplete functionality.

Simplified flagd feature flag configuration

The current flagd flag configuration schema lacks some reasonable defaults that can easily be derived assumed:

  • Boolean flags don't really need variants explicitly defined - they essentially should always be true/false. We can make these variants "implied".
  • Flags states are generally ENABLED. We should implicitly assume they are ENABLED if the state is not defined.

Things that need to be done to accomplish this:

  • Relax JSON schema to support this.
  • Leverage relaxed schema in flagd and make required updates to state management to support this
  • Leverage relaxed schema in OFO

Improve Buf Schema Registry Presents

Requirements

  • Add a readme to root of the schemas folder so it's included in the Buf schema registry
  • Version the schema releases (see #27)
  • Document properties on the schema so they're visualized in Buf
  • Include a link to the Buf schema registry on the readme

[FEATURE] bulk evaluation

In order to support synchronous evaluation (something particularly important for client use cases), we need a bulk evaluation rpc. The endpoint would accept a context and evaluate all configured flags with that context. The returned result should be a map of flagKey: resolutionDetails.

Relates to: open-feature/flagd#234

Automate Buf Release Process

Requirements

  • Create a GitHub release automatically based on a git tag
  • The git tag should match v*.. and follow semver guidelines.
  • Breaking changes should be represented in PRs and Release notes
  • Breaking changes should NOT bump major version numbers until a 1.0 release
  • Push releases to the Buf Schema Registry

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.