open-feature / spec

OpenFeature specification
https://openfeature.dev
Apache License 2.0
595 stars 35 forks source link

[Question] Static vs Dynamic context terminology #190

Closed toddbaert closed 1 year ago

toddbaert commented 1 year ago

As discussed in today's community meeting, we still don't love the static/dynamic terminology used to differentiate SDKs targeting client vs server. Some background from the proposed spec PR:

### Dynamic-Context Paradigm

Server-side use cases typically perform flag evaluations on behalf of many users, with each request or event being associated with a particular user or client. For this reason, server frameworks typically operate similarly to this:

- the application is initialized with some static context (geography, service name, hostname, etc)
- with each request or event, relevant dynamic context (for example, user session data) is provided to flag evaluations

### Static-Context Paradigm

In contrast to server-side or other service-type applications, client side applications typically operate in the context of a single user. Most feature flagging libraries for these applications have been designed with this in mind. Frequently, Client/web libraries operate similarly to this:

- an initialization occurs, which fetches evaluated flags in bulk for a given context (user)
- the evaluated flags are cached in the library
- flag evaluations take place against this cache, without a need to provide context (context was already used to evaluate flags in bulk)
- functions are exposed on the libraries that signal the cache is no longer valid, and must be reconciled based on a context change, frequently involving a network request or I/O operation

It seems like there's a general consensus these characterizations are adequate, but the names for them are not.

I'd like to use this issue to brainstorm and vote on some better names. Here's a short list from the meeting, as well as a couple I've heard elsewhere or came up with:

dynamic context / static context

dynamic context / ambient context

server context / client context

multi-user context / single-user context

multi-subject context / single-subject context

mutli-context / single-context

toddbaert commented 1 year ago

Moving to discussion: https://github.com/open-feature/spec/discussions/191