# Contributing to open62541 Contributions to open62541 include code, documentation, answering user questions, running the project's infrastructure, and advocating for all types of open62541 users. The open62541 project welcomes all contributions from anyone willing to work in good faith with other contributors and the community. No contribution is too small and all contributions are valued. This guide explains the process for contributing to the open62541 project's core repository and describes what to expect at each step. Thank you for considering these point. Your friendly open62541 community! ## Code of Conduct The open62541 project has a [Code of Conduct](./CODE_OF_CONDUCT.md) that *all* contributors are expected to follow. This code describes the *minimum* behavior expectations for all contributors. ## Pull Requests Everybody can propose a pull request (PR). But only the core-maintainers of the project can merge PR. ### Minimal requirements for a PR The following are the minimal requirements that every PR needs to meet. - **Pass Continuous Integration (CI)**: Every PR has to pass our CI. This includes compilation with a range of compilers and for a range of target architectures, passing the unit tests and no detected issues with static code analysis tools. - **Code-Style**: Please consider the [Code-Style](https://github.com/open62541/open62541/wiki/Code-Style) recommendations when formatting your code. - **Signed CLA**: Every contributor must sign the Contributor License Agreement (CLA) before we can merge his first PR. The signing can be done online. The link automatically appears on the page of the first PR. In addition, the CLA text can be accessed [here](https://cla-assistant.io/open62541/open62541). ## Commit and PR Hygiene We have very precise rules over how our git commit messages can be formatted. This leads to **more readable messages** that are easy to follow when looking through the **project history**. But also, we use the git commit messages to **generate the change log**. This convention is identical to the [Conventional Commits](https://www.conventionalcommits.org) specification or the one used by Angular. ### Commit Message Format Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes a **type**, a **scope** and a **subject**: ```text ():