# Below lists the current bmcweb maintainers.  bmcweb is used in a number of
# different contexts, and is one of the few nearly-universally used core
# components in OpenBMC.  As such, given the severe consequences of mistakes
# made within the codebase, maintainers on this list are expected to:
# - Have a solid understanding of the bmcweb core code, and how it's used.
#
# - Have access to at least one upstream platform to test relevant patchsets.
#
# - Help to manage the orderly merging of patchsets onto master through review.
# It is expected that bmcweb maintainers participate on a majority of code
# reviews, and although maintainers may work with each other to segment the
# responsibilities into sub-parts the codebase, it is expected that maintainers
# should be capable of reviewing all code in all modules if the need arises.
#
# - Provide help in testing and triage of cross-platform issues that arise as a
# result of merging new features.
#
# - Have an in-depth understanding of the Redfish standard, its constraints in
# how it interacts with OpenBMC, and how the bmcweb implementation compares to
# other Redfish instances and how changes effect compatibility with other
# Redfish services compatibility.
#
# - Be capable of, and have a track record of posing questions, clarifications,
# and specification changes to [DMTF](https://www.dmtf.org/standards/redfish)
# for resources implemented within the Redfish standard.  bmcweb maintainers
# regularly attend the Redfish specification meetings to have a handle on
# "intent" behind Redfish APIs.  In many cases, the role of the maintainer
# requires knowing when a Redfish resource is underspecified, and direct people
# to the standard before their changes can be accepted.
#
# - Have an understanding of, and track record of executing the various test
# harnesses that bmcweb needs to pass, listed in CLIENTS.md, and at least a
# rudimentary understanding of their requirements, and limitations.
#
# - Have an understanding of DBus and the specific implementations of sdbusplus
# APIs that bmcweb uses, and their limitations in versioning, consistency, and
# general implementation completeness.
#
# - Join and answer questions of the #bmcweb-and-redfish channel within
# discord.
#
# - Join and answer architecture queries posed to the mailing list concerning
# bmcweb.
#
# - Be capable of responding to CVE queries forwarded from the
# [openbmc-security-response-team]
# (https://github.com/openbmc/docs/blob/master/security/obmc-security-response-team.md).
# Considering that in most implementations of the OpenBMC security model,
# bmcweb is the primary attacker/client facing application on the network, it
# is expected that a number of potential CVEs will be posted, for which bmcweb
# forms a component of the alleged attack.  Maintainers should be prepared to
# respond to such requests in the timeframe required by the CVE process, and
# ideally should have a track record of doing it in the past.
#
# - Understand webui-vue, that bmcweb can optionally host, its use cases, and
# how they differ from "normal" client-based use cases, as well as an
# understanding of hosting web services in general.
#
# If you believe you meet the qualifications for the above, please open a
# patchset, adding your name to the list below, documenting some evidence of
# the above requirements being met, and the existing maintainers will happily
# add you to the list.

owners:
- ed@tanous.net
- gunnar@gmills.xyz


# The below specifies a list of reviewers and interested parties that should be
# included on code reviews to stay informed of progress.

reviewers:
- nanzhoumails@gmail.com

matchers:
# unit tests
- suffix: _test.cpp
  owners:
      - nanzhoumails@gmail.com

# Redfish schemas
- exact: redfish-core/include/query.hpp
  owners:
      - nanzhoumails@gmail.com
- exact: redfish-core/include/utils/query_param.hpp
  owners:
      - nanzhoumails@gmail.com
- exact: redfish-core/lib/certificate_service.hpp
  owners:
      - nanzhoumails@gmail.com
- exact: redfish-core/lib/log_services.hpp
  owners:
      - nanzhoumails@gmail.com
- exact: redfish-core/lib/memory.hpp
  owners:
      - nanzhoumails@gmail.com
- exact: redfish-core/lib/sensors.hpp
  owners:
      - nanzhoumails@gmail.com
