-
Notifications
You must be signed in to change notification settings - Fork 271
Collaborate on experimentation library concepts #395
Comments
@jejacks0n so happy you opened up this issue! I've been helping maintain Vanity for a minute :-) I'm really excited about seeing a slimmer, more contemporary, Rails-specific product/design experimentation tool. I can list out the things I've thought of (I did peek out your library, but I want to keep this freeform in the spirit of your comment):
I'll say from my experience with using Vanity, and maintaining GoodJob, that being opinionated about how to use it, and being judicious at declining use-cases that fall outside those opinions, is important. Hopefully it's obvious I'm excited 👍🏻 |
Yeah! I saw that you were maintaining it @bensheldon, so thanks for responding! I agree with everything you've written, and it might be worth explaining my mental model, which is simplified into three high level concerns:
The rollout layer should have an interface and/or api because deploying code for toggling a feature flag, starting/stopping an experiment or adjusting variant weights isn't optimal. The reporting layer can be as simple as logging, and might do multiple things, like increment a count and push complex event data into some local or remote datastore. The refinement layer can be automated or can happen through manual intervention -- using knowledge gained from the reporting layer. Refinements can be as simple as just not running a specific variant anymore, because an exception is raised within it, and I've often considered how this can be automated using complex details within the reporting layer, or by simply simplistic rollups/counts. The way ActiveExperiment attempts to handle all of that is to provide the basic (hopefully elegant) functionality, and outsource the more advanced stuff to adapter layers. Given your other projects this probably makes sense, and ActiveJob was a source of inspiration in how ActiveExperiment was written. Take the Unleash adapter for example, where the complex task of rollout, variant definition, and counting impressions is handled for us. I want to continue to build out handling of these three concerns, and see Vanity as a good example that. I'm still kicking around what's worth doing myself, what's worth doing as adapter layers, and what's worth collaborating on. So are there things you think would be worth sharing or extracting from Vanity? Things that you'd like to remove and have in a different project that's more reusable? Is it worth me writing an adapter layer for Vanity, even though it's already providing a lot of the same kinds of concepts? And so I can understand your experience better, what's your mental model of all the concerns in experimentation? |
@jejacks0n ooh, that sounds really interesting. I think adapter layers would solve some of the various challenges I've had with Vanity. Having thought about "what is my mental model" all day yesterday, I think I came to the conclusion that my thoughts are somewhat orthogonal to experiments:
So maybe that's helpful 🤷🏻 It's orthogonal the more I think about it. So if I'm pie-in the skying, I want:
I think my principles/values on a lot of this stuff is "help small teams do big things" and "build for speed of learning", and "do less work, with more purpose behind the work that is done". Which probably lends itself less to a full-featured A/B testing framework, and more towards a tightly focused metrics framework that can do variations. I dunno, just noodling here 😄 |
Hi! I just stumbled across this project and am bummed that I didn't know about it before I started my own project (intentionally not linked here,) so I wanted to open an issue to see if there's any interest in figuring out how we might collaborate on the concepts?
I think they're approaching the challenge from slightly different perspectives, so I see an opportunity to consolidate a couple things, or at least talk about how one might take advantage of the other.
Background: I wrote a library while working at GitLab that allowed me to explore what worked well and what didn't work well from the engineers that used it. That library was initially based on the scientist gem, which is also really cool. I took what I learned on that project and applied it to the ActiveExperiment library. Please check it out and let's talk about what we might collaborate on if that's interesting.
The text was updated successfully, but these errors were encountered: