# 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:
 - buildstream

# Cultures
cultures:
 buildstream:
  start: 2020/04/08
  status: current
  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: no
   license: no
   notice: no

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