# This file should be kept up to date with the list of maintainers responsible
# for the different subdirectories within BCC. One of these people SHOULD
# review code that touches the respective areas, and MUST review it if the
# change is substantial or API-breaking.

# see https://help.github.com/articles/about-codeowners/ for syntax

# Miscellaneous
* @drzaeus77 @goldshtn @yonghong-song @4ast @brendangregg @davemarchevsky

# Documentation
/docs/ @brendangregg @goldshtn @davemarchevsky
/man/ @brendangregg @goldshtn @davemarchevsky

# Tools
/tools/ @brendangregg @goldshtn @davemarchevsky

# Compiler, C API
/src/cc/ @drzaeus77 @yonghong-song @4ast @davemarchevsky

# Python API
/src/python/ @drzaeus77 @goldshtn @davemarchevsky

# Tests
/tests/ @drzaeus77 @yonghong-song @davemarchevsky
