All Projects โ†’ mint-metrics โ†’ mojito

mint-metrics / mojito

Licence: BSD-3-Clause License
๐Ÿงช Source-controlled split testing stack for building, launching and analysing A/B tests.

Projects that are alternatives of or similar to mojito

growthbook
Open Source Feature Flagging and A/B Testing Platform
Stars: โœญ 2,342 (+4679.59%)
Mutual labels:  analytics, experimentation, ab-testing, split-testing
vue-a2b
Split Testing for Vue.js
Stars: โœญ 82 (+67.35%)
Mutual labels:  ab-testing, split-testing
startuptoolbox
The startup founder toolbelt. A forever-updating crowdsourced collection.
Stars: โœญ 146 (+197.96%)
Mutual labels:  analytics
zoe
Zoe: Container Analytics as a Service -- mirror of https://gitlab.eurecom.fr/zoe/main/
Stars: โœญ 51 (+4.08%)
Mutual labels:  analytics
SQLGitHub
๐Ÿ’ป SQLGitHub โ€” Managing GitHub organization made easier
Stars: โœญ 34 (-30.61%)
Mutual labels:  analytics
statbotics
๐Ÿ“ˆ Modernizing Data Analytics for FRC Robotics
Stars: โœญ 20 (-59.18%)
Mutual labels:  analytics
hastic
Hastic standalone
Stars: โœญ 37 (-24.49%)
Mutual labels:  analytics
mixpanel-engage-query
Command line tool to query the MixPanel Engage API for People Data.
Stars: โœญ 48 (-2.04%)
Mutual labels:  analytics
pathling
Turn your FHIR data set into a powerful API that can be used to develop analytics applications and augment data science workflow.
Stars: โœญ 31 (-36.73%)
Mutual labels:  analytics
swetrix-js
The JavaScript analytics client for Swetrix Analytics
Stars: โœญ 28 (-42.86%)
Mutual labels:  analytics
evry
Split STDIN stream and execute specified command every N lines/seconds.
Stars: โœญ 61 (+24.49%)
Mutual labels:  analytics
eAnalytics
Dynamic Web-based Analytics for the Energy Industry
Stars: โœญ 28 (-42.86%)
Mutual labels:  analytics
plausible on dokku
Dockerfile to run Plausible (analytics) on Dokku (mini-Heroku)
Stars: โœญ 17 (-65.31%)
Mutual labels:  analytics
dicy
A builder for LaTeX, knitr, literate Agda, literate Haskell and Pweave that automatically builds dependencies.
Stars: โœญ 22 (-55.1%)
Mutual labels:  knitr
programmable-air
A hardware kit to experiment with inflatable and vacuum based soft robotics.
Stars: โœญ 54 (+10.2%)
Mutual labels:  experimentation
FSCNMF
An implementation of "Fusing Structure and Content via Non-negative Matrix Factorization for Embedding Information Networks".
Stars: โœญ 16 (-67.35%)
Mutual labels:  analytics
dashflare
๐Ÿ•ต๐Ÿผโ€โ™€๏ธ Open Source and privacy-focused analytics solution. ๐Ÿ“Š Advanced monitoring for your website behind Cloudflare
Stars: โœญ 78 (+59.18%)
Mutual labels:  analytics
js-docker
Container deployment of TIBCO JasperReportsยฎ Server
Stars: โœญ 115 (+134.69%)
Mutual labels:  analytics
stocklist
Stock data collection and analysis
Stars: โœญ 27 (-44.9%)
Mutual labels:  analytics
chatbase-dotnet
Integrate your DotNet application with Chatbase!
Stars: โœญ 16 (-67.35%)
Mutual labels:  analytics

Mojito experimentation framework

Mojito

A modular, source-controlled split testing framework that lets you build, launch and analyse experiments via Git/CI.

View documentation | Read intro blog post

It's comprised of 3 core modules e.g.:

  1. Mojito JS Delivery: Front-end library for running experiments on your site.
  2. Mojito Snowplow Storage: Data models & events for tracking experiments.
  3. Mojito R Analytics: Templatable RMarkdown experiment reports.

Mojito's 3 components

