openssl/openssl
How to contribute
OpenSSL development happens on GitHub. Pull requests are reviewed by Committers, signed off, and merged via a fixed approval pipeline. The authoritative document is CONTRIBUTING.md; this section summarizes and points to the relevant code.
Where to start
| If you want to… | Read |
|---|---|
| Open a PR for the first time | development-workflow |
| Run the test suite or write a new test | testing |
| Track down a bug or learn the tracing facility | debugging |
| Match the project's style | patterns-and-conventions |
| Understand the build system | tooling and reference/build-system |
The PR pipeline
- Fork
openssl/opensslon GitHub. Do not push directly to the upstream. - Open a PR against
master. (Backports to release branches are usually handled by maintainers via cherry-pick.) - CI runs across Linux, macOS, Windows, BSDs, and a small zoo of compilers and configurations (see
.github/workflows/ci.yml). Clean builds are required. - The PR enters the
approval: review pendingstate. Two committer approvals move it toapproval: done. After 24 hours (the cooling-off window) the label changes toapproval: ready to merge. At some point a committer merges it. - Reviewers may request changes at any time. Use fixup commits (
git commit --fixup <hash>); they are squashed at merge.
The list of Committers lives at https://openssl-library.org/about/committers/index.html.
CLA and trivial-change policy
Anything non-trivial requires a Contributor License Agreement. For trivial changes (typos, comment fixes), put a line CLA: trivial in your commit message body. See CONTRIBUTING.md for the canonical text.
Where the rules are enforced
| Concern | Enforced by |
|---|---|
| C formatting (WebKit clang-format) | .clang-format, .pre-commit-config.yaml, .github/workflows/style-checks.yml, util/reformat-patches.sh |
| Spelling | .codespellrc, .github/workflows/style-checks.yml |
| Documentation lint | make doc-nits (script: util/find-doc-nits) |
| Public symbol bookkeeping | make update regenerates util/libcrypto.num, util/libssl.num, util/providers.num, error code maps |
| News changelog | .github/workflows/check-news-changes.yml reminds you to add an entry in CHANGES.md for user-visible changes |
| FIPS module fingerprint | .github/workflows/fips-checksums.yml (touching providers/fips.module.sources re-runs the checksumming) |
| Pull-request template | .github/PULL_REQUEST_TEMPLATE.md |
Coding policy and documentation policy
The official policies are at:
- https://openssl-library.org/policies/technical/coding-style/
- https://openssl-library.org/policies/technical/documentation-policy/
The local mirror enforces the coding style via .clang-format (WebKit base, customized in .clang-format) and .pre-commit-config.yaml. Run before pushing:
pre-commit run --all-files
# or, for an existing patch series:
util/reformat-patches.shWhere to ask
| Channel | What for |
|---|---|
| GitHub issues | Bugs, feature requests |
| openssl-users mailing list | User-level questions |
| openssl-project mailing list | Project / governance discussions |
#openssl on Libera.Chat IRC |
Live chat |
SUPPORT.md lists all of them with current URLs.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.