{"name":"Sixpack: A Language-Agnostic A/B Testing Framework","description":"Sixpack is a robust, language-agnostic A/B testing framework designed to facilitate experimentation across various programming languages. It provides a simple HTTP API for client libraries and includes both a server for handling requests and an optional web dashboard for tracking and managing tests. This framework allows developers to easily implement and monitor A/B tests to optimize user experiences.","github":"https://github.com/seatgeek/sixpack","url":"https://osrepos.com/repo/seatgeek-sixpack","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/seatgeek-sixpack","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/seatgeek-sixpack.md","json":"https://osrepos.com/repo/seatgeek-sixpack.json","topics":["A/B Testing","Experimentation","Python","Web Development","Analytics","Open Source","Marketing","Product Development"],"keywords":["A/B Testing","Experimentation","Python","Web Development","Analytics","Open Source","Marketing","Product Development"],"stars":null,"summary":"Sixpack is a robust, language-agnostic A/B testing framework designed to facilitate experimentation across various programming languages. It provides a simple HTTP API for client libraries and includes both a server for handling requests and an optional web dashboard for tracking and managing tests. This framework allows developers to easily implement and monitor A/B tests to optimize user experiences.","content":"## Introduction\nSixpack is a powerful, language-agnostic A/B testing framework that enables developers to conduct experiments across diverse programming environments. It simplifies the process of A/B testing by exposing a straightforward HTTP API, allowing client libraries in virtually any language to interact with it. The framework comprises two main components: Sixpack-server, which handles web requests and experiment logic, and Sixpack-web, an optional web dashboard for visualizing and managing your A/B tests.\n\n## Installation\nGetting started with Sixpack is straightforward. First, ensure you have Redis (>= 2.6) and Python (>= 2.7) installed. It's recommended to use a virtual environment.\n\nTo install Sixpack, use pip:\nbash\n$ pip install sixpack\n\n\nAfter installation, you'll need to create a configuration file (e.g., `config.yml`). A basic configuration includes Redis connection details and other settings:\nyaml\nredis_port: 6379\nredis_host: localhost\nredis_prefix: sixpack\nredis_db: 15\nsecret_key: '<your secret key here>'\n\n\nOnce configured, you can start the Sixpack server:\nbash\n$ SIXPACK_CONFIG=<path to config.yml> sixpack\n\nThe server will listen on port 5000 by default. The optional Sixpack-web dashboard can be started similarly:\nbash\n$ SIXPACK_CONFIG=<path to config.yml> sixpack-web\n\nThe dashboard runs on port 5001 by default and requires a `secret_key` to be set.\n\n## Examples\nAll interactions with Sixpack are performed via HTTP GET requests, using a unique `client_id` to link participation to conversion.\n\n### Participating in an Experiment\nTo have a user participate in an experiment, send a GET request to the `/participate` endpoint:\nbash\n$ curl http://localhost:5000/participate?experiment=button_color&alternatives=red&alternatives=blue&client_id=12345678-1234-5678-1234-567812345678\n\nSixpack will automatically create the experiment if it doesn't exist and assign an alternative to the `client_id`.\n\n### Converting a User\nOnce a user has completed the desired action, record a conversion by sending a GET request to the `/convert` endpoint:\nbash\n$ curl http://localhost:5000/convert?experiment=button_color&client_id=12345678-1234-5678-1234-567812345678\n\nSixpack internally handles which alternative the `client_id` was assigned to for conversion tracking.\n\n## Why Use Sixpack\nSixpack offers several compelling reasons for adoption:\n*   **Language Agnostic:** Its HTTP API allows integration with any programming language, making it highly flexible for diverse tech stacks.\n*   **Simple API:** Interaction is via straightforward HTTP GET requests, simplifying client-side implementation.\n*   **Built-in Dashboard:** Sixpack-web provides a convenient dashboard for real-time tracking, visualization, and management of experiments, including selecting winners.\n*   **Deterministic Algorithm:** Utilizing an algorithm ported from Facebook's Planout project, Sixpack ensures consistent and reliable alternative assignment.\n*   **Extensive Client Libraries:** Official and community-contributed client libraries are available for popular languages like Ruby, Python, JavaScript, PHP, iOS, Go, Perl, C#, and Java/Android, accelerating integration.\n\n## Links\n*   **GitHub Repository:** [https://github.com/sixpack/sixpack](https://github.com/sixpack/sixpack){:target=\"_blank\"}\n*   **Client Libraries:**\n    *   Ruby: [http://github.com/seatgeek/sixpack-rb](http://github.com/seatgeek/sixpack-rb){:target=\"_blank\"}\n    *   Python: [http://github.com/seatgeek/sixpack-py](http://github.com/seatgeek/sixpack-py){:target=\"_blank\"}\n    *   JavaScript: [http://github.com/seatgeek/sixpack-js](http://github.com/seatgeek/sixpack-js){:target=\"_blank\"}\n    *   PHP: [http://github.com/seatgeek/sixpack-php](http://github.com/seatgeek/sixpack-php){:target=\"_blank\"}\n    *   iOS: [http://github.com/seatgeek/sixpack-ios](http://github.com/seatgeek/sixpack-ios){:target=\"_blank\"}\n    *   Go: [http://github.com/subosito/sixpack-go](http://github.com/subosito/sixpack-go){:target=\"_blank\"}\n    *   Perl: [http://github.com/b10m/p5-WWW-Sixpack](http://github.com/b10m/p5-WWW-Sixpack){:target=\"_blank\"}\n    *   C#: [https://github.com/nderraugh/sixpack-cs](https://github.com/nderraugh/sixpack-cs){:target=\"_blank\"}\n    *   Java/Android: [http://github.com/seatgeek/sixpack-java](http://github.com/seatgeek/sixpack-java){:target=\"_blank\"}\n*   **License:** [BSD 2-Clause License](http://opensource.org/licenses/BSD-2-Clause){:target=\"_blank\"}","metrics":{"detailViews":0,"githubClicks":5},"dates":{"published":null,"modified":"2025-12-17T12:02:06.000Z"}}