blob: bdfb6d6aad334787cf36532b6756e3e093a4c380 [file] [log] [blame]
Paul Beesleyfc9ee362019-03-07 15:47:15 +00001Contributor's Guide
2===================
Douglas Raillardd7c21b72017-06-28 15:23:03 +01003
4Getting Started
5---------------
6
Sandrine Bailleuxd3147342020-05-12 10:36:05 +02007- Make sure you have a Github account and you are logged on both
8 `developer.trustedfirmware.org`_ and `review.trustedfirmware.org`_.
Douglas Raillardd7c21b72017-06-28 15:23:03 +01009
Sandrine Bailleux6ef77ce2020-08-03 10:27:19 +020010- If you plan to contribute a major piece of work, it is usually a good idea to
11 start a discussion around it on the mailing list. This gives everyone
12 visibility of what is coming up, you might learn that somebody else is
13 already working on something similar or the community might be able to
14 provide some early input to help shaping the design of the feature.
15
16 If you intend to include Third Party IP in your contribution, please mention
17 it explicitly in the email thread and ensure that the changes that include
18 Third Party IP are made in a separate patch (or patch series).
Douglas Raillardd7c21b72017-06-28 15:23:03 +010019
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +010020- Clone `Trusted Firmware-A`_ on your own machine as described in
21 :ref:`prerequisites_get_source`.
Sandrine Bailleux75804e52020-08-12 11:29:46 +020022
John Tsichritzis2fd3d922019-05-28 13:13:39 +010023- Create a local topic branch based on the `Trusted Firmware-A`_ ``master``
Douglas Raillardd7c21b72017-06-28 15:23:03 +010024 branch.
25
26Making Changes
27--------------
28
29- Make commits of logical units. See these general `Git guidelines`_ for
30 contributing to a project.
Sandrine Bailleux75804e52020-08-12 11:29:46 +020031
Paul Beesley07f0a312019-05-16 13:33:18 +010032- Follow the :ref:`Coding Style` and :ref:`Coding Guidelines`.
Douglas Raillardd7c21b72017-06-28 15:23:03 +010033
34 - Use the checkpatch.pl script provided with the Linux source tree. A
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +010035 Makefile target is provided for convenience.
Douglas Raillardd7c21b72017-06-28 15:23:03 +010036
37- Keep the commits on topic. If you need to fix another bug or make another
Sandrine Bailleux6ef77ce2020-08-03 10:27:19 +020038 enhancement, please address it on a separate topic branch.
Sandrine Bailleux75804e52020-08-12 11:29:46 +020039
Douglas Raillardd7c21b72017-06-28 15:23:03 +010040- Avoid long commit series. If you do have a long series, consider whether
41 some commits should be squashed together or addressed in a separate topic.
Sandrine Bailleux75804e52020-08-12 11:29:46 +020042
Douglas Raillardd7c21b72017-06-28 15:23:03 +010043- Make sure your commit messages are in the proper format. If a commit fixes
Louis Mayencourt72ef3d42019-03-22 11:47:22 +000044 an `issue`_, include a reference.
Douglas Raillardd7c21b72017-06-28 15:23:03 +010045
Sandrine Bailleux75804e52020-08-12 11:29:46 +020046- Where appropriate, please update the documentation.
Douglas Raillardd7c21b72017-06-28 15:23:03 +010047
Sandrine Bailleux75804e52020-08-12 11:29:46 +020048 - Consider whether the :ref:`Porting Guide`, :ref:`Firmware Design` document
49 or other in-source documentation needs updating.
Douglas Raillardd7c21b72017-06-28 15:23:03 +010050
Sandrine Bailleuxd3147342020-05-12 10:36:05 +020051 - If you are submitting new files that you intend to be the code owner for
52 (for example, a new platform port), then also update the
53 :ref:`code owners` file.
Sandrine Bailleux75804e52020-08-12 11:29:46 +020054
55 - For topics with multiple commits, you should make all documentation changes
56 (and nothing else) in the last commit of the series. Otherwise, include
57 the documentation changes within the single commit.
58
59- Ensure that each changed file has the correct copyright and license
60 information. Files that entirely consist of contributions to this project
61 should have a copyright notice and BSD-3-Clause SPDX license identifier of
62 the form as shown in :ref:`license`. Files that contain changes to imported
63 Third Party IP files should retain their original copyright and license
64 notices.
65
66 For significant contributions you may add your own copyright notice in the
67 following format:
68
69 ::
70
71 Portions copyright (c) [XXXX-]YYYY, <OWNER>. All rights reserved.
72
73 where XXXX is the year of first contribution (if different to YYYY) and YYYY
74 is the year of most recent contribution. <OWNER> is your name or your company
75 name.
Douglas Raillardd7c21b72017-06-28 15:23:03 +010076
Louis Mayencourt72ef3d42019-03-22 11:47:22 +000077- Please test your changes. As a minimum, ensure that Linux boots on the
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +010078 Foundation FVP. See :ref:`Arm Fixed Virtual Platforms (FVP)` for more
79 information. For more extensive testing, consider running the `TF-A Tests`_
80 against your patches.
Douglas Raillardd7c21b72017-06-28 15:23:03 +010081
82Submitting Changes
83------------------
84
85- Ensure that each commit in the series has at least one ``Signed-off-by:``
86 line, using your real name and email address. The names in the
Louis Mayencourt72ef3d42019-03-22 11:47:22 +000087 ``Signed-off-by:`` and ``Author:`` lines must match. If anyone else
88 contributes to the commit, they must also add their own ``Signed-off-by:``
89 line. By adding this line the contributor certifies the contribution is made
Paul Beesleyf8640672019-04-12 14:19:42 +010090 under the terms of the
91 :download:`Developer Certificate of Origin <../../dco.txt>`.
Louis Mayencourt72ef3d42019-03-22 11:47:22 +000092
93 More details may be found in the `Gerrit Signed-off-by Lines guidelines`_.
94
95- Ensure that each commit also has a unique ``Change-Id:`` line. If you have
96 cloned the repository with the "`Clone with commit-msg hook`" clone method
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +010097 (following the :ref:`Prerequisites` document), this should already be the
98 case.
Douglas Raillardd7c21b72017-06-28 15:23:03 +010099
Louis Mayencourt72ef3d42019-03-22 11:47:22 +0000100 More details may be found in the `Gerrit Change-Ids documentation`_.
101
102- Submit your changes for review at https://review.trustedfirmware.org
103 targeting the ``integration`` branch.
104
105 - The changes will then undergo further review and testing by the
Sandrine Bailleuxd3147342020-05-12 10:36:05 +0200106 :ref:`code owners` and :ref:`maintainers`. Any review comments will be
107 made directly on your patch. This may require you to do some rework. For
108 controversial changes, the discussion might be moved to the `TF-A mailing
109 list`_ to involve more of the community.
Louis Mayencourt72ef3d42019-03-22 11:47:22 +0000110
111 Refer to the `Gerrit Uploading Changes documentation`_ for more details.
Douglas Raillardd7c21b72017-06-28 15:23:03 +0100112
Paul Beesleyf8640672019-04-12 14:19:42 +0100113- When the changes are accepted, the :ref:`maintainers` will integrate them.
Douglas Raillardd7c21b72017-06-28 15:23:03 +0100114
Paul Beesleyf8640672019-04-12 14:19:42 +0100115 - Typically, the :ref:`maintainers` will merge the changes into the
Louis Mayencourt72ef3d42019-03-22 11:47:22 +0000116 ``integration`` branch.
117 - If the changes are not based on a sufficiently-recent commit, or if they
Paul Beesleyf8640672019-04-12 14:19:42 +0100118 cannot be automatically rebased, then the :ref:`maintainers` may rebase it
Sandrine Bailleuxd3147342020-05-12 10:36:05 +0200119 on the ``integration`` branch or ask you to do so.
Louis Mayencourt72ef3d42019-03-22 11:47:22 +0000120 - After final integration testing, the changes will make their way into the
Sandrine Bailleuxd3147342020-05-12 10:36:05 +0200121 ``master`` branch. If a problem is found during integration, the
122 :ref:`maintainers` will request your help to solve the issue. They may
123 revert your patches and ask you to resubmit a reworked version of them or
124 they may ask you to provide a fix-up patch.
Douglas Raillardd7c21b72017-06-28 15:23:03 +0100125
Julius Wernercece91a2019-04-18 16:47:46 -0700126Binary Components
127-----------------
128
129- Platforms may depend on binary components submitted to the `Trusted Firmware
130 binary repository`_ if they require code that the contributor is unable or
131 unwilling to open-source. This should be used as a rare exception.
132- All binary components must follow the contribution guidelines (in particular
133 licensing rules) outlined in the `readme.rst <tf-binaries-readme_>`_ file of
134 the binary repository.
135- Binary components must be restricted to only the specific functionality that
136 cannot be open-sourced and must be linked into a larger open-source platform
137 port. The majority of the platform port must still be implemented in open
138 source. Platform ports that are merely a thin wrapper around a binary
139 component that contains all the actual code will not be accepted.
140- Only platform port code (i.e. in the ``plat/<vendor>`` directory) may rely on
141 binary components. Generic code must always be fully open-source.
142
Douglas Raillardd7c21b72017-06-28 15:23:03 +0100143--------------
144
Paul Beesley07f0a312019-05-16 13:33:18 +0100145*Copyright (c) 2013-2020, Arm Limited and Contributors. All rights reserved.*
Douglas Raillardd7c21b72017-06-28 15:23:03 +0100146
Louis Mayencourt72ef3d42019-03-22 11:47:22 +0000147.. _developer.trustedfirmware.org: https://developer.trustedfirmware.org
Sandrine Bailleuxd3147342020-05-12 10:36:05 +0200148.. _review.trustedfirmware.org: https://review.trustedfirmware.org
Louis Mayencourt72ef3d42019-03-22 11:47:22 +0000149.. _issue: https://developer.trustedfirmware.org/project/board/1/
John Tsichritzis2fd3d922019-05-28 13:13:39 +0100150.. _Trusted Firmware-A: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
Douglas Raillardd7c21b72017-06-28 15:23:03 +0100151.. _Git guidelines: http://git-scm.com/book/ch5-2.html
Louis Mayencourt72ef3d42019-03-22 11:47:22 +0000152.. _Gerrit Uploading Changes documentation: https://review.trustedfirmware.org/Documentation/user-upload.html
153.. _Gerrit Signed-off-by Lines guidelines: https://review.trustedfirmware.org/Documentation/user-signedoffby.html
154.. _Gerrit Change-Ids documentation: https://review.trustedfirmware.org/Documentation/user-changeid.html
Sandrine Bailleuxd3147342020-05-12 10:36:05 +0200155.. _TF-A Tests: https://trustedfirmware-a-tests.readthedocs.io
Julius Wernercece91a2019-04-18 16:47:46 -0700156.. _Trusted Firmware binary repository: https://review.trustedfirmware.org/admin/repos/tf-binaries
157.. _tf-binaries-readme: https://git.trustedfirmware.org/tf-binaries.git/tree/readme.rst
Sandrine Bailleuxd3147342020-05-12 10:36:05 +0200158.. _TF-A mailing list: https://lists.trustedfirmware.org/mailman/listinfo/tf-a