# OpenTitan Technical Committee

The OpenTitan Technical Committee is part of the [OpenTitan governance structure](./README.md) and the definitive description of its operations and responsibilities are stated in the [OpenTitan Technical Charter](https://static.opentitan.org/technical-charter.pdf).
Key responsibilities defined in that document include:
* Oversight of the [RFC process](./rfc_process.md), including voting to approve, reject, postpone or revise RFCs.
* Creating [Commit Escalation Guidelines](./committers.md) setting out when Committers should escalate a particular Commit to the TC (e.g. for cross-cutting changes), and when Committers should recommend a design rationale write-up or RFC for wider feedback.
* Maintaining the list of [committers](./committers.md).

Expectations of Technical Committee members include the following:
* Be active participants in development discussions within the OpenTitan project, beyond just Technical Committee meetings.
* Consider comments and feedback that have been made on proposals during the project-wide review process and ensure any concerns are adequately considered and addressed.
* Ensure that feedback has been sought from all relevant stakeholders, and appropriate effort has been made to find consensus within the OpenTitan contributor community.
* Put aside sufficient time on a week-by-week basis to active proposals and give feedback.
* Act in the best interests of the OpenTitan project.
* Collaborate to deliver on the responsibilities of the Technical Committee (see above).
* Proactively seek to identify contributors who should be nominated for committer status.

## Membership
The OpenTitan Technical Committee membership is:
* Michael Schaffner (chair)
* Richard Bohn
* Cyril Guyot
* Felix Miller
* Dominic Rizzo (observer)
* Alphan Ulusoy
* Michael Munday
* Rupert Swarbrick
* Michael Tempelmeier
* Neeraj Upasani
* Nir Tasher
* Arnon Sharlin
* Sivakumar