Features

  • Under 5kb minified & gzipped
  • Define experiments with simple JS or YAML
  • Self-hosted & git-controlled for familiar code review / merging
  • Expressive trigger system & utilities
  • Variant code (JS/CSS) minification & linting
  • Track and handle JS errors caused by your variant code

Mojito vs. [vendor]

Differentiating features between popular vendors' tools and Mojito out of the box:

Feature Optimizely X Google Optimize Mojito
Open-source license โŒ โŒ โœ… BSD3
Light front-end codebase * โŒ~80kb โ—~25kb โœ…<5kb
Git source control & CI โŒ โŒ โœ…
Variant error-tracking/handling โŒ โŒ โœ…
Auto CSS/JS minification โ—(not custom code) โ“ โœ…
Self-hosted โ— (for a fee) โ—(via API) โœ…
Data ownership โ—(via S3 export) โ—(via 360/BigQuery) โœ…
Retroactively add new metrics โœ… โ—(360 only) โœ…
Server-side/App testing โœ… โ—(via API) โ—(via Storage)
WYSIWYG test editor โœ… โœ… โŒ

* Tested 2019-07-05

Getting started

Mojito consists of three components, which are often switched out in the course of Mint Metrics' client services:

  1. Delivery: Front-end libraries to reliably control which treatments users are exposed to. e.g. Mojito JS Delivery
  2. Storage: Data collection modules and data modelling steps to power your reports. e.g. Mojito Snowplow Storage
  3. Analytics: Tools to measure & report on the effects caused by your treatments. e.g. Mojito R Analytics

Get up and running quickly with the README files inside each section.

Example experiment

Using Mojito's CI tools, you can set up experiments in YAML & JS:

id: ex1
name: Example test 1
state: live
sampleRate: 0.75
trigger: trigger.js
recipes:
  0:
    name: Original
  1:
    name: Variant
    js: variant.js
    css: variant.css

Where trigger.js activates the experiment when a condition is met and a callback to activate is fired:

function trigger(test) {
    if (document.location.pathname === '/') test.activate();
}

Upon activation, the will include 75% of traffic (sampleRate: 0.75) and split it 50-50 between "Original" and "Variant" groups.

For users assigned to the "Variant" group, we execute a) variant.js and b) variant.css files to transform the page through a a) JS function and b) CSS stylesheet respectively.

After you've defined an experiment YAML...

Run the Gulp pipeline to lint/test/publish your container.

  1. Install the necessary NPM packages: npm install
  2. Build & publish your testing container: gulp scripts-local && gulp publish

Example analytics reports

If you use our Snowplow/Redshift & R Analytics component for reporting, all your metrics can be reported on with a simple array of metrics.

wave_params <- list(
  client_id = "mintmetrics",
  wave_id = "ex1",
  start_date = "2019-05-15 09:19:45",
  stop_date = "2019-06-05 14:29:00",
  time_grain = "hours",
  subject = "usercookie",
  recipes = c("Original", "Variant")
)

goalList <- list(
  list(
    title = "Transactions",
    goal = "purchase",
    operand = "="
  ),
  list(
    title = "Thankyou page views",
    goal = "page_view /contact/thank-you%",
    operand = "like"
  )
)
goalList <- mojitoFullKnit(wave_params, goal_list = goalList)

For this experiment, we'll report on transactions and page views:

Measuring the performance of a treatment relative to the control group in Mojito.

Support for other analytics back-ends

You don't exactly need Snowplow Analytics to use Mojito. You can also track experiments to wherever you like, via a custom storage adapter. E.g. To Google Tag Manager, Adobe etc.

You can even hook Mojito Delivery up to Google Optimize's reports for free.

Credits

Our Delivery JS library is a heavily modified fork of the excellent jamesyu/cohorts lib. Meanwhile we employ heavy use of the Snowplow Analytics event pipeline for our Storage component and RStudio/Knitr for our Analytics reports.

Getting involved

We would love to see PRs! We're able to assist if you hit any snags getting set up.

Reach out to us via:

Learn more

Read the documentation and get Mojito set up. We recommend starting with Mojito JS Delivery.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].