Contributing

Developing Clipper

Development of Clipper is coordinated through GitHub.

To get started, clone the repository including submodules:

git clone --recursive https://github.com/ucbrise/clipper.git

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 $CLIPPER_ROOT_DIR
./configure
cd debug
make

# write some code and compile it
make

# build and run unit tests with googletest
../bin/run_unittests.sh

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:

./bin/format_code.sh