# Information for the Apache Petri project
version: "1.1"

# The set of (approved) Mentors
mentors:
 - humbedooh
 - danielsh
 - wave
 - ke4qqq
 - gstein
 - rgardler
 - striker
 - jerenkrantz

# Current Petri Cultures
projects: []

# Cultures
cultures:
 buildstream:
  start: 2020/04/08
  end: 2022/09/21
  status: tlp
  mentors:
   - striker
   - jerenkrantz
   - ke4qqq
  name: BuildStream
  description: >
       BuildStream is a powerful and flexible software integration toolset.
       It supports multiple build-systems and can produce multiple outputs from the same project
       (e.g. debian packages, flatpak runtimes, and system images).
  website: https://www.buildstream.build
  mailinglists:
   development: dev@buildstream.apache.org
   private: private@buildstream.apache.org
   commits: commits@buildstream.apache.org
  repository: https://gitbox.apache.org/repos/asf?p=buildstream.git
  issues: GitHub
  wiki: none
  release: https://buildstream.build/install.html
  licensing:
   sga: yes
   icla: yes
   headers: yes
   license: yes
   notice: yes

# notify these followers before making breaking changes
followers:
 - discuss@petri.apache.org
 - dev@whimsical.apache.org
 - users@infra.apache.org
