Contributor Guide

Pipcook is a community-driven open source project. We do our best to hope that every bug fixed, new feature, and how this project evolves is visible and transparent to everyone in this Community.

Therefore, we believe that from source code to our documentation are more friendly to contributors, so in order to make it easier for contributors to participate in Pipcook, some paths have been developed. If you want to get involved, you can follow it.

  • If you are going to browse source code only, goto GitHub.
  • If you are a rookie and no experience in contributing to any open source project, then we have organized good first issue for you, all of which are relatively simple tasks, easy to start with.
  • If you want to learn machine learning through contributing this project, you can try our good first model to help us do some model implementation and migration tasks (rest assured, you only need to complete the call to the Python ecosystem through Boa).
  • Otherwise, discussions on any of our issues are open to everyone, and you are welcome to contribute your ideas.

Submit a patch

Next, let ’s take a look at how to submit patches to Pipcook.

Requirements

  • macOS / Linux
  • Node.js >= 12

Download source

Clone the repository from GitHub:

  1. $ git clone git@github.com:alibaba/pipcook.git

Build from source

And install the requirements and build:

  1. $ npm install
  2. $ npm run build

We provide a way to use tuna mirror for downloading Python and packages:

  1. $ BOA_TUNA=1 npm install

Or you could specify your custom miniconda mirror and Python index page:

  1. $ export BOA_CONDA_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda # this is for miniconda
  2. $ export BOA_CONDA_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple # this is for pip
  3. $ npm install

Test

Run all the tests in the following

  1. $ npm test

And run tests for single specific package:

  1. $ ./node_modules/.bin/lerna run --scope <package_name>

Pipeline

  1. $ sh run_pipeline.sh <pipeline_name>

The pipeline_name is the name of the pipeline file under “test/pipelines”, such as:

  • “text-bayes-classification”
  • “mnist-image-classification”
  • “databinding-image-classification”

Push and create a pull request

After the local test is passed, you can push the code and create a pull request:

  1. $ git push git@github.com:<username>/pipcook.git <feature_branch>

Internal documentations

Plugin Specification

You can refer here for Plugin Specification.

We have defined a set of interfaces for each plugin. Each type of plugin must be implemented strictly according to the interfaces. The detailed information is as follows:

Dataset Specification

For data reading and processing involved in the development, please refer to our Dataset Specification.