Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDK compatibility versioning #1893

Merged
merged 30 commits into from Dec 11, 2023
Merged

Conversation

bryce-fitzsimons
Copy link
Member

@bryce-fitzsimons bryce-fitzsimons commented Nov 29, 2023

Features and Changes

  • SDK version compatibility methods. Given an SDK language and version, what capabilities do we have?
  • SDK version setting in SDK Connection UI
  • SDK payload scrubbing when using a language + version that does not support loose JSON unmarshalling.

todo:

  • connections with multiple languages: safely handle sdk payload capabilities instead of defaulting to "other" (compatible)
  • more in-app messaging & gating?
  • migrate some capability info away from SDKLanguageLogo to the new sdk-versioning methods.

Dependencies

Testing

Screenshots

image

Copy link

github-actions bot commented Nov 29, 2023

Deploy preview for docs ready!

✅ Preview
https://docs-r35q6u5ea-growthbook.vercel.app

Built with commit 70b566a.
This pull request is being automatically deployed with vercel-action

Copy link

github-actions bot commented Nov 29, 2023

Your preview environment pr-1893-bttf has been deployed with errors.

@bryce-fitzsimons bryce-fitzsimons marked this pull request as ready for review December 2, 2023 08:49
Copy link
Contributor

@msamper msamper left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly questions and naming suggestions on this initial review while I try to understand. Might be worth doing a quick huddle so I can understand some things a bit faster. Will update once I test the functionality

Copy link
Contributor

@msamper msamper left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2023-12-05 at 1 20 23 PM
Ran into a state when editing an existing connection where the connection's specified version is blank. I'm assuming this has something to do with the default value of the dropdown, but maybe its worth either hiding the second sentence until the user selects a version or prompting them to select a version to view compatibility info. We can also default to 0.0.0 but that seems confusing. Aside from that, the UI lgtm. The dropdown is definitely a better experience. There seems to be a typecheck error with version being undefined that you need to handle and I left a comment where it is

@bryce-fitzsimons
Copy link
Member Author

bryce-fitzsimons commented Dec 5, 2023

Ran into a state when editing an existing connection where the connection's specified version is blank.

@msamper Should be fixed now, can you try again please?

@msamper
Copy link
Contributor

msamper commented Dec 5, 2023

Ran into a state when editing an existing connection where the connection's specified version is blank.

@msamper Should be fixed now, can you try again please?

the messaging in the bottom is fixed but I think the value in the dropdown needs to be adjusted
Screenshot 2023-12-05 at 1 33 46 PM

@msamper
Copy link
Contributor

msamper commented Dec 7, 2023

Forgot to update here, but lgtm. I'll defer to Jeremy for final approval

@bryce-fitzsimons bryce-fitzsimons merged commit be2bc29 into main Dec 11, 2023
4 of 5 checks passed
@bryce-fitzsimons bryce-fitzsimons deleted the sdk-compatibility-versioning branch December 11, 2023 21:02
bryce-fitzsimons added a commit that referenced this pull request Dec 12, 2023
* initial: new sdkVersion field, sdkid/form UI

* sdk-versioning package, getCurrentVersion method

* getCapabilities

* payload scrubbing. mostly feature complete

* BE resolveJsonModule

* update scrubbing logic to use pick

* refactor json

* isOutdated check

* add all sdks, fill in versions/capabilities

* tweaks

* get minimal safe capabilities when multi-language, add tests

* basic gating in SDK connection form

* more retrofitting

* more retrofitting

* address feedback

* address feedback

* lint

* use today's capabilities as a snapshot for default sdk version

* small fixes

* clean up scrubbing, add tests

* fix sdkconnection post endpoint

* fix model option version

* api types

* fix test

* multi-stage scrubbing, update legacy connection logic, tests

* update php for looseUnmarshalling

* address feedback

* log payload deltas instead of scrubbing until confident

* use logger

* log capabilities
bryce-fitzsimons added a commit that referenced this pull request Jan 12, 2024
* initial, updating existing types and methods with new bucket stuff

* moar types

* simplify targeting ui, remove stickyBucketing var

* add minBucketVersion, add reseed option for new phases

* org setting for sticky bucketing, premium feature, organize settings page

* lock SB switch based if !hasCommercialFeature

* working on rollout recommendation logic

* variation blocking ui, wip

* tweak logic kinda

* tweak

* re-add disableStickyBucketing

* ui wip

* ui wip

* ui wip

* ui wip

* ui wip

* ui wip

* ui wip

* ui wip

