|
| 1 | +# Contributing to Zserio |
| 2 | + |
| 3 | +The following summarizes the process for contributing changes to the Zserio project. |
| 4 | + |
| 5 | +## Where to start |
| 6 | + |
| 7 | +* [Zserio Build Instructions](doc/ZserioBuildInstructions.md). |
| 8 | + |
| 9 | +## General rules for any code contribution |
| 10 | + |
| 11 | +* Consider to open a [discussion](https://github.com/ndsev/zserio/discussions/new/choose) |
| 12 | + or create an [issue](https://github.com/ndsev/zserio/issues/new/choose). |
| 13 | + |
| 14 | +* Open a new GitHub pull request. |
| 15 | + |
| 16 | +* Follow our coding style. |
| 17 | + |
| 18 | + * For all C++ and Java code we use **clang-format** to check that the code follow the defined |
| 19 | + [coding style](.clang-format). |
| 20 | + |
| 21 | + > Note that you have to run `clang-format` on your own, our pipeline only checks that the code follows |
| 22 | + the rules. |
| 23 | + |
| 24 | + * Python code is not yet automatically checked, please try use the same coding style as is used in our |
| 25 | + [Python runtime library](https://github.com/ndsev/zserio/tree/master/compiler/extensions/python/runtime/src/zserio) |
| 26 | + (in general we follow the [PEP-8](https://www.python.org/dev/peps/pep-0008/)). |
| 27 | + |
| 28 | +* Ensure that all GitHub [workflows](https://github.com/ndsev/zserio/actions) are passing. |
| 29 | + |
| 30 | +* Wait for the review by [@Mi-La](https://github.com/Mi-La) or [@mikir](https://github.com/mikir). |
| 31 | + |
| 32 | +> Please try to address only a single problem in you pull request. |
| 33 | +
|
| 34 | +## Did you find a bug? |
| 35 | + |
| 36 | +* Ensure that the bug was not already reported in some [issue](https://github.com/ndsev/zserio/issues). |
| 37 | + |
| 38 | +* If there is no open issue addressing the problem, |
| 39 | + [open a new one](https://github.com/ndsev/zserio/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=). |
| 40 | + |
| 41 | +* Follow [General rules for any code contribution](#general-rules-for-any-code-contribution). |
| 42 | + |
| 43 | +## Do you want to propose a performance optimization? |
| 44 | + |
| 45 | +* Consider to open a [discussion](https://github.com/ndsev/zserio/discussions/new/choose) |
| 46 | + or create an [issue](https://github.com/ndsev/zserio/issues/new/choose). |
| 47 | + |
| 48 | +* Run our [benchmarks](https://github.com/ndsev/zserio/tree/master/benchmarks) and provide comparison with the latest zserio release |
| 49 | + in your Pull Request. |
| 50 | + |
| 51 | +* Feel free to provide any other measurements. |
| 52 | + |
| 53 | +* Follow [General rules for any code contribution](#general-rules-for-any-code-contribution). |
| 54 | + |
| 55 | +## Do you want to propose a new feature? |
| 56 | + |
| 57 | +* Consider to open a [discussion](https://github.com/ndsev/zserio/discussions/new?category=ideas) or create an |
| 58 | + [issue](https://github.com/ndsev/zserio/issues/new?assignees=&labels=&projects=&template=feature_request.md&title=). |
| 59 | + |
| 60 | +* The proposed changes must not break |
| 61 | + [backward compatibility](doc/ZserioCompatibilityGuide.md#schema-language-compatibility). |
| 62 | + |
| 63 | +## Do you intend to write a new generator? |
| 64 | + |
| 65 | +* Consider to open a [discussion](https://github.com/ndsev/zserio/discussions/new?category=ideas) or create an |
| 66 | + [issue](https://github.com/ndsev/zserio/issues/new?assignees=&labels=&projects=&template=feature_request.md&title=). |
| 67 | + |
| 68 | +* In case you want to implement a new generator (i.e. zserio extension), you can start with |
| 69 | + [Zserio Extension Sample](https://github.com/ndsev/zserio-extension-sample) |
| 70 | + and keep it as an external extension. We will be happy to add a link to your extension in our [README.md](README.md)! |
| 71 | + |
| 72 | +## License |
| 73 | + |
| 74 | +We do not require any formal copyright assignment or contributor license agreement (CLA). |
| 75 | +Any contributions intentionally sent upstream are presumed to be offered under terms of BSD 3-Clause License. |
| 76 | +See [LICENSE](https://github.com/ndsev/zserio/LICENSE) for details. |
0 commit comments