1Contributing to SCP-firmware
2============================
3
4Getting Started
5---------------
6
7- Make sure you have a [GitHub account](https://github.com/signup/free).
8- [Fork](https://help.github.com/articles/fork-a-repo)
9  [SCP-firmware](https://github.com/ARM-software/SCP-firmware) on Github.
10- Clone the fork to your own machine.
11- Create a local topic branch based on the
12  [SCP-firmware](https://github.com/ARM-software/SCP-firmware) `master` branch.
13
14Making Changes
15--------------
16
17- Make commits of logical units. See these general
18  [Git guidelines](http://git-scm.com/book/ch5-2.html) for contributing to a
19  project.
20- Follow the project [coding style](./doc/code_style.md) and
21  [coding rules](./doc/code_rules.md).
22- Keep the commits on topic. If you need to fix another bug or make another
23  enhancement, please address it on a separate topic branch.
24- Avoid long commit series. If you do have a long series, consider whether
25  some commits should be squashed together or addressed in a separate topic.
26- Make sure your commit messages are in the proper format.
27- Where appropriate, please update the documentation.
28- Ensure that each changed file has the correct copyright and license
29  information.
30    - Files that entirely consist of contributions to this project should have a
31      copyright notice and BSD-3-Clause SPDX license identifier of the form as
32      shown in [license.md](./license.md)
33    - Files that contain changes to imported Third Party IP files should retain
34      their original copyright and license notices.
35- If you are submitting new files that you intend to be the technical
36  sub-maintainer for (for example, a new platform port), then also update the
37  [maintainers](./maintainers.md) file.
38- For topics with multiple commits, it is recommended that you make all the
39  documentation changes (and nothing else) in the last commit of the series.
40- Please test your changes. As a minimum, ensure you can do an AP boot.
41
42Submitting Changes
43------------------
44
45- Ensure that each commit in the series has at least one `Signed-off-by:` line,
46  using your real name and email address. The names in the `Signed-off-by:`
47  and `Author:` lines must match. If anyone else contributes to the commit,
48  they must also add their own `Signed-off-by:` line. By adding this line the
49  contributor certifies the contribution is made under the terms of the
50  [Developer Certificate of Origin (DCO)](./dco.txt).
51- Push your local changes to your fork of the repository.
52- Submit a [pull request](https://help.github.com/articles/using-pull-requests)
53  to the [SCP-firmware](https://github.com/ARM-software/SCP-firmware) `master`
54  branch.
55    - The changes in the
56      [pull request](https://help.github.com/articles/using-pull-requests) will
57      then undergo further review and testing by the
58      [maintainers](./maintainers.md). Any review comments will be made as
59      comments on the [pull request](https://help.github.com/articles/using-pull-requests).
60      This may require you to do some rework.
61- When the changes are accepted, the [maintainers](./maintainers.md) will
62  integrate them.
63
64    - Typically, the [maintainers](./maintainers.md) will merge the
65      [pull request](https://help.github.com/articles/using-pull-requests) into
66      the 'master' branch within the Github UI by rebasing and then merging.
67    - Please avoid creating merge commits in the
68      [pull request](https://help.github.com/articles/using-pull-requests)
69      itself.
70    - If the [pull request](https://help.github.com/articles/using-pull-requests)
71      is not based on a recent commit, the [maintainers](./maintainers.md) may
72      rebase it onto the `master` branch first, or ask you to do this.
73    - If the [pull request](https://help.github.com/articles/using-pull-requests)
74      cannot be automatically merged, the [maintainers](./maintainers.md) will
75      ask you to rebase it onto the `master` branch.
76    - If after merging the [maintainers](./maintainers.md) find any issues, they
77      may remove the commits and ask you to create a new pull request to resolve
78      the problem.
79   -  Please do not delete your topic branch until it is safely merged into
80      the `master` branch.
81
82Followthrough
83-------------
84
85- From time to time new features may be added and older features/functionality
86may deprecated. Code owners would be required to modify their code to support
87such new requirements within a reasonable time. Failure to do so may result
88in the code being deprecated and no longer maintained as a part of the master
89branch.
90
91- Any regressions must be fixed as soon as possible. If you are unwilling or
92unable to fix the regression, (and nobody else does it for you), your commit
93might be removed.
94
95- The author of the commit is responsible for fixing any bugs in a timely
96manner.  Failure to address issues/bugs may result in the causal commit
97being removed.
98
99--------------
100*Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.*
101