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

[Proposal] Add new RolloutBucketID field #1590

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

KazWolfe
Copy link
Member

@KazWolfe KazWolfe commented Jul 28, 2024

This pull request aims to add a new field to the updater, namely RolloutBucketId. This field allows the launcher to report a (somewhat) fixed value to XLWebServices for purposes of canary determination.

This change specifically allows Dalamud to perform a staged rollout (e.g. 1%, 20%, 50%, 100%), multiple canaries at once, and other server-side logic behaviors. As an example, the existing RolloutBucket field will now be set from the BucketID if it does not already exist.

Currently, this field has a precision of 1,000 buckets, calculated by the creation time of the Addon folder. This roughly correlates to the user's initial installation time. This was chosen specifically since it's relatively difficult to control with precision meaning users cannot "sign up" for canary releases. This is considered a feature, as users wishing to test still have the option of using the stg builds.

This feature does introduce a minor privacy risk, as users are now slotted into one of these 1,000 buckets. I believe, however, that our user counts and the source of this data (ticks mod 1000) make this effectively useless for tracking.

Eventually, we may expose this field to Dalamud proper so that plugins may also perform similar canary logic (e.g. limited rollouts via PluginMaster/D17, or feature flags in-code).

RolloutBucketId allows the client to report a (somewhat) fixed value to XLWebServices for purposes of canary determination.

 This change allows Dalamud to perform staged rollouts (e.g. 1%, 20%, 50%, 100%), multiple canaries at once, and similar.
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.

1 participant