|
| 1 | +# Introduction |
| 2 | + |
| 3 | +Thanks for thinking about contributing to the Yosys project. If this is your |
| 4 | +first time contributing to an open source project, please take a look at the |
| 5 | +following guide: |
| 6 | +https://opensource.guide/how-to-contribute/#orienting-yourself-to-a-new-project. |
| 7 | + |
| 8 | +Information about the Yosys coding style is available on our Read the Docs: |
| 9 | +https://yosys.readthedocs.io/en/latest/yosys_internals/extending_yosys/contributing.html. |
| 10 | + |
| 11 | +# Using the issue tracker |
| 12 | + |
| 13 | +The [issue tracker](https://github.com/YosysHQ/yosys/issues) is used for |
| 14 | +tracking bugs or other problems with Yosys or its documentation. It is also the |
| 15 | +place to go for requesting new features. |
| 16 | +When [creating a new issue](https://github.com/YosysHQ/yosys/issues/new/choose), |
| 17 | +we have a few templates available. Please make use of these! It will make it |
| 18 | +much easier for someone to respond and help. |
| 19 | + |
| 20 | +### Bug reports |
| 21 | + |
| 22 | +Before you submit an issue, please have a search of the existing issues in case |
| 23 | +one already exists. Making sure that you have a minimal, complete and |
| 24 | +verifiable example (MVCE) is a great way to quickly check an existing issue |
| 25 | +against a new one. Stack overflow has a guide on [how to create an |
| 26 | +MVCE](https://stackoverflow.com/help/minimal-reproducible-example). The |
| 27 | +[`bugpoint` |
| 28 | +command](https://yosyshq.readthedocs.io/projects/yosys/en/latest/cmd/bugpoint.html) |
| 29 | +in Yosys can be helpful for this process. |
| 30 | + |
| 31 | + |
| 32 | +# Using pull requests |
| 33 | + |
| 34 | +If you are working on something to add to Yosys, or fix something that isn't |
| 35 | +working quite right, make a [PR](https://github.com/YosysHQ/yosys/pulls)! An |
| 36 | +open PR, even as a draft, tells everyone that you're working on it and they |
| 37 | +don't have to. It can also be a useful way to solicit feedback on in-progress |
| 38 | +changes. See below to find the best way to [ask us |
| 39 | +questions](#asking-questions). |
| 40 | + |
| 41 | +In general, all changes to the code are done as a PR, with [Continuous |
| 42 | +Integration (CI)](https://github.com/YosysHQ/yosys/actions) tools that |
| 43 | +automatically run the full suite of tests compiling and running Yosys. Please |
| 44 | +make use of this! If you're adding a feature: add a test! Not only does it |
| 45 | +verify that your feature is working as expected, but it can also be a handy way |
| 46 | +for people to see how the feature is used. If you're fixing a bug: add a test! |
| 47 | +If you can, do this first; it's okay if the test starts off failing - you |
| 48 | +already know there is a bug. CI also helps to make sure that your changes still |
| 49 | +work under a range of compilers, settings, and targets. |
| 50 | + |
| 51 | + |
| 52 | +### Labels |
| 53 | + |
| 54 | +We use [labels](https://github.com/YosysHQ/yosys/labels) to help categorise |
| 55 | +issues and PRs. If a label seems relevant to your work, please do add it; this |
| 56 | +also includes the labels beggining with 'status-'. The 'merge-' labels are used |
| 57 | +by maintainers for tracking and communicating which PRs are ready and pending |
| 58 | +merge; please do not use these labels if you are not a maintainer. |
| 59 | + |
| 60 | + |
| 61 | +# Asking questions |
| 62 | + |
| 63 | +If you have a question about how to use Yosys, please ask on our [discussions |
| 64 | +page](https://github.com/YosysHQ/yosys/discussions) or in our [community |
| 65 | +slack](https://join.slack.com/t/yosyshq/shared_invite/zt-1aopkns2q-EiQ97BeQDt_pwvE41sGSuA). |
| 66 | +The slack is also a great place to ask questions about developing or |
| 67 | +contributing to Yosys. |
| 68 | + |
| 69 | +We have open dev 'jour fixe' (JF) meetings where developers from YosysHQ and the |
| 70 | +community come together to discuss open issues and PRs. This is also a good |
| 71 | +place to talk to us about how to implement larger PRs. Please join the |
| 72 | +community slack if you would like to join the next meeting, the link is |
| 73 | +available in the description of the #devel-discuss channel. |
0 commit comments