xref: /rk3399_ARM-atf/docs/process/contributing.rst (revision 40d553cfde38d4f68449c62967cd1ce0d6478750)
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