Deterministically Randomized Feedback for A/B Testing #98
Labels
enhancement
New feature or request
Pedal Core
Issues pertaining to Reports, Submissions, and other core infrastructure
We desire to have different students exposed to different kinds of feedback for research purposes. The system should support this easily and cleanly, both in terms of making the feedback and tracking the feedback.
My general thought here is that there is a
core
setting likeset_participant_group
or something that can either take an explicit group, or a seed value (e.g., a user's unique ID) to assign the user to the participant group. I suppose we'll need to know how many groups there should be (perhaps default to two?).What kind of variations should be possible with this system?
For (3), I think that we will need some kind of convenient function for checking which group this user is in and behaving differently. Maybe something like
is_group('A')
or something?For (1), I'm currently thinking that Feedback functions should have a helper class method like
add_alternate_message(group, message)
oradd_variant_message_template(group, message_template)
. This works well for anything subclassingFeedback
. For function literal feedbacks, it's a bit trickier. We should probably inventory those and see what their deal is anyway. Do we have them?For (2), I guess a similar mechanism could work. The
Feedback
class could have amute_for_variant
ordeactivate_for_variant
method..? Or perhaps this should be a more general mechanism like this:Another question: when does the system decide to "pick" the appropriate message? Given the way that some parts delay their decision making to the very end, we probably need some flexibility. It might be dependent on the kind of feedback and the nature of the variation. But I think we pick either "earliest as possible" or "latest as possible" and stick with it. My gut says "earliest" will be easier to reason about: once you've setup A/B groups, you want to start assuming that any feedback is what it is. I don't think it's good to try to do reflective feedback, anyway.
Major point of order, we need to lock down the terminology for this. Are they "participant groups"? Are these "variations"? What is the concept we're building on, from the theoretical model?
The text was updated successfully, but these errors were encountered: