-
Notifications
You must be signed in to change notification settings - Fork 7
Consider relaxing type of matchValue
#58
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
Comments
filterData
.filterData
I assume that we can start with integers for now and loosen that requirement in the future backwards-compatibly? |
Making filtering more powerful than simple integer equality is useful, though it is worth pointing out what we learned from Attribution Reporting’s declarative filtering API: Users are always going to want something more general than the declarative API allows. ARA added operations over time (first single-value equality, then “any-of” matching in lists of values, then disjunctions over multiple such lists, then negation of these matches), which has led to a complex specification and implementation that is still not completely general, and that is hard for users to express what should in essence be arbitrary boolean predicates in. It makes sense for PPA to support declarative filtering for simple operations like integer equality between values specified on the impression and conversion sides, but once aggregates are involved (lists of values, key-value associations), or operations other than equality, it will quickly become complicated to specify how conversions do things like Before deciding whether impressions should be able to set other data types as their We will also need to consider how these predicates are provided in the HTTP API, if It might be possible to do something like this with worklets (perhaps similar to Shared Storage). |
I have a strong desire to avoid the use of worklets in this API: hiding timing side channels in isolated processing is something fenced frames and protected audience fails at; I don't want this API to be the reason we add another such system. I do think that we need to have a discussion about what the future of the API is in terms of querying capabilities. I know that @michaelkleber expressed a desire to turn the decision-making process into a simple inner product. Or even a matrix product followed by a vector product. This gives you a lot more power than people often appreciate, even if it is not necessarily user-friendly. The advantage would be fixed expectations about running time. (Having that discussion here might not be ideal. I would like to rename filterData to something better (#24) and then talk about the addition of other fields that can be used to more precisely select impressions for consideration. I had thought that this could be done incrementally, but it makes sense to plot out a bigger plan. Should we open an issue for discussion at our upcoming face-to-face? We might make some progress ahead of that time, but this probably isn't where people will expect to find that discussion.) |
Maybe for now it's sufficient to allow the conversion side to specify a list of integers to match for disjunction. |
A related question here: Per the Web IDL standard:
Do we think that's sufficient, even in the integer-only use case? If not, there's further complexity due to JavaScript's |
32 bits is not a lot. I would like to support the use-case where these integers can be hashes of strings if needed, so my preference would be to support either:
|
Another option is |
I would prefer avoiding string parsing on the structured header side unless we know it is needed. I think we could add bigint support later on in a backwards compatible way if needed? |
If we only permit subsetting in the form of an inclusion list, why would having more bits in the integer be useful? |
Upthread I mentioned a use-case:
This is useful if you want to filter on some fields which are not already densely encoded. |
Now that the initial HTTP |
filterData
matchValue
HTTP and RFC 9651 cannot express the full range of values in an unsigned 64-bit value. We could:
I lean toward (2). Sites need to coordinate their use of these values and so can coordinate to avoid parts of the space their system can't address. |
We are currently specifying that this be an integer, but if we want it to be extensible to more complex filtering in the future, possibly we should specify it as
any
.The text was updated successfully, but these errors were encountered: