1306196SjkimHOW TO CONTRIBUTE TO PATCHES OpenSSL
2306196Sjkim------------------------------------
3291709Sjkim
4306196Sjkim(Please visit https://www.openssl.org/community/getting-started.html for
5306196Sjkimother ideas about how to contribute.)
6291709Sjkim
7306196SjkimDevelopment is coordinated on the openssl-dev mailing list (see the
8306196Sjkimabove link or https://mta.openssl.org for information on subscribing).
9291709SjkimIf you are unsure as to whether a feature will be useful for the general
10306196SjkimOpenSSL community you might want to discuss it on the openssl-dev mailing
11306196Sjkimlist first.  Someone may be already working on the same thing or there
12306196Sjkimmay be a good reason as to why that feature isn't implemented.
13291709Sjkim
14306196SjkimThe best way to submit a patch is to make a pull request on GitHub.
15306196Sjkim(It is not necessary to send mail to rt@openssl.org to open a ticket!)
16306196SjkimIf you think the patch could use feedback from the community, please
17306196Sjkimstart a thread on openssl-dev.
18291709Sjkim
19306196SjkimYou can also submit patches by sending it as mail to rt@openssl.org.
20306196SjkimPlease include the word "PATCH" and an explanation of what the patch
21306196Sjkimdoes in the subject line.  If you do this, our preferred format is "git
22306196Sjkimformat-patch" output. For example to provide a patch file containing the
23306196Sjkimlast commit in your local git repository use the following command:
24291709Sjkim
25306196Sjkim    % git format-patch --stdout HEAD^ >mydiffs.patch
26291709Sjkim
27291709SjkimAnother method of creating an acceptable patch file without using git is as
28291709Sjkimfollows:
29291709Sjkim
30306196Sjkim    % cd openssl-work
31306196Sjkim    ...make your changes...
32306196Sjkim    % ./Configure dist; make clean
33306196Sjkim    % cd ..
34306196Sjkim    % diff -ur openssl-orig openssl-work >mydiffs.patch
35306196Sjkim
36306196SjkimNote that pull requests are generally easier for the team, and community, to
37306196Sjkimwork with.  Pull requests benefit from all of the standard GitHub features,
38306196Sjkimincluding code review tools, simpler integration, and CI build support.
39306196Sjkim
40306196SjkimNo matter how a patch is submitted, the following items will help make
41306196Sjkimthe acceptance and review process faster:
42306196Sjkim
43306196Sjkim    1. Anything other than trivial contributions will require a contributor
44306196Sjkim    licensing agreement, giving us permission to use your code. See
45306196Sjkim    https://www.openssl.org/policies/cla.html for details.
46306196Sjkim
47306196Sjkim    2.  All source files should start with the following text (with
48306196Sjkim    appropriate comment characters at the start of each line and the
49306196Sjkim    year(s) updated):
50306196Sjkim
51306196Sjkim        Copyright 20xx-20yy The OpenSSL Project Authors. All Rights Reserved.
52306196Sjkim
53306196Sjkim        Licensed under the OpenSSL license (the "License").  You may not use
54306196Sjkim        this file except in compliance with the License.  You can obtain a copy
55306196Sjkim        in the file LICENSE in the source distribution or at
56306196Sjkim        https://www.openssl.org/source/license.html
57306196Sjkim
58306196Sjkim    3.  Patches should be as current as possible.  When using GitHub, please
59306196Sjkim    expect to have to rebase and update often. Note that we do not accept merge
60306196Sjkim    commits. You will be asked to remove them before a patch is considered
61306196Sjkim    acceptable.
62306196Sjkim
63306196Sjkim    4.  Patches should follow our coding style (see
64306196Sjkim    https://www.openssl.org/policies/codingstyle.html) and compile without
65306196Sjkim    warnings. Where gcc or clang is availble you should use the
66306196Sjkim    --strict-warnings Configure option.  OpenSSL compiles on many varied
67306196Sjkim    platforms: try to ensure you only use portable features.
68306196Sjkim
69306196Sjkim    5.  When at all possible, patches should include tests. These can either be
70306196Sjkim    added to an existing test, or completely new.  Please see test/README
71306196Sjkim    for information on the test framework.
72306196Sjkim
73306196Sjkim    6.  New features or changed functionality must include documentation. Please
74306196Sjkim    look at the "pod" files in doc/apps, doc/crypto and doc/ssl for examples of
75306196Sjkim    our style.
76