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 6*a7148ab3SEnji Cooper [Getting Started]: <https://openssl-library.org/community/getting-started> 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 1244096ebdSEnji CooperTo request a new feature, ask a question, or report a bug, 13e0c4386eSCy Schubertplease open an [issue on GitHub](https://github.com/openssl/openssl/issues). 14b077aed3SPierre Pronchery 15e0c4386eSCy SchubertTo submit a patch or implement a new feature, please open a 16e0c4386eSCy Schubert[pull request on GitHub](https://github.com/openssl/openssl/pulls). 17e0c4386eSCy SchubertIf you are thinking of making a large contribution, 18e0c4386eSCy Schubertopen an issue for it before starting work, to get comments from the community. 19e0c4386eSCy SchubertSomeone may be already working on the same thing, 20e0c4386eSCy 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. 27e0c4386eSCy Schubert If your contribution is too small to require a CLA (e.g., fixing a spelling 28e0c4386eSCy Schubert mistake), then place the text "`CLA: trivial`" on a line by itself below 29e0c4386eSCy Schubert the rest of your commit message separated by an empty line, like this: 30e0c4386eSCy Schubert 31e0c4386eSCy Schubert ``` 32e0c4386eSCy Schubert One-line summary of trivial change 33e0c4386eSCy Schubert 34e0c4386eSCy Schubert Optional main body of commit message. It might contain a sentence 35e0c4386eSCy Schubert or two explaining the trivial change. 36e0c4386eSCy Schubert 37e0c4386eSCy Schubert CLA: trivial 38e0c4386eSCy Schubert ``` 39e0c4386eSCy Schubert 40e0c4386eSCy Schubert It is not sufficient to only place the text "`CLA: trivial`" in the GitHub 41e0c4386eSCy 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 49e0c4386eSCy Schubert # add the line, save and quit the editor 50e0c4386eSCy 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 7044096ebdSEnji Cooper 4. Code provided should follow our [coding style] and [documentation policy] 7144096ebdSEnji Cooper and compile without warnings. 72e0c4386eSCy Schubert There is a [Perl tool](util/check-format.pl) that helps 73e0c4386eSCy Schubert finding code formatting mistakes and other coding style nits. 74e0c4386eSCy Schubert Where `gcc` or `clang` is available, you should use the 75b077aed3SPierre Pronchery `--strict-warnings` `Configure` option. OpenSSL compiles on many varied 76e0c4386eSCy Schubert platforms: try to ensure you only use portable features. 77e0c4386eSCy Schubert Clean builds via GitHub Actions are required. They are started automatically 78e0c4386eSCy Schubert whenever a PR is created or updated by committers. 79b077aed3SPierre Pronchery 80*a7148ab3SEnji Cooper [coding style]: https://openssl-library.org/policies/technical/coding-style/ 81*a7148ab3SEnji Cooper [documentation policy]: https://openssl-library.org/policies/technical/documentation-policy/ 82b077aed3SPierre Pronchery 83e0c4386eSCy Schubert 5. When at all possible, code contributions should include tests. These can 84b077aed3SPierre Pronchery either be added to an existing test, or completely new. Please see 85b077aed3SPierre Pronchery [test/README.md](test/README.md) for information on the test framework. 86b077aed3SPierre Pronchery 87b077aed3SPierre Pronchery 6. New features or changed functionality must include 88e0c4386eSCy Schubert documentation. Please look at the `.pod` files in `doc/man[1357]` for 89e0c4386eSCy Schubert examples of our style. Run `make doc-nits` to make sure that your 90b077aed3SPierre Pronchery documentation changes are clean. 91b077aed3SPierre Pronchery 92b077aed3SPierre Pronchery 7. For user visible changes (API changes, behaviour changes, ...), 93b077aed3SPierre Pronchery consider adding a note in [CHANGES.md](CHANGES.md). 94b077aed3SPierre Pronchery This could be a summarising description of the change, and could 95b077aed3SPierre Pronchery explain the grander details. 96b077aed3SPierre Pronchery Have a look through existing entries for inspiration. 97b077aed3SPierre Pronchery Please note that this is NOT simply a copy of git-log one-liners. 98b077aed3SPierre Pronchery Also note that security fixes get an entry in [CHANGES.md](CHANGES.md). 99e0c4386eSCy Schubert This file helps users get more in-depth information of what comes 100b077aed3SPierre Pronchery with a specific release without having to sift through the higher 101b077aed3SPierre Pronchery noise ratio in git-log. 102b077aed3SPierre Pronchery 103b077aed3SPierre Pronchery 8. For larger or more important user visible changes, as well as 104b077aed3SPierre Pronchery security fixes, please add a line in [NEWS.md](NEWS.md). 105b077aed3SPierre Pronchery On exception, it might be worth adding a multi-line entry (such as 106b077aed3SPierre Pronchery the entry that announces all the types that became opaque with 107b077aed3SPierre Pronchery OpenSSL 1.1.0). 108b077aed3SPierre Pronchery This file helps users get a very quick summary of what comes with a 109b077aed3SPierre Pronchery specific release, to see if an upgrade is worth the effort. 110b077aed3SPierre Pronchery 111b077aed3SPierre Pronchery 9. Guidelines how to integrate error output of new crypto library modules 112b077aed3SPierre Pronchery can be found in [crypto/err/README.md](crypto/err/README.md). 113