/ 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 **Note:** All contributions are made under the MIT license, as described at the bottom of this page. 6 7 ## Table of Contents 8 9 - [Getting Involved](#getting-involved) 10 - [Areas of Contribution](#areas-of-contribution) 11 - [Code Review Policy](#code-review-policy) 12 - [Developer Certificate of Origin](#developer-certificate-of-origin) 13 14 ## Getting Involved 15 16 Here are the recommended steps for new developers: 17 18 1. **Learn the Basics**: Start by reading our [non-technical primer](https://fedimint.org/docs/intro) and exploring the [videos and articles on our blog](https://fedimint.org/blog). 19 2. **Set Up Your Development Environment**: Follow our [dev environment setup guide](docs/dev-env.md) to install the necessary tools. 20 3. **Run the Development Environment**: Use [this tutorial](docs/tutorial.md) to launch the development environment and ensure everything works correctly on your machine. 21 4. **Find Your First Issue**: 22 - 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 send him a direct message in our [Developer Discord](https://chat.fedimint.org) with your background, skillset, and areas of interest. 23 - Browse our [GitHub Issues](https://github.com/fedimint/fedimint/issues) and filter by [good first issues](https://github.com/fedimint/fedimint/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22). 24 5. **Join Developer Calls**: Participate in our [Developer Calls](https://calendar.google.com/calendar/u/0/embed?src=fedimintcalendar@gmail.com), especially our Weekly Dev Calls every Monday. 25 26 Small PRs fixing typos, TODOs, or broken links are always welcome. Please discuss larger changes on Discord or GitHub before proceeding. 27 28 <!-- markdown-link-check-disable --> 29 30 For commit messages, please use the [imperative mood](https://stackoverflow.com/questions/3580013/should-i-use-past-or-present-tense-in-git-commit-messages/3580764#3580764). 31 32 <!-- markdown-link-check-enable --> 33 34 **Note:** Contributing to the core Fedimint repo requires expertise in Rust and distributed systems. If you're new to coding, Bitcoin, or Rust, consider starting with our more approachable projects like UIs, clients, or other services to familiarize yourself with Fedimint before tackling the core repo. Finding a good issue that matches your skillset is crucial—please reach out to @kodylow to ensure a smooth start. 35 36 Once you've found an issue to work on, please post any blockers or questions in the [#new-contributors](https://discord.gg/BGFMXSkNJW) channel on Discord. There are almost always fast and simple answers to early contributor problems. We're here to help you overcome those challenges quickly so you can make valuable contributions. 37 38 Happy Hacking! 39 40 ## Areas of Contribution 41 42 Below are some broad and general areas where you can contribute: 43 44 - [Fedimint Modules](docs/architecture.md) 45 - [Fedimint Database System](docs/database.md) 46 - [Fedimint Lightning Gateway](docs/gateway.md) 47 - [Fedimint Guardian & Lightning Gateway UI](https://github.com/fedimint/ui) 48 - [Nix Build System](docs/nix-ci.md) 49 - [Devimint](devimint/) 50 - [Scripts](scripts/README.md) 51 52 ## Code Review Policy 53 54 **Objective:** We aim to balance thorough code reviews with fast iteration, accommodating our globally distributed team of mostly volunteers with varying availability. 55 56 - **Continuous Integration (CI):** All PRs must pass CI checks before merging. CI ensures your code doesn't break existing functionality and adheres to our quality standards. 57 - **Mandatory Reviews:** Each PR requires at least **one** approved review. We recommend having **two or more** reviewers. However, for minor changes such as fixing typos or correcting broken links, one review is acceptable. 58 - **Labeling for Further Review:** If a PR contains simple or non-controversial changes and you'd like to avoid merge conflicts or unblock subsequent work, label it with the `needs further review` label and merge it. PRs with this label will be discussed during our weekly "Code Review" meetings. 59 60 Contributors are encouraged to review PRs even after they have been merged. 61 62 If you need additional reviews, feel free to post a link to your PR in the #code-review channel on Discord. 63 64 ## Developer Certificate of Origin 65 66 ``` 67 Developer Certificate of Origin 68 Version 1.1 69 70 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 71 72 Everyone is permitted to copy and distribute verbatim copies of this 73 license document, but changing it is not allowed. 74 75 76 Developer's Certificate of Origin 1.1 77 78 By making a contribution to this project, I certify that: 79 80 (a) The contribution was created in whole or in part by me and I 81 have the right to submit it under the open source license 82 indicated in the file; or 83 84 (b) The contribution is based upon previous work that, to the best 85 of my knowledge, is covered under an appropriate open source 86 license and I have the right under that license to submit that 87 work with modifications, whether created in whole or in part 88 by me, under the same open source license (unless I am 89 permitted to submit under a different license), as indicated 90 in the file; or 91 92 (c) The contribution was provided directly to me by some other 93 person who certified (a), (b) or (c) and I have not modified 94 it. 95 96 (d) I understand and agree that this project and the contribution 97 are public and that a record of the contribution (including all 98 personal information I submit with it, including my sign-off) is 99 maintained indefinitely and may be redistributed consistent with 100 this project or the open source license(s) involved. 101 ```