-
Notifications
You must be signed in to change notification settings - Fork 753
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
Enhance module framework to support A/B testing #3681
Comments
The PBS-Go team is curious what A/B testing strategy is being used and whether this is something that applies to all modules or not. |
Just a simple run-or-not-run strategy. I suppose it would be more powerful to allow for different configurations (e.g. timeouts, cache sizes, etc), but the main point here is to be able to know whether it's worthwhile paying a given vendor at all, not to fine-tune the behavior. If their system is complicated enough to need that kind of tuning, they should include their own A/B testing facility inline to their module. Here's a rough proposed implementation.
The test is enabled at the module-level, not the hook level.
If any abtests object is enabled and flagged with log-analytics-tag as true, PBS would log an atag activity object
I think they can do what they need to with this data, which is just to log to their endpoint whether a given module was active or not. |
Please consider a simplification:
This of course works only if Thus the whole thing comes down to implementing |
If this were done via HTTP headers then Content Security Policy might provide a pattern to emulate substituting domain name for module common name for the module's key. The name of the header could be |
In general I'd prefer to put core control mechanisms in a place where the module code can't see it. I get that the 'enabled' field is an exception. I believe the module can see everything under hooks.modules.my-module. I don't want to add another level (e.g. params-seen-by-module) because we already have existing modules in the wild that don't put things there. So we'd need to come with a reserved word where we place PBS-core control functionality. e.g. hooks.modules.my-module.module-controls.percent-enabled. |
Discussed in committee:
|
Discussed and approved. |
Done in PBS-Java 3.16 |
Rather than have each module support an ability to A/B test, it would be convenient for PBS-core to support enabling modules in a partial way.
See #3681 (comment) for details on where we ended up.
The text was updated successfully, but these errors were encountered: