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