/ CONTRIBUTING.md
CONTRIBUTING.md
1 # Contributing 2 3 Welcome to the Fedimint project! We're thrilled that you're interested in contributing to our open-source community. Below are some resources to help you get started: 4 5 > Please note that all contributions happen under the MIT license as described at the bottom of this page. 6 7 ## Getting involved 8 9 Here are the recommended steps for new developers: 10 11 1. Start by reading our [non-technical primer](https://fedimint.org/docs/intro) and viewing the [videos and articles on the blog](https://fedimint.org/blog) 12 2. Before writing code you will need to [set up the dev environment](docs/dev-env.md) 13 3. [Run the dev environment](docs/tutorial.md) to ensure that everything works on your computer 14 4. Contact @kodylow to get a good first issue matched to your skillset: you can schedule a [call with Kody here](https://cal.com/kody-low-ix8qoa/30min) or just shoot him a DM in our [Developer discord](https://chat.fedimint.org) with your background, skillset, and what you're interested in working on. 15 5. Now take a look at our [GitHub Issues](https://github.com/fedimint/fedimint/issues) you may want to search for [good first issues](https://github.com/fedimint/fedimint/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) 16 6. Join our [Developer calls](https://calendar.google.com/calendar/u/0/embed?src=fedimintcalendar@gmail.com) especially the ones for new contributors 17 18 > Small PRs fixing typos, TODOs, broken links are always welcome, but please discuss bigger changes on Discord or GitHub first. 19 20 <!-- markdown-link-check-disable --> 21 22 For commits, please use [imperative mood](https://stackoverflow.com/questions/3580013/should-i-use-past-or-present-tense-in-git-commit-messages/3580764#3580764). 23 24 <!-- markdown-link-check-enable --> 25 26 ## Areas of Contribution 27 28 Below are some broad and general areas of contribution to get you started 29 30 - [Fedimint Modules](docs/architecture.md) 31 - [Fedimint Database System](docs/database.md) 32 - [The Lightning Gateway](docs/gateway.md) 33 - [Developing gateway-lnrpc-extension](docs/gateway.md#developing-gateway-lnrpc-extension) 34 - [Developing Gateway UI](https://github.com/fedimint/ui) 35 - [Fedimint Guardian UI](https://github.com/fedimint/ui) 36 - [Nix Build System](docs/nix-ci.md) 37 - [Devimint](devimint/) 38 - [Scripts](scripts/README.md) 39 40 ### New Contributors 41 42 If you are new to contributing to Fedimint, please come through @kodylow as your point of contact to get a good first issue matched to your skillset. You can schedule a [call with Kody here](https://cal.com/kody-low-ix8qoa/30min) or just shoot him a DM with your background, skillset, and what you're interested in working on. 43 44 **Contributing to the core Fedimint repo requires expertise with Rust and distributed systems**. There are a bunch of other projects in and around fedimint like UIs, clients, and other services that are far more approachable, so if you're new to coding/bitcoin/rust please try to start with one of those to get a feel for Fedimint before trying to contribute to the core repo. The hardest part with new contributors is finding a good issue to match your skillset! Again, please go through @kodylow so we can get a good match for you so you can get started. 45 46 Once you have an issue you're working on, please post blockers or questions in the [#new-contributors channel](https://discord.gg/BGFMXSkNJW) if you're stuck on something. 47 48 There is almost always a simple/fast answer to early contributor problems and we'd like to get you past those as quickly as possible to making valuable contributions. 49 50 Things like dev environment issues, build errors, "what does this state machine do", "I don't understand how this contract is structured", etc. Just ask in the #new-contributors channel and someone will get back to you ASAP. 51 52 If you have any questions or need assistance, don't hesitate to reach out to us on our [Developer Discord](https://chat.fedimint.org) in the [#new-contributors channel](https://discord.gg/BGFMXSkNJW). Our community is friendly and supportive, and we're here to help you succeed. 53 54 Happy Hacking! 55 56 57 # Code Review Policy 58 59 * CI must pass (enforced) 60 * 1 review is mandatory (enforced), 2 or more ideal 61 * If you believe your change is simple, and non-controversial enough, and you want 62 to avoid merge conflicts, or blocking work before it gets enough reviews, label it with 63 `needs further review` label and Merge it. 64 65 Feel free to post a link to a PR on #code-review to ask for more code reviews. 66 67 The goal of the policy is to strike a balance between good review coverage 68 and fast iteration time in a globally distributed team consisting of mostly 69 volunteers with varying levels of availability. 70 71 1 mandatory review is meant to enforce basic sanity and security cross-checking. 72 73 2 ideal reviews is a target we would like to maintain at the current level of project 74 maturity. 75 76 PRs labeled with `needs further review` label are meant to enable flexible 77 "code review debt". The label can be removed after further reviews are done. 78 Regular contributors are encouraged to review PRs even after they were merged. 79 Furthermore, PRs with `needs further review` will be reviewed during weekly 80 "Code Review" meetings. 81 82 83 ## Developer Certificate of Origin 84 85 ``` 86 Developer Certificate of Origin 87 Version 1.1 88 89 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 90 91 Everyone is permitted to copy and distribute verbatim copies of this 92 license document, but changing it is not allowed. 93 94 95 Developer's Certificate of Origin 1.1 96 97 By making a contribution to this project, I certify that: 98 99 (a) The contribution was created in whole or in part by me and I 100 have the right to submit it under the open source license 101 indicated in the file; or 102 103 (b) The contribution is based upon previous work that, to the best 104 of my knowledge, is covered under an appropriate open source 105 license and I have the right under that license to submit that 106 work with modifications, whether created in whole or in part 107 by me, under the same open source license (unless I am 108 permitted to submit under a different license), as indicated 109 in the file; or 110 111 (c) The contribution was provided directly to me by some other 112 person who certified (a), (b) or (c) and I have not modified 113 it. 114 115 (d) I understand and agree that this project and the contribution 116 are public and that a record of the contribution (including all 117 personal information I submit with it, including my sign-off) is 118 maintained indefinitely and may be redistributed consistent with 119 this project or the open source license(s) involved. 120 ```