1b077aed3SPierre ProncheryHOW TO CONTRIBUTE TO OpenSSL 2b077aed3SPierre Pronchery============================ 3b077aed3SPierre Pronchery 4b077aed3SPierre ProncheryPlease visit our [Getting Started] page for other ideas about how to contribute. 5b077aed3SPierre Pronchery 6b077aed3SPierre Pronchery [Getting Started]: <https://www.openssl.org/community/getting-started.html> 7b077aed3SPierre Pronchery 8b077aed3SPierre ProncheryDevelopment is done on GitHub in the [openssl/openssl] repository. 9b077aed3SPierre Pronchery 10b077aed3SPierre Pronchery [openssl/openssl]: <https://github.com/openssl/openssl> 11b077aed3SPierre Pronchery 12*e0c4386eSCy SchubertTo request new a feature, ask a question, or report a bug, 13*e0c4386eSCy Schubertplease open an [issue on GitHub](https://github.com/openssl/openssl/issues). 14b077aed3SPierre Pronchery 15*e0c4386eSCy SchubertTo submit a patch or implement a new feature, please open a 16*e0c4386eSCy Schubert[pull request on GitHub](https://github.com/openssl/openssl/pulls). 17*e0c4386eSCy SchubertIf you are thinking of making a large contribution, 18*e0c4386eSCy Schubertopen an issue for it before starting work, to get comments from the community. 19*e0c4386eSCy SchubertSomeone may be already working on the same thing, 20*e0c4386eSCy Schubertor there may be special reasons why a feature is not implemented. 21b077aed3SPierre Pronchery 22b077aed3SPierre ProncheryTo make it easier to review and accept your pull request, please follow these 23b077aed3SPierre Proncheryguidelines: 24b077aed3SPierre Pronchery 25b077aed3SPierre Pronchery 1. Anything other than a trivial contribution requires a [Contributor 26b077aed3SPierre Pronchery License Agreement] (CLA), giving us permission to use your code. 27*e0c4386eSCy Schubert If your contribution is too small to require a CLA (e.g., fixing a spelling 28*e0c4386eSCy Schubert mistake), then place the text "`CLA: trivial`" on a line by itself below 29*e0c4386eSCy Schubert the rest of your commit message separated by an empty line, like this: 30*e0c4386eSCy Schubert 31*e0c4386eSCy Schubert ``` 32*e0c4386eSCy Schubert One-line summary of trivial change 33*e0c4386eSCy Schubert 34*e0c4386eSCy Schubert Optional main body of commit message. It might contain a sentence 35*e0c4386eSCy Schubert or two explaining the trivial change. 36*e0c4386eSCy Schubert 37*e0c4386eSCy Schubert CLA: trivial 38*e0c4386eSCy Schubert ``` 39*e0c4386eSCy Schubert 40*e0c4386eSCy Schubert It is not sufficient to only place the text "`CLA: trivial`" in the GitHub 41*e0c4386eSCy Schubert pull request description. 42b077aed3SPierre Pronchery 43b077aed3SPierre Pronchery [Contributor License Agreement]: <https://www.openssl.org/policies/cla.html> 44b077aed3SPierre Pronchery 45b077aed3SPierre Pronchery To amend a missing "`CLA: trivial`" line after submission, do the following: 46b077aed3SPierre Pronchery 47b077aed3SPierre Pronchery ``` 48b077aed3SPierre Pronchery git commit --amend 49*e0c4386eSCy Schubert # add the line, save and quit the editor 50*e0c4386eSCy Schubert git push -f [<repository> [<branch>]] 51b077aed3SPierre Pronchery ``` 52b077aed3SPierre Pronchery 53b077aed3SPierre Pronchery 2. All source files should start with the following text (with 54b077aed3SPierre Pronchery appropriate comment characters at the start of each line and the 55b077aed3SPierre Pronchery year(s) updated): 56b077aed3SPierre Pronchery 57b077aed3SPierre Pronchery ``` 58b077aed3SPierre Pronchery Copyright 20xx-20yy The OpenSSL Project Authors. All Rights Reserved. 59b077aed3SPierre Pronchery 60b077aed3SPierre Pronchery Licensed under the Apache License 2.0 (the "License"). You may not use 61b077aed3SPierre Pronchery this file except in compliance with the License. You can obtain a copy 62b077aed3SPierre Pronchery in the file LICENSE in the source distribution or at 63b077aed3SPierre Pronchery https://www.openssl.org/source/license.html 64b077aed3SPierre Pronchery ``` 65b077aed3SPierre Pronchery 66b077aed3SPierre Pronchery 3. Patches should be as current as possible; expect to have to rebase 67b077aed3SPierre Pronchery often. We do not accept merge commits, you will have to remove them 68b077aed3SPierre Pronchery (usually by rebasing) before it will be acceptable. 69b077aed3SPierre Pronchery 70*e0c4386eSCy Schubert 4. Code provided should follow our [coding style] and compile without warnings. 71*e0c4386eSCy Schubert There is a [Perl tool](util/check-format.pl) that helps 72*e0c4386eSCy Schubert finding code formatting mistakes and other coding style nits. 73*e0c4386eSCy Schubert Where `gcc` or `clang` is available, you should use the 74b077aed3SPierre Pronchery `--strict-warnings` `Configure` option. OpenSSL compiles on many varied 75*e0c4386eSCy Schubert platforms: try to ensure you only use portable features. 76*e0c4386eSCy Schubert Clean builds via GitHub Actions are required. They are started automatically 77*e0c4386eSCy Schubert whenever a PR is created or updated by committers. 78b077aed3SPierre Pronchery 79b077aed3SPierre Pronchery [coding style]: https://www.openssl.org/policies/technical/coding-style.html 80b077aed3SPierre Pronchery 81*e0c4386eSCy Schubert 5. When at all possible, code contributions should include tests. These can 82b077aed3SPierre Pronchery either be added to an existing test, or completely new. Please see 83b077aed3SPierre Pronchery [test/README.md](test/README.md) for information on the test framework. 84b077aed3SPierre Pronchery 85b077aed3SPierre Pronchery 6. New features or changed functionality must include 86*e0c4386eSCy Schubert documentation. Please look at the `.pod` files in `doc/man[1357]` for 87*e0c4386eSCy Schubert examples of our style. Run `make doc-nits` to make sure that your 88b077aed3SPierre Pronchery documentation changes are clean. 89b077aed3SPierre Pronchery 90b077aed3SPierre Pronchery 7. For user visible changes (API changes, behaviour changes, ...), 91b077aed3SPierre Pronchery consider adding a note in [CHANGES.md](CHANGES.md). 92b077aed3SPierre Pronchery This could be a summarising description of the change, and could 93b077aed3SPierre Pronchery explain the grander details. 94b077aed3SPierre Pronchery Have a look through existing entries for inspiration. 95b077aed3SPierre Pronchery Please note that this is NOT simply a copy of git-log one-liners. 96b077aed3SPierre Pronchery Also note that security fixes get an entry in [CHANGES.md](CHANGES.md). 97*e0c4386eSCy Schubert This file helps users get more in-depth information of what comes 98b077aed3SPierre Pronchery with a specific release without having to sift through the higher 99b077aed3SPierre Pronchery noise ratio in git-log. 100b077aed3SPierre Pronchery 101b077aed3SPierre Pronchery 8. For larger or more important user visible changes, as well as 102b077aed3SPierre Pronchery security fixes, please add a line in [NEWS.md](NEWS.md). 103b077aed3SPierre Pronchery On exception, it might be worth adding a multi-line entry (such as 104b077aed3SPierre Pronchery the entry that announces all the types that became opaque with 105b077aed3SPierre Pronchery OpenSSL 1.1.0). 106b077aed3SPierre Pronchery This file helps users get a very quick summary of what comes with a 107b077aed3SPierre Pronchery specific release, to see if an upgrade is worth the effort. 108b077aed3SPierre Pronchery 109b077aed3SPierre Pronchery 9. Guidelines how to integrate error output of new crypto library modules 110b077aed3SPierre Pronchery can be found in [crypto/err/README.md](crypto/err/README.md). 111