Skip to content

Java port of Facebook's PlanOut A/B testing system with additional functionality

License

Notifications You must be signed in to change notification settings

nkconnor/planout4j

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlanOut4J

Java implementation of Facebook's PlanOut forked from Glassdoor.

Getting Started

See the Glassdoor repository for a ready-to-use implementation of Planout4j.

The API is hosted on Maven Central:

<dependency>
     <groupId>com.glassdoor.planout4j</groupId>
     <artifactId>planout4j-api</artifactId>
     <version>1.1</version>
 </dependency>

Project Modules

  • core - the most important module. Defines all PlanOut operations, as well as the central classes Namespace, NamespaceConfig, Experiment, and others. Does not depend on any other modules. If one wants to use PlanOut4J programmatically (i.e. without external configuration) or one already has a parsed JSON object representing namespace based on the above "schema", then one needs core module only
  • compiler - this module provide java wrapper for PlanOut compiler as well as tools and API to compile namespace YAML (see above) with embedded PlanOut DSL into JSON.
  • config - this module defines API for reading namespace configuration data from / writing to a backend. Currently file system backend and Redis backend (both used internally at Glassdoor) are provided. The module also exposes Planout4jRepository interface which acts as a facade to one or more backends. It depends on compiler for parsing the data.
  • api - this is the primary entry point. It provides NamespaceFactory interface and several implementations. It depends on config for loading up each individual namespace and maintains a cache of those keyed by name. This is what majority of developers will likely use.
  • tools - this contains all command-line tools. Tools are described in details in the usage document.
  • demos - this is what you think it is

Contributing

We welcome contributions! Please raise an issue with any proposals.

About

Java port of Facebook's PlanOut A/B testing system with additional functionality

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%