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 needscoremodule 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 exposesPlanout4jRepositoryinterface which acts as a facade to one or more backends. It depends oncompilerfor parsing the data.api- this is the primary entry point. It providesNamespaceFactoryinterface and several implementations. It depends onconfigfor 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.