Search…
Development guide

Overview

This guide is targeted at developers looking to contribute to Feast:
Learn How the Feast Contributing Process works.

Project Structure

Feast is composed of multiple components distributed into multiple repositories:
Repository
Description
Component(s)
Hosts all required code to run Feast. This includes the Feast Python SDK and Protobuf definitions. For legacy reasons this repository still contains Terraform config and a Go Client for Feast.
    Python SDK / CLI
    Protobuf APIs
    Documentation
    Go Client
    Terraform
Java-specific Feast components. Includes the Feast Core Registry, Feast Serving for serving online feature values, and the Feast Java Client for retrieving feature values.
    Core
    Serving
    Java Client
Feast Spark SDK & Feast Job Service for launching ingestion jobs and for building training datasets with Spark
    Spark SDK
    Job Service
Helm Chart for deploying Feast on Kubernetes & Spark.
    Helm Chart

Making a Pull Request

See also the CONTRIBUTING.md in the corresponding GitHub repository (e.g. main repo doc)

Incorporating upstream changes from master

Our preference is the use of git rebase instead of git merge : git pull -r

Signing commits

Commits have to be signed before they are allowed to be merged into the Feast codebase:
1
# Include -s flag to signoff
2
git commit -s -m "My first commit"
Copied!

Good practices to keep in mind

    Fill in the description based on the default template configured when you first open the PR
      What this PR does/why we need it
      Which issue(s) this PR fixes
      Does this PR introduce a user-facing change
    Include kind label when opening the PR
    Add WIP: to PR name if more work needs to be done prior to review
    Avoid force-pushing as it makes reviewing difficult
Managing CI-test failures
    GitHub runner tests
      Click checks tab to analyse failed tests
    Prow tests

Feast Data Storage Format

Feast data storage contracts are documented in the following locations:

Feast Protobuf API

Feast Protobuf API defines the common API used by Feast's Components:
    Feast Protobuf API specifications are written in proto3 in the Main Feast Repository.
    Changes to the API should be proposed via a GitHub Issue for discussion first.

Generating Language Bindings

The language specific bindings have to be regenerated when changes are made to the Feast Protobuf API:
Repository
Language
Regenerating Language Bindings
Python
Run make compile-protos-python to generate bindings
Golang
Run make compile-protos-go to generate bindings
Java
No action required: bindings are generated automatically during compilation.
Last modified 10d ago