]>
Commit | Line | Data |
---|---|---|
bdbfb847 RS |
1 | HOW TO CONTRIBUTE TO PATCHES OpenSSL |
2 | ------------------------------------ | |
0f5fdb73 | 3 | |
ac29a0fe | 4 | (Please visit https://www.openssl.org/community/getting-started.html for |
bdbfb847 | 5 | other ideas about how to contribute.) |
0f5fdb73 | 6 | |
bdbfb847 | 7 | Development is coordinated on the openssl-dev mailing list (see the |
ac29a0fe | 8 | above link or https://mta.openssl.org for information on subscribing). |
0f5fdb73 | 9 | If you are unsure as to whether a feature will be useful for the general |
bdbfb847 RS |
10 | OpenSSL community you might want to discuss it on the openssl-dev mailing |
11 | list first. Someone may be already working on the same thing or there | |
12 | may be a good reason as to why that feature isn't implemented. | |
0f5fdb73 | 13 | |
bdbfb847 RS |
14 | The best way to submit a patch is to make a pull request on GitHub. |
15 | (It is not necessary to send mail to rt@openssl.org to open a ticket!) | |
16 | If you think the patch could use feedback from the community, please | |
17 | start a thread on openssl-dev. | |
0f5fdb73 | 18 | |
ac29a0fe | 19 | You can also submit patches by sending it as mail to rt@openssl.org. |
bdbfb847 RS |
20 | Please include the word "PATCH" and an explanation of what the patch |
21 | does in the subject line. If you do this, our preferred format is "git | |
22 | format-patch" output. For example to provide a patch file containing the | |
23 | last commit in your local git repository use the following command: | |
22ec08d7 | 24 | |
bdbfb847 | 25 | % git format-patch --stdout HEAD^ >mydiffs.patch |
22ec08d7 MC |
26 | |
27 | Another method of creating an acceptable patch file without using git is as | |
28 | follows: | |
0f5fdb73 | 29 | |
bdbfb847 RS |
30 | % cd openssl-work |
31 | ...make your changes... | |
32 | % ./Configure dist; make clean | |
33 | % cd .. | |
34 | % diff -ur openssl-orig openssl-work >mydiffs.patch | |
35 | ||
36 | Note that pull requests are generally easier for the team, and community, to | |
37 | work with. Pull requests benefit from all of the standard GitHub features, | |
38 | including code review tools, simpler integration, and CI build support. | |
39 | ||
40 | No matter how a patch is submitted, the following items will help make | |
41 | the acceptance and review process faster: | |
42 | ||
43 | 1. Anything other than trivial contributions will require a contributor | |
44 | licensing agreement, giving us permission to use your code. See | |
ac29a0fe | 45 | https://www.openssl.org/policies/cla.html for details. |
bdbfb847 RS |
46 | |
47 | 2. All source files should start with the following text (with | |
48 | appropriate comment characters at the start of each line and the | |
49 | year(s) updated): | |
50 | ||
51 | Copyright 20xx-20yy The OpenSSL Project Authors. All Rights Reserved. | |
52 | ||
53 | Licensed under the OpenSSL license (the "License"). You may not use | |
54 | this file except in compliance with the License. You can obtain a copy | |
55 | in the file LICENSE in the source distribution or at | |
56 | https://www.openssl.org/source/license.html | |
57 | ||
58 | 3. Patches should be as current as possible. When using GitHub, please | |
ac29a0fe MC |
59 | expect to have to rebase and update often. Note that we do not accept merge |
60 | commits. You will be asked to remove them before a patch is considered | |
61 | acceptable. | |
bdbfb847 | 62 | |
ac29a0fe | 63 | 4. Patches should follow our coding style (see |
bdbfb847 | 64 | https://www.openssl.org/policies/codingstyle.html) and compile without |
ac29a0fe MC |
65 | warnings. Where gcc or clang is availble you should use the |
66 | --strict-warnings Configure option. OpenSSL compiles on many varied | |
67 | platforms: try to ensure you only use portable features. | |
bdbfb847 | 68 | |
ac29a0fe | 69 | 5. When at all possible, patches should include tests. These can either be |
bdbfb847 RS |
70 | added to an existing test, or completely new. Please see test/README |
71 | for information on the test framework. | |
ac29a0fe MC |
72 | |
73 | 6. New features or changed functionality must include documentation. Please | |
74 | look at the "pod" files in doc/apps, doc/crypto and doc/ssl for examples of | |
75 | our style. |