Developing Clipper

Development of Clipper is coordinated through GitHub.

To get started, clone the repository including submodules:

git clone --recursive

If you’ve already cloned the repository at this point without the submodules, you can include them by running git submodule update --init --recursive in the Clipper repo.

Build Dependencies:

  • Boost
  • cmake >= 3.2
  • zeromq >= 4.1.0
  • hiredis
  • libev
  • redis-server >= 3.2
  • Facebook Folly

Building Clipper:

First generate the CMake files with ./configure. This generates an out-of-source build directory called debug. Go into this directory and then run make to actually compile the code. You should only need to re-run the configuration script if you change one of the CMakeLists.txt files. To build for release, run ./configure --release which generates the release build directory instead of debug. If you want to clean everything up, you can run ./configure --cleanup (if you get tired of being prompted, you can run ./configure --cleanup-quiet to force cleanup without prompting).

Redis must be installed and on your path to run both the query REST frontend and the unit-tests. You can test this with redis-server --version.

For example:

cd debug

# write some code and compile it

# build and run unit tests with googletest

Clipper has been tested on OSX 10.12 and on Debian stretch/sid and Ubuntu 12.04 and 16.04. It does not support Windows.

To file a bug or request a feature, please file a GitHub issue. Pull requests are welcome.

Before filing a pull request, make sure that C++ and Java code conforms to the project’s Clang-Format style file and Python code conforms to the PEP 8 style. To automatically format your code before submitting a pull request, you can use the provided formatting script:


Clipper Dev Docker Image

We packaged all dev dependency in Docker Image as well. You can use the following to avoid set up local environment and use Docker instead:

docker run -it --network=host -v <LOCAL_PATH_TO_CLIPPER>:/clipper -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp clipper/dev:develop
docker run -it --network=host -v /home/ubuntu/clipper:/clipper -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp clipper/py35-dev:develop