|
| 1 | +# Contributing to Leios |
| 2 | + |
| 3 | +Thanks for considering contributing and help us on prototyping and |
| 4 | +specifying the Mithril protocol for the whole benefit of the Cardano |
| 5 | +community! |
| 6 | + |
| 7 | +There are several ways in which you can contribute to this project: |
| 8 | + |
| 9 | +* From reading the [research |
| 10 | + paper](https://iohk.io/en/research/library/papers/high-throughput-blockchain-consensus-under-realistic-network-assumptions/), |
| 11 | + identify questions that will need to be answered for a practical |
| 12 | + implementation of the protocol |
| 13 | +* Analyse and document the protocol, its performance profile, |
| 14 | + resources requirements, etc. |
| 15 | +* Contribute code for prototypes, simulations, numerical analysis, graphing... |
| 16 | +* Use the provided prototypes and simulations and provide feedback |
| 17 | + |
| 18 | +## Communication channels |
| 19 | + |
| 20 | +Should you have any questions or need some help in getting set up, you can use |
| 21 | +these communication channels to reach the Leios R&D community and get answers in a way |
| 22 | +where others can benefit from it as well: |
| 23 | + |
| 24 | +- #leios on the IOG [Discord server]https://discord.gg/Bc6ABMS3) |
| 25 | +- GitHub [Discussions](https://github.com/input-output-hk/ouroboros-leios/discussions) |
| 26 | + |
| 27 | +## Your first contribution |
| 28 | + |
| 29 | +Contributing to the documentation, its translation, reporting bugs or proposing features are awesome ways to get started. |
| 30 | + |
| 31 | +### Documentation |
| 32 | + |
| 33 | +We host our documentation / user manual as a website [here](https://leios.cardano-scaling.org/). |
| 34 | + |
| 35 | +Each page has an "Edit this page" button which should take you to the source |
| 36 | +file containing the markup. Should you would want to extend the documentation or |
| 37 | +find some errors, please file an issue pointing to the mistake or even better, |
| 38 | +create a pull request with the changes directly! |
| 39 | + |
| 40 | +### Issues |
| 41 | + |
| 42 | +Whether you found a bug in some code in this repository, or have a specific request to improve it, please [submit an issue](https://github.com/input-output-hk/ouroboros-leios/issues/new). |
| 43 | + |
| 44 | +For bug reports, it's very important to explain |
| 45 | + |
| 46 | +- what version you used (typically a commit SHA or a released version number), |
| 47 | +- steps to reproduce (or steps you took), |
| 48 | +- what behavior you saw (ideally supported by logs), and |
| 49 | +- what behavior you expected. |
| 50 | + |
| 51 | +### Feature ideas |
| 52 | + |
| 53 | +For ideas and questions that need some discussions, we use the [Ideas |
| 54 | +discussions |
| 55 | +category](https://github.com/input-output-hk/ouroboros-leios/discussions/) |
| 56 | +to discuss. Please note that we expect all participants to those |
| 57 | +discussions to be mindful of and respect our [Code of |
| 58 | +Conduct](CODE-OF-CONDUCT.md). |
| 59 | + |
| 60 | +## Making changes |
| 61 | + |
| 62 | +When contributing code, it helps to have discussed the rationale and (ideally) |
| 63 | +how something is implemented in a feature idea or bug ticket beforehand. |
| 64 | + |
| 65 | +### Building & Testing |
| 66 | + |
| 67 | +#### Haskell |
| 68 | + |
| 69 | +To build Haskell code in this repository, you need to install: |
| 70 | + |
| 71 | +* The [GHC](https://www.haskell.org/ghc/) compiler version 9.6.3 |
| 72 | +* [cabal](https://www.haskell.org/cabal/) build tool |
| 73 | + |
| 74 | +> [!NOTE] |
| 75 | +> Installing those tools might depend on your system's details, we suggest two different methods: |
| 76 | +> |
| 77 | +> * Install [GHCup](https://www.haskell.org/ghcup/) to manage various tools from the Haskell ecosystem |
| 78 | +> * Use the provided [Nix shell](shell.nix) |
| 79 | +
|
| 80 | +Running `cabal update && cabal build all` at the top-level of the |
| 81 | +project should build all the Haskell components. Tests are run with |
| 82 | +`cabal test all`. |
| 83 | + |
| 84 | +Besides these general build instructions, some components might document |
| 85 | +additional steps and useful tools in their `README.md` files. |
| 86 | + |
| 87 | +### Coding standards |
| 88 | + |
| 89 | +Make sure to read and follow our [Coding |
| 90 | +Standards](CODING-STANDARDS.md), it includes guidelines on code |
| 91 | +formatting, general style, and some processes. To propose new |
| 92 | +standards or changes to the existing standards, file an issue. |
| 93 | + |
| 94 | +### Creating a pull request |
| 95 | + |
| 96 | +Thank you for contributing your changes by opening a pull requests! To get |
| 97 | +something merged we usually require: |
| 98 | + |
| 99 | +- Description of the changes - if your commit messages are great, this is less important |
| 100 | +- Quality of changes is ensured - through new or updated automated tests in [GitHub Actions](https://github.com/input-output-hk/ouroboros-leios/actions) |
| 101 | +- Change is related to an issue, feature (idea) or bug report - ideally discussed beforehand |
| 102 | +- Well-scoped - we prefer multiple PRs, rather than a big one |
| 103 | +- All your commits must be [signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) in order to be merged in the `main` branch |
| 104 | + |
| 105 | +### Versioning & Changelog |
| 106 | + |
| 107 | +TBD |
| 108 | + |
| 109 | +### Releasing |
| 110 | + |
| 111 | +TBD |
0 commit comments