Java implementation of Facebook's PlanOut forked from Glassdoor.
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>
core
- the most important module. Defines all PlanOut operations, as well as the central classesNamespace
,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 needscore
module onlycompiler
- 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 exposesPlanout4jRepository
interface which acts as a facade to one or more backends. It depends oncompiler
for parsing the data.api
- this is the primary entry point. It providesNamespaceFactory
interface and several implementations. It depends onconfig
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
We welcome contributions! Please raise an issue with any proposals.