Using Proctor for A/B Testing from a Non-Java Platform

We’re excited to announce the open sourcing of proctor-pipet, a tool we created that allows you to deploy Proctor as a remote service. proctor-pipet is a Java web application that exposes Proctor as a simple REST API accessible over HTTP. This means that you can do A/B testing in applications written in non-JVM languages like Python.

In addition to proctor-pipet, we have made available a Python package called django-proctor that makes it easy for your Django web app to use Proctor groups. We look forward to others implementing similar packages for their favorite web frameworks, such as Ruby on Rails or .NET MVC.

These packages are the result of some great work by one of our fantastic summer 2014 interns.

How it works

Your web application makes HTTP requests to Proctor through proctor-pipet. Proctor returns the group assignments, which your web app can then use to make decisions on the content it returns to the user’s browser.

Data flow for proctor-pipet: your browser communicates over HTTP with your web app, which in turn communicates over HTTP with proctor-pipet/Proctor

Deploying Proctor remotely through proctor-pipet lets you take advantage of all the features of  the Proctor library:

  • Assign users to test groups
  • Use identifiers to map to different test types
  • Toggle features or implement gradual rollouts of new features
  • Make changes to test allocations independently of your code
  • Determine group membership based on rules that use arbitrary context variables (for example, to target mobile devices)

Click for Proctor documentation.

Download both tools on GitHub: proctor-pipet ( and django-proctor ( Both pages include documentation with examples to help you get started. If you have any questions, ask them in our Proctor Q&A forum.