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

Add priority and perBuyerGroupLimits #276

Merged
merged 3 commits into from
Apr 26, 2022
Merged

Conversation

brusshamilton
Copy link
Contributor

The priority attribute for interest groups and the perBuyerGroupLimits attribute for auction configurations allow for sellers to control the number of interest groups for each buyer participating in an auction.

@jonasz
Copy link
Contributor

jonasz commented Mar 28, 2022

There has been some discussion about the need to be able to update/tweak interest group priorities that this pullreq introduces (see e.g. #79 (comment)). Two ideas that seem particularly useful to us at RTB House:

  • being able to overwrite the priority from within generateBid (to account for interest group's age and the number of previous wins)
  • being able to tweak (multiply?) the priority based on trustedBiddingSignals (to account for real-time campaign configuration changes)

These two mechanisms seem to be quite simple yet powerful. I was wondering, do you think they could be added, either now or longer term?

Copy link
Collaborator

@michaelkleber michaelkleber left a comment

Choose a reason for hiding this comment

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

Thanks Russ

FLEDGE.md Outdated
@@ -108,6 +109,8 @@ The browser will remain in an interest group for only a limited amount of time.

#### 1.2 Interest Group Attributes

The `priority` is used to select which interest groups are shown when the number of interest groups are limited by the `perBuyerGroupLimits` attribute of the auction config. If not specified, a `priority` of `0.0` is assigned.
Copy link
Collaborator

Choose a reason for hiding this comment

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

"which interest groups are shown"? It's which groups participate in an auction (as you describe below), so "shown" seems wrong here.

There's no special meaning to the numerical values, right? That is, 0.0 here is just a neutral default, and it's OK to use positive and negative numbers?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

FLEDGE.md Outdated
@@ -174,6 +181,8 @@ The returned `auctionResultPromise` object is _opaque_: it is not possible for a

Optionally, `sellerTimeout` can be specified to restrict the runtime (in milliseconds) of the seller's `scoreAd()` script, and `perBuyerTimeouts` can be specified to restrict the runtime (in milliseconds) of particular buyer's `generateBid()` scripts. If no value is specified for the seller or a particular buyer, a default timeout of 50 ms will be selected. Any timeout higher than 500 ms will be clamped to 500 ms. A key of `'*'` in `perBuyerTimeouts` is used to change the default of unspecified buyers.

Optionally, `perBuyerGroupLimits` can be specified to limit the number of of interest groups from a particular buyer that participate in the auction. A key of `'*'` in `perBuyerGroupLimits` is used to set a limit for unspecified buyers. For each buyer, interest groups will be selected to participate in the auction in order of decreasing `priority` up to the specfied limit. The value of the limits provided should be able to be represented by a 16 bit unsigned integer.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Just to be as clear as possible, this should probably also indicate that the meaning of priority numbers are completely up to the discretion of each IG owner, and that priorities of groups from different owners will never be compared with each other.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

FLEDGE.md Outdated
@@ -108,6 +109,8 @@ The browser will remain in an interest group for only a limited amount of time.

#### 1.2 Interest Group Attributes

The `priority` is used to select which interest groups are shown when the number of interest groups are limited by the `perBuyerGroupLimits` attribute of the auction config. If not specified, a `priority` of `0.0` is assigned.
Copy link
Contributor

Choose a reason for hiding this comment

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

It almost goes without saying, but perhaps include that interest groups with higher priority will be selected over ones with lower?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

FLEDGE.md Outdated
@@ -108,6 +109,8 @@ The browser will remain in an interest group for only a limited amount of time.

#### 1.2 Interest Group Attributes

The `priority` is used to select which interest groups are shown when the number of interest groups are limited by the `perBuyerGroupLimits` attribute of the auction config. If not specified, a `priority` of `0.0` is assigned.
Copy link
Contributor

Choose a reason for hiding this comment

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

When there are multiple interest groups with the same priority, too many for the limit, perhaps say that the browser will select uniformly at random?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

@brusshamilton
Copy link
Contributor Author

There has been some discussion about the need to be able to update/tweak interest group priorities that this pullreq introduces (see e.g. #79 (comment)). Two ideas that seem particularly useful to us at RTB House:

  • being able to overwrite the priority from within generateBid (to account for interest group's age and the number of previous wins)
  • being able to tweak (multiply?) the priority based on trustedBiddingSignals (to account for real-time campaign configuration changes)

These two mechanisms seem to be quite simple yet powerful. I was wondering, do you think they could be added, either now or longer term?

I think updating the priority from generateBid might be a reasonable future change, but there are enough concerns related to that change (API design, error handling, etc) that it would probably be better addressed in a separate pull request.

Using real-time priorities computed based on trustedBiddingSignals may have some performance limitations. At the very least we would need to wait for the fetches for the trusted bidding signals for all interest groups for an owner to complete before we could determine which interest groups could participate.

@jonasz
Copy link
Contributor

jonasz commented Apr 13, 2022

Thanks for your thoughts. For us this is not a blocker for FOT1, but definitely important longer term. Discussing in a separate pullreq/issue (sometime in future) sounds good to me.

aarongable pushed a commit to chromium/chromium that referenced this pull request Apr 14, 2022
This reflects the latest version of the pull request to the FLEDGE
explainer for the prioritization feature:
WICG/turtledove#276

Change-Id: I4b9f7ad8b41ce53bb1cbae46d3b92511bb50b991
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3585025
Auto-Submit: Russ Hamilton <behamilton@google.com>
Reviewed-by: Maks Orlovich <morlovich@chromium.org>
Commit-Queue: Maks Orlovich <morlovich@chromium.org>
Cr-Commit-Position: refs/heads/main@{#992519}
@brusshamilton
Copy link
Contributor Author

@michaelkleber Do you think is is ready to merge?

@michaelkleber
Copy link
Collaborator

Looks good, thanks! Will merge now.

@michaelkleber michaelkleber merged commit c00a592 into WICG:main Apr 26, 2022
@sbelov
Copy link

sbelov commented Apr 26, 2022

Might we want to consider perBuyerGroupExecutionLimitsMs from #293 as an alternative to perBuyerGroupLimits?

@michaelkleber
Copy link
Collaborator

There are some good additional limits that we should consider adding. But as the live discussion pointed out, there's no harm in our starting with the limit that is easy to implement now, and then circling back and adding more refined controls later based on our experience.

@sbelov
Copy link

sbelov commented Apr 26, 2022

Thank you!

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.

5 participants