blob: bdfb6d6aad334787cf36532b6756e3e093a4c380 [file] [log] [blame]
Paul Beesley8aa05052019-03-07 15:47:15 +00001Contributor's Guide
2===================
Douglas Raillard6f625742017-06-28 15:23:03 +01003
4Getting Started
5---------------
6
Sandrine Bailleux3d28b0a2020-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 Raillard6f625742017-06-28 15:23:03 +01009
Sandrine Bailleuxa88b3c22020-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 Raillard6f625742017-06-28 15:23:03 +010019
Paul Beesley43f35ef2019-05-29 13:59:40 +010020- Clone `Trusted Firmware-A`_ on your own machine as described in
21 :ref:`prerequisites_get_source`.
Sandrine Bailleuxe256cc62020-08-12 11:29:46 +020022
John Tsichritzisf6ad51c2019-05-28 13:13:39 +010023- Create a local topic branch based on the `Trusted Firmware-A`_ ``master``
Douglas Raillard6f625742017-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 Bailleuxe256cc62020-08-12 11:29:46 +020031
Paul Beesleye63f5d12019-05-16 13:33:18 +010032- Follow the :ref:`Coding Style` and :ref:`Coding Guidelines`.
Douglas Raillard6f625742017-06-28 15:23:03 +010033
34 - Use the checkpatch.pl script provided with the Linux source tree. A
Paul Beesley43f35ef2019-05-29 13:59:40 +010035 Makefile target is provided for convenience.
Douglas Raillard6f625742017-06-28 15:23:03 +010036
37- Keep the commits on topic. If you need to fix another bug or make another
Sandrine Bailleuxa88b3c22020-08-03 10:27:19 +020038 enhancement, please address it on a separate topic branch.
Sandrine Bailleuxe256cc62020-08-12 11:29:46 +020039
Douglas Raillard6f625742017-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 Bailleuxe256cc62020-08-12 11:29:46 +020042
Douglas Raillard6f625742017-06-28 15:23:03 +010043- Make sure your commit messages are in the proper format. If a commit fixes
Louis Mayencourt63fdda22019-03-22 11:47:22 +000044 an `issue`_, include a reference.
Sandrine Bailleuxe256cc62020-08-12 11:29:46 +020045
Douglas Raillard6f625742017-06-28 15:23:03 +010046- Where appropriate, please update the documentation.
47
Sandrine Bailleuxe256cc62020-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 Raillard6f625742017-06-28 15:23:03 +010050
Sandrine Bailleux3d28b0a2020-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 Bailleuxe256cc62020-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 Raillard6f625742017-06-28 15:23:03 +010076
Louis Mayencourt63fdda22019-03-22 11:47:22 +000077- Please test your changes. As a minimum, ensure that Linux boots on the
Paul Beesley43f35ef2019-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 Raillard6f625742017-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 Mayencourt63fdda22019-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 Beesley34760952019-04-12 14:19:42 +010090 under the terms of the
91 :download:`Developer Certificate of Origin <../../dco.txt>`.
Douglas Raillard6f625742017-06-28 15:23:03 +010092
Louis Mayencourt63fdda22019-03-22 11:47:22 +000093 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 Beesley43f35ef2019-05-29 13:59:40 +010097 (following the :ref:`Prerequisites` document), this should already be the
98 case.
Louis Mayencourt63fdda22019-03-22 11:47:22 +000099
100 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 Bailleux3d28b0a2020-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 Mayencourt63fdda22019-03-22 11:47:22 +0000110
111 Refer to the `Gerrit Uploading Changes documentation`_ for more details.
Douglas Raillard6f625742017-06-28 15:23:03 +0100112
Paul Beesley34760952019-04-12 14:19:42 +0100113- When the changes are accepted, the :ref:`maintainers` will integrate them.
Douglas Raillard6f625742017-06-28 15:23:03 +0100114
Paul Beesley34760952019-04-12 14:19:42 +0100115 - Typically, the :ref:`maintainers` will merge the changes into the
Louis Mayencourt63fdda22019-03-22 11:47:22 +0000116 ``integration`` branch.
117 - If the changes are not based on a sufficiently-recent commit, or if they
Paul Beesley34760952019-04-12 14:19:42 +0100118 cannot be automatically rebased, then the :ref:`maintainers` may rebase it
Sandrine Bailleux3d28b0a2020-05-12 10:36:05 +0200119 on the ``integration`` branch or ask you to do so.
Louis Mayencourt63fdda22019-03-22 11:47:22 +0000120 - After final integration testing, the changes will make their way into the
Sandrine Bailleux3d28b0a2020-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 Raillard6f625742017-06-28 15:23:03 +0100125
Julius Werner37b6b8d2019-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 Raillard6f625742017-06-28 15:23:03 +0100143--------------
144
Paul Beesleye63f5d12019-05-16 13:33:18 +0100145*Copyright (c) 2013-2020, Arm Limited and Contributors. All rights reserved.*
Douglas Raillard6f625742017-06-28 15:23:03 +0100146
Louis Mayencourt63fdda22019-03-22 11:47:22 +0000147.. _developer.trustedfirmware.org: https://developer.trustedfirmware.org
Sandrine Bailleux3d28b0a2020-05-12 10:36:05 +0200148.. _review.trustedfirmware.org: https://review.trustedfirmware.org
Louis Mayencourt63fdda22019-03-22 11:47:22 +0000149.. _issue: https://developer.trustedfirmware.org/project/board/1/
John Tsichritzisf6ad51c2019-05-28 13:13:39 +0100150.. _Trusted Firmware-A: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
Douglas Raillard6f625742017-06-28 15:23:03 +0100151.. _Git guidelines: http://git-scm.com/book/ch5-2.html
Louis Mayencourt63fdda22019-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 Bailleux3d28b0a2020-05-12 10:36:05 +0200155.. _TF-A Tests: https://trustedfirmware-a-tests.readthedocs.io
Julius Werner37b6b8d2019-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 Bailleux3d28b0a2020-05-12 10:36:05 +0200158.. _TF-A mailing list: https://lists.trustedfirmware.org/mailman/listinfo/tf-a