1*40d553cfSPaul BeesleyContributing to Trusted Firmware-A 2*40d553cfSPaul Beesley================================== 3*40d553cfSPaul Beesley 4*40d553cfSPaul BeesleyGetting Started 5*40d553cfSPaul Beesley--------------- 6*40d553cfSPaul Beesley 7*40d553cfSPaul Beesley- Make sure you have a Github account and you are logged on 8*40d553cfSPaul Beesley `developer.trustedfirmware.org`_. 9*40d553cfSPaul Beesley- Create an `issue`_ for your work if one does not already exist. This gives 10*40d553cfSPaul Beesley everyone visibility of whether others are working on something similar. 11*40d553cfSPaul Beesley 12*40d553cfSPaul Beesley - If you intend to include Third Party IP in your contribution, please 13*40d553cfSPaul Beesley raise a separate `issue`_ for this and ensure that the changes that 14*40d553cfSPaul Beesley include Third Party IP are made on a separate topic branch. 15*40d553cfSPaul Beesley 16*40d553cfSPaul Beesley- Clone `arm-trusted-firmware-a`_ on your own machine as suggested on the 17*40d553cfSPaul Beesley `User Guide`_. 18*40d553cfSPaul Beesley- Create a local topic branch based on the `arm-trusted-firmware-a`_ ``master`` 19*40d553cfSPaul Beesley branch. 20*40d553cfSPaul Beesley 21*40d553cfSPaul BeesleyMaking Changes 22*40d553cfSPaul Beesley-------------- 23*40d553cfSPaul Beesley 24*40d553cfSPaul Beesley- Make commits of logical units. See these general `Git guidelines`_ for 25*40d553cfSPaul Beesley contributing to a project. 26*40d553cfSPaul Beesley- Follow the `Coding Guidelines`_. 27*40d553cfSPaul Beesley 28*40d553cfSPaul Beesley - Use the checkpatch.pl script provided with the Linux source tree. A 29*40d553cfSPaul Beesley Makefile target is provided for convenience (see the "Checking source code 30*40d553cfSPaul Beesley style" section in the `User Guide`_). 31*40d553cfSPaul Beesley 32*40d553cfSPaul Beesley- Keep the commits on topic. If you need to fix another bug or make another 33*40d553cfSPaul Beesley enhancement, please create a separate `issue`_ and address it on a separate 34*40d553cfSPaul Beesley topic branch. 35*40d553cfSPaul Beesley- Avoid long commit series. If you do have a long series, consider whether 36*40d553cfSPaul Beesley some commits should be squashed together or addressed in a separate topic. 37*40d553cfSPaul Beesley- Make sure your commit messages are in the proper format. If a commit fixes 38*40d553cfSPaul Beesley an `issue`_, include a reference. 39*40d553cfSPaul Beesley- Where appropriate, please update the documentation. 40*40d553cfSPaul Beesley 41*40d553cfSPaul Beesley - Consider whether the `User Guide`_, `Porting Guide`_, `Firmware Design`_ 42*40d553cfSPaul Beesley or other in-source documentation needs updating. 43*40d553cfSPaul Beesley - Ensure that each changed file has the correct copyright and license 44*40d553cfSPaul Beesley information. Files that entirely consist of contributions to this 45*40d553cfSPaul Beesley project should have a copyright notice and BSD-3-Clause SPDX license 46*40d553cfSPaul Beesley identifier of the form as shown in `license.rst`_. Files that contain 47*40d553cfSPaul Beesley changes to imported Third Party IP files should retain their original 48*40d553cfSPaul Beesley copyright and license notices. For significant contributions you may 49*40d553cfSPaul Beesley add your own copyright notice in following format: 50*40d553cfSPaul Beesley 51*40d553cfSPaul Beesley :: 52*40d553cfSPaul Beesley 53*40d553cfSPaul Beesley Portions copyright (c) [XXXX-]YYYY, <OWNER>. All rights reserved. 54*40d553cfSPaul Beesley 55*40d553cfSPaul Beesley where XXXX is the year of first contribution (if different to YYYY) and 56*40d553cfSPaul Beesley YYYY is the year of most recent contribution. <OWNER> is your name or 57*40d553cfSPaul Beesley your company name. 58*40d553cfSPaul Beesley - If you are submitting new files that you intend to be the technical 59*40d553cfSPaul Beesley sub-maintainer for (for example, a new platform port), then also update 60*40d553cfSPaul Beesley the `Maintainers`_ file. 61*40d553cfSPaul Beesley - For topics with multiple commits, you should make all documentation 62*40d553cfSPaul Beesley changes (and nothing else) in the last commit of the series. Otherwise, 63*40d553cfSPaul Beesley include the documentation changes within the single commit. 64*40d553cfSPaul Beesley 65*40d553cfSPaul Beesley- Please test your changes. As a minimum, ensure that Linux boots on the 66*40d553cfSPaul Beesley Foundation FVP. See `Running the software on FVP`_ for more information. For 67*40d553cfSPaul Beesley more extensive testing, consider running the `TF-A Tests`_ against your 68*40d553cfSPaul Beesley patches. 69*40d553cfSPaul Beesley 70*40d553cfSPaul BeesleySubmitting Changes 71*40d553cfSPaul Beesley------------------ 72*40d553cfSPaul Beesley 73*40d553cfSPaul Beesley- Ensure that each commit in the series has at least one ``Signed-off-by:`` 74*40d553cfSPaul Beesley line, using your real name and email address. The names in the 75*40d553cfSPaul Beesley ``Signed-off-by:`` and ``Author:`` lines must match. If anyone else 76*40d553cfSPaul Beesley contributes to the commit, they must also add their own ``Signed-off-by:`` 77*40d553cfSPaul Beesley line. By adding this line the contributor certifies the contribution is made 78*40d553cfSPaul Beesley under the terms of the `Developer Certificate of Origin (DCO)`_. 79*40d553cfSPaul Beesley 80*40d553cfSPaul Beesley More details may be found in the `Gerrit Signed-off-by Lines guidelines`_. 81*40d553cfSPaul Beesley 82*40d553cfSPaul Beesley- Ensure that each commit also has a unique ``Change-Id:`` line. If you have 83*40d553cfSPaul Beesley cloned the repository with the "`Clone with commit-msg hook`" clone method 84*40d553cfSPaul Beesley (as advised on the `User Guide`_), this should already be the case. 85*40d553cfSPaul Beesley 86*40d553cfSPaul Beesley More details may be found in the `Gerrit Change-Ids documentation`_. 87*40d553cfSPaul Beesley 88*40d553cfSPaul Beesley- Submit your changes for review at https://review.trustedfirmware.org 89*40d553cfSPaul Beesley targeting the ``integration`` branch. 90*40d553cfSPaul Beesley 91*40d553cfSPaul Beesley - The changes will then undergo further review and testing by the 92*40d553cfSPaul Beesley `Maintainers`_. Any review comments will be made directly on your patch. 93*40d553cfSPaul Beesley This may require you to do some rework. 94*40d553cfSPaul Beesley 95*40d553cfSPaul Beesley Refer to the `Gerrit Uploading Changes documentation`_ for more details. 96*40d553cfSPaul Beesley 97*40d553cfSPaul Beesley- When the changes are accepted, the `Maintainers`_ will integrate them. 98*40d553cfSPaul Beesley 99*40d553cfSPaul Beesley - Typically, the `Maintainers`_ will merge the changes into the 100*40d553cfSPaul Beesley ``integration`` branch. 101*40d553cfSPaul Beesley - If the changes are not based on a sufficiently-recent commit, or if they 102*40d553cfSPaul Beesley cannot be automatically rebased, then the `Maintainers`_ may rebase it on 103*40d553cfSPaul Beesley the ``master`` branch or ask you to do so. 104*40d553cfSPaul Beesley - After final integration testing, the changes will make their way into the 105*40d553cfSPaul Beesley ``master`` branch. If a problem is found during integration, the merge 106*40d553cfSPaul Beesley commit will be removed from the ``integration`` branch and the 107*40d553cfSPaul Beesley `Maintainers`_ will ask you to create a new patch set to resolve the 108*40d553cfSPaul Beesley problem. 109*40d553cfSPaul Beesley 110*40d553cfSPaul BeesleyBinary Components 111*40d553cfSPaul Beesley----------------- 112*40d553cfSPaul Beesley 113*40d553cfSPaul Beesley- Platforms may depend on binary components submitted to the `Trusted Firmware 114*40d553cfSPaul Beesley binary repository`_ if they require code that the contributor is unable or 115*40d553cfSPaul Beesley unwilling to open-source. This should be used as a rare exception. 116*40d553cfSPaul Beesley- All binary components must follow the contribution guidelines (in particular 117*40d553cfSPaul Beesley licensing rules) outlined in the `readme.rst <tf-binaries-readme_>`_ file of 118*40d553cfSPaul Beesley the binary repository. 119*40d553cfSPaul Beesley- Binary components must be restricted to only the specific functionality that 120*40d553cfSPaul Beesley cannot be open-sourced and must be linked into a larger open-source platform 121*40d553cfSPaul Beesley port. The majority of the platform port must still be implemented in open 122*40d553cfSPaul Beesley source. Platform ports that are merely a thin wrapper around a binary 123*40d553cfSPaul Beesley component that contains all the actual code will not be accepted. 124*40d553cfSPaul Beesley- Only platform port code (i.e. in the ``plat/<vendor>`` directory) may rely on 125*40d553cfSPaul Beesley binary components. Generic code must always be fully open-source. 126*40d553cfSPaul Beesley 127*40d553cfSPaul Beesley-------------- 128*40d553cfSPaul Beesley 129*40d553cfSPaul Beesley*Copyright (c) 2013-2019, Arm Limited and Contributors. All rights reserved.* 130*40d553cfSPaul Beesley 131*40d553cfSPaul Beesley.. _developer.trustedfirmware.org: https://developer.trustedfirmware.org 132*40d553cfSPaul Beesley.. _issue: https://developer.trustedfirmware.org/project/board/1/ 133*40d553cfSPaul Beesley.. _arm-trusted-firmware-a: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git 134*40d553cfSPaul Beesley.. _Git guidelines: http://git-scm.com/book/ch5-2.html 135*40d553cfSPaul Beesley.. _Coding Guidelines: ./docs/coding-guidelines.rst 136*40d553cfSPaul Beesley.. _User Guide: ./docs/user-guide.rst 137*40d553cfSPaul Beesley.. _Porting Guide: ./docs/porting-guide.rst 138*40d553cfSPaul Beesley.. _Firmware Design: ./docs/firmware-design.rst 139*40d553cfSPaul Beesley.. _license.rst: ./license.rst 140*40d553cfSPaul Beesley.. _Acknowledgements: ./acknowledgements.rst 141*40d553cfSPaul Beesley.. _Maintainers: ./maintainers.rst 142*40d553cfSPaul Beesley.. _Running the software on FVP: ./docs/user-guide.rst#user-content-running-the-software-on-fvp 143*40d553cfSPaul Beesley.. _Developer Certificate of Origin (DCO): ./dco.txt 144*40d553cfSPaul Beesley.. _Gerrit Uploading Changes documentation: https://review.trustedfirmware.org/Documentation/user-upload.html 145*40d553cfSPaul Beesley.. _Gerrit Signed-off-by Lines guidelines: https://review.trustedfirmware.org/Documentation/user-signedoffby.html 146*40d553cfSPaul Beesley.. _Gerrit Change-Ids documentation: https://review.trustedfirmware.org/Documentation/user-changeid.html 147*40d553cfSPaul Beesley.. _TF-A Tests: https://git.trustedfirmware.org/TF-A/tf-a-tests.git/about/ 148*40d553cfSPaul Beesley.. _Trusted Firmware binary repository: https://review.trustedfirmware.org/admin/repos/tf-binaries 149*40d553cfSPaul Beesley.. _tf-binaries-readme: https://git.trustedfirmware.org/tf-binaries.git/tree/readme.rst 150