* Support ability to set role with SCIM request. (#1779)

* Support ability to set role with SCIM request.

* Modify cascading window logic for excluding in-progress conversions (#1921)

* Modify cascading window logic for excluding in-progress conversions

* Move fn

* Test

* Fix unnecessary activation fact metric data retrieval (and two minor FE bugs) (#1922)

* Update conversion window logic for fact metrics

* CLean up language

* More proximate fix

* Pre-compute safe dimension slices (#1873)

* Add reliable dimensions query

* Modal mostly working

* Get save working

* lint and such

* merge origin main

* Wire auto dimensions through to units and traffic query

* remove dimensions for traffic

* Fix SQL

* Bryce comments

* Move to kebab & add context

* rename && remove ff

* remove FF

* Table version

* ui/code tweaks

* Add running language

* remove console

* Remove metadata field

* Additional renaming

* Hide entry with no dimensions

* Move storing specified values directly to exposure query

* TS

* Small updates

* Fix type issue

* Rename && add lookback selector

* Cleanup

* push pixels

* Add tracking

* Blank out button for automatic dimensions

* Ensure cast to string before string comparison

---------

Co-authored-by: Bryce <bryce1@gmail.com>

* Add new rollback workflow (#1867)

* Fix bug - metric capping cannot be updated on old metrics (#1930)

* Add Random On-Screen Celebration Service (#1826)

* Add on-screen confetti celebration service to app. Launch experiment consumes it and will fire 20% of the time.

* Allow orgs to define role when creating and updating groups via SCIM (#1909)

* Adds support for setting team/group global role when creating a team or updating a team via SCIM endpoints

* SDK compatibility versioning (#1893)

* initial: new sdkVersion field, sdkid/form UI

* sdk-versioning package, getCurrentVersion method

* getCapabilities

* payload scrubbing. mostly feature complete

* BE resolveJsonModule

* update scrubbing logic to use pick

* refactor json

* isOutdated check

* add all sdks, fill in versions/capabilities

* tweaks

* get minimal safe capabilities when multi-language, add tests

* basic gating in SDK connection form

* more retrofitting

* more retrofitting

* address feedback

* address feedback

* lint

* use today's capabilities as a snapshot for default sdk version

* small fixes

* clean up scrubbing, add tests

* fix sdkconnection post endpoint

* fix model option version

* api types

* fix test

* multi-stage scrubbing, update legacy connection logic, tests

* update php for looseUnmarshalling

* address feedback

* log payload deltas instead of scrubbing until confident

* use logger

* log capabilities

* use isEqual for better payload scrub comparison (#1935)

* ui wip

* resize release plan summary. probably redo this later...

* fix hook deps

* ui wip

* block save when no changes, cleanup old code

* more clarity around SB SDK support

* refactor models based on discussions (no blockedVariations, new bool)

* wip multi-stage modal

* wip multi-stage modal

* wip multi-stage modal

* wip multi-stage modal

* wip multi-stage modal

* wip multi-stage modal

* wip multi-stage modal

* wip multi-stage modal

* confirm check

* add warnings while making changes

* cleanup

* cleanup

* fine tune ui

* remove blocked from variation (add later)

* clean up modal ui

* payload scrubbing

* remove reseed from phases modals, fix any type

* attempt saved group change detection

* lint

* move warning to release plan page, don't warn when using recommended, ui tweaks

* change targeting language, ui tweaks

* fix saved group comparison, fix release plan selector, adjust ui

* wip SB onboarding / toggle

* sticky bucketing onboarding and toggle gating + warnings

* phases: looking for targeting? -> make changes

* refactor

* retool warnings

* address some feedback

* adjust settings SB toggle

* fix saved group restrictive ANY calc

* fix saved group restrictive ANY calc again

* make changes to choices

* other fix

* tweaks

* calculate risk level per option

* phase and warning stuff

* ui tweak, edit phases show/hide button logic

* adjust warning language

* move same-phase-everyone into default release plan options

* add SB keys to payload scrubber

* implement some suggestions

* fix legacy webhook capabilities

* fix help text

* fix help text again

* update types

* ui tweaks

* remove onboarding CTAs when sdk issues detected, point to docs

* gate fallback attributes by org setting

* UI tweaks for sticky bucket onboarding and Make Changes modal

* minor ui tweaks

* Sticky bucketing docs (#2017)

* talk about new stuff in experiment-configuration, fix proxy docs (unrelated)

* sb doc stub

* sb doc stub

* sb doc wip

* change slug

* sb doc wip

* sb doc wip

* sb doc wip

* sdk docs

* Language

* de-emphasize fallbackAttribute in examples

* Update sticky bucket docs page with fallback attribute example and helper image for SDK connections

---------

Co-authored-by: Luke Sonnet <luke.sonnet@gmail.com>
Co-authored-by: Jeremy Dorn <jeremy@jeremydorn.com>

---------

Co-authored-by: Michael Knowlton <michael@growthbook.io>
Co-authored-by: Luke Sonnet <lukesonnet@users.noreply.github.com>
Co-authored-by: Adnan Chowdhury <2374625+bttf@users.noreply.github.com>
Co-authored-by: Jeremy Dorn <jeremy@jeremydorn.com>
Co-authored-by: Luke Sonnet <luke.sonnet@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants