A simple, high-performance A/B testing library for Clojure web applications using multi-armed bandit algorithms.
Touchstone is a Clojure library for A/B testing that simplifies conversion optimization in web applications. It uses multi-armed bandit algorithms to automatically select the best-performing variations, reducing the need for manual setup and monitoring. The library provides a flexible API, supports multivariate testing, and integrates seamlessly with Ring middleware.
Clojure web developers looking to implement A/B testing for conversion optimization without complex setup. It's ideal for teams wanting low-maintenance, statistical-driven testing in production environments.
Developers choose Touchstone for its simplicity, automatic optimization via multi-armed bandit algorithms, and high flexibility with arbitrary Clojure forms as variations. It reduces maintenance overhead while providing advanced capabilities like multivariate testing and engagement tracking.
Simple A/B testing library for Clojure
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The API is described as 'tiny' and 'straightforward', with minimal functions like mab-select and mab-commit! for easy integration, as shown in the quick start examples.
Uses multi-armed bandit algorithms to automatically select best-performing variations, reducing manual analysis and maintenance, as highlighted in the fire-and-forget approach.
Variations can be arbitrary Clojure forms, allowing custom content and complex scenarios, supported by features like multivariate testing and test composition.
Includes Ring middleware (wrap-test-subject-id) for automatic test subject identification, simplifying setup for Clojure web applications without boilerplate code.
Last updated in 2016 with no recent activity, which may lead to compatibility issues with newer Clojure versions and lack of modern features or bug fixes.
Requires a Redis instance and Carmine, adding infrastructure complexity, operational overhead, and a potential single point of failure compared to lightweight alternatives.
The README admits that documentation for use with modern Cljs applications is lacking, making frontend testing less accessible and requiring custom integration efforts.