LogoLogo
v0.11-branch
v0.11-branch
  • Introduction
  • Quickstart
  • Getting started
    • Install Feast
    • Create a feature repository
    • Deploy a feature store
    • Build a training dataset
    • Load data into the online store
    • Read features from the online store
  • Community
  • Roadmap
  • Changelog
  • Concepts
    • Overview
    • Feature view
    • Data model
    • Online store
    • Offline store
    • Provider
    • Architecture
  • Reference
    • Data sources
      • BigQuery
      • File
    • Offline stores
      • File
      • BigQuery
    • Online stores
      • SQLite
      • Redis
      • Datastore
    • Providers
      • Local
      • Google Cloud Platform
    • Feature repository
      • feature_store.yaml
      • .feastignore
    • Feast CLI reference
    • Python API reference
    • Usage
  • Feast on Kubernetes
    • Getting started
      • Install Feast
        • Docker Compose
        • Kubernetes (with Helm)
        • Amazon EKS (with Terraform)
        • Azure AKS (with Helm)
        • Azure AKS (with Terraform)
        • Google Cloud GKE (with Terraform)
        • IBM Cloud Kubernetes Service (IKS) and Red Hat OpenShift (with Kustomize)
      • Connect to Feast
        • Python SDK
        • Feast CLI
      • Learn Feast
    • Concepts
      • Overview
      • Architecture
      • Entities
      • Sources
      • Feature Tables
      • Stores
    • Tutorials
      • Minimal Ride Hailing Example
    • User guide
      • Overview
      • Getting online features
      • Getting training features
      • Define and ingest features
      • Extending Feast
    • Reference
      • Configuration Reference
      • Feast and Spark
      • Metrics Reference
      • Limitations
      • API Reference
        • Go SDK
        • Java SDK
        • Core gRPC API
        • Python SDK
        • Serving gRPC API
        • gRPC Types
    • Advanced
      • Troubleshooting
      • Metrics
      • Audit Logging
      • Security
      • Upgrading Feast
  • Contributing
    • Contribution process
    • Development guide
    • Versioning policy
    • Release process
Powered by GitBook
On this page
  • Overview
  • Project Structure
  • Making a Pull Request
  • Incorporating upstream changes from master
  • Signing commits
  • Good practices to keep in mind
  • Feast Data Storage Format
  • Feast Protobuf API
  • Generating Language Bindings

Was this helpful?

Edit on Git
Export as PDF
  1. Contributing

Development guide

PreviousContribution processNextVersioning policy

Last updated 3 years ago

Was this helpful?

Overview

This guide is targeted at developers looking to contribute to Feast:

Learn How the Feast works.

Project Structure

Feast is composed of 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

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:

# Include -s flag to signoff
git commit -s -m "My first commit"

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:

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.

Visit to analyse failed tests

: Used by BigQuery, Snowflake (Future), Redshift (Future).

: Used by Redis, Google Datastore.

Feast Protobuf API specifications are written in in the Main Feast Repository.

Changes to the API should be proposed via a for discussion first.

Prow status page
Feast Offline Storage Format
Feast Online Storage Format
proto3
GitHub Issue
Contributing Process
multiple components
Project Structure
Making a Pull Request
Feast Data Storage Format
Feast Protobuf API
Main Feast Repository
Feast Java
Feast Spark
Feast Helm Chart
Main Feast Repository
Main Feast Repository
Feast Java