Contributing Process

Contributions to the TF-M project need to follow the process below.


Please contact maintainers for any questions.

  • Subscribe to TF-M development if not subscribed already.

  • Refer to the Roadmap or send a mail to the to check if this work is already planned/progresses elsewhere.

  • Create a task in Phabricator, put as many details as possible in the description. Add ‘Trusted Firmware M’ in the ‘Tags’ field.

  • For non-trivial changes, need to follow the design proposal process Design Proposal Guideline for the TF-M project.

  • After the design has been accepted by the maintainer(s), a corresponding patch should be posted; follow guidelines below:

    • Clone the TF-M code on your own machine from TF-M git repository.

    • Follow the TF-M getting started, Build Instructions and Coding Guide for the TF-M project.

    • Make your changes in logical chunks to help reviewers. Each commit should be a separate review and either work properly or be squashed after the review and before merging.

    • Update documentation in docs/ folder if needed.

    • Test your changes and add details to the commit description.

    • The code is accepted under DCO, Developer Certificate of Origin, so you must add following fields to your commit description:

      Author: Full Name <email address>
      Signed-off-by: Full Name <email address>


      Sign off authority needs to adhere to the [DCO](./dco.txt) rules.

    • You must add a Change-Id <> to the commit message, which can be generated any way you like (e.g. from the SHA of the commit), or use the commit hook.

    • Create a user in the TF-M Gerrit <>, then add SSH keys or HTTP credentials <>.

    • Submit your patch for review.

      git push ssh:// HEAD:refs/for/master


      git push HEAD:refs/for/master
  • Add relevant maintainers for reviewing the patch.

  • You may be asked to provide further details or make additional changes.

  • You can discuss further with maintainer(s) by directly over email if necessary.

  • Once the change is approved by maintainers, the patch will be merged by the maintainer.

  • Mark the task as ‘resolved’ after patch is merged.

Copyright (c) 2017-2022, Arm Limited. All rights reserved.