spec icon indicating copy to clipboard operation
spec copied to clipboard

feat: stabilize - evaluation, providers, harden - hooks, events, context

Open toddbaert opened this issue 6 months ago • 9 comments

This PR:

  • stabilizes evaluation API
  • stabilizes providers
  • hardens hooks, events and context
  • hardens all "static context" (client-side) points

This is a pretty substantial step. stable means that we have no more leeway at all in SDKs - any breaking changes to the parts of the SDK implementing stable APIs means a new major version of the SDK is required, without exception.

I've also opted to "harden" the static context paradigm since we have numerous client implementations in the wild, in particular React and Angular, but also Android. There could still be breaking changes here but the bar is higher. I think this is how we're acting already with regards to these APIs, in all honesty.

I did not promote the context propagation sub-section, or the new tracking section - these are relatively new, though I'm open to opinions on hardening these further.

Potential blockers:

  • https://github.com/open-feature/go-sdk/issues/389
  • https://github.com/open-feature/spec/issues/270

toddbaert avatar Jun 09 '25 17:06 toddbaert

One other thing to point out is that hook data isn't widely implemented yet, so we could mark that subsection experimental... however I don't see much risk with it.

toddbaert avatar Jun 09 '25 17:06 toddbaert

One other thing to point out is that hook data isn't widely implemented yet, so we could mark that subsection experimental... however I don't see much risk with it.

Yeah, it is very new so that seems like a good idea.

kinyoklion avatar Jun 09 '25 17:06 kinyoklion

Would it make sense to focus on experimental -> hardening in this PR and work on hardening -> stable in a separate PR? As noted already, the implications of moving from hardening to stable are significant and I think that requires more thought and care. I think a review of the current implementations across the SDKs is warranted to look for any possible changes we want to make before marking any part of the spec stable.

sahidvelji avatar Jun 10 '25 16:06 sahidvelji

Would it make sense to focus on experimental -> hardening in this PR and work on hardening -> stable in a separate PR? As noted already, the implications of moving from hardening to stable are significant and I think that requires more thought and care. I think a review of the current implementations across the SDKs is warranted to look for any possible changes we want to make before marking any part of the spec stable.

My main object here is the stable changes, not so much the hardening ones. I'm fine with this PR taking a while, I'm not sure I see so much value in separating them, but lets see what others think.

toddbaert avatar Jun 10 '25 18:06 toddbaert

I've opened https://github.com/open-feature/spec/pull/315, which based on feedback, I think we should agree on first.

toddbaert avatar Jun 10 '25 19:06 toddbaert

Related: I opened https://github.com/open-feature/go-sdk/issues/389, which proposes a breaking change to the initialization and shutdown functions (sections 2.4 and 2.5 of the spec) of the go-sdk.

sahidvelji avatar Jun 15 '25 03:06 sahidvelji

Potentially blocked by https://github.com/open-feature/go-sdk/issues/389

toddbaert avatar Jun 17 '25 19:06 toddbaert

Another small blocker here.

toddbaert avatar Jun 19 '25 12:06 toddbaert

Another small blocker here.

I've opened https://github.com/open-feature/spec/pull/317 to address this.

toddbaert avatar Jun 19 '25 18:06 toddbaert