LogoLogo
v0.12-branch
v0.12-branch
  • Introduction
  • Community
  • Roadmap
  • Changelog
  • Getting started
    • Quickstart
    • Concepts
      • Overview
      • Data source
      • Entity
      • Feature view
      • Feature service
      • Feature retrieval
    • Architecture
      • Overview
      • Feature repository
      • Registry
      • Offline store
      • Online store
      • Provider
    • FAQ
  • Tutorials
    • Overview
    • Driver ranking
    • Fraud detection on GCP
    • Real-time credit scoring on AWS
  • How-to Guides
    • Running Feast with GCP/AWS
      • 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
    • Running Feast in production
    • Upgrading from Feast 0.9
    • Adding a custom provider
    • Adding a new online store
    • Adding a new offline store
  • Reference
    • Data sources
      • File
      • BigQuery
      • Redshift
    • Offline stores
      • File
      • BigQuery
      • Redshift
    • Online stores
      • SQLite
      • Redis
      • Datastore
      • DynamoDB
    • Providers
      • Local
      • Google Cloud Platform
      • Amazon Web Services
    • Feature repository
      • feature_store.yaml
      • .feastignore
    • Feast CLI reference
    • Python API reference
    • Usage
  • Project
    • Contribution process
    • Development guide
    • Versioning policy
    • Release process
    • Feast 0.9 vs Feast 0.10+
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. Project

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.

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

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.

main repo doc
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