All pages
Powered by GitBook
1 of 1

Loading...

Development guide

Overview

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

Making a Pull Request

  • Feast Data Storage Format

  • Feast Protobuf API

  • 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

    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

    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:

    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

      • Visit to analyse failed tests

    Feast Data Storage Format

    Feast data storage contracts are documented in the following locations:

    • Feast Offline Storage Format: Used by BigQuery, Snowflake (Future), Redshift (Future).

    • Feast Online Storage Format: Used by Redis, Google Datastore.

    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

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

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

    Go Client
  • Terraform

  • 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

    Run make compile-protos-go to generate bindings

    Java

    No action required: bindings are generated automatically during compilation.

    Prow status page
    Main Feast Repository
    Feast Java
    Main Feast Repository
    Main Feast Repository
    main repo doc
    Feast Spark
    Feast Helm Chart
    Feast Java