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:
Please note that all contributions happen under the MIT license as described at the bottom of this page.
Here are the recommended steps for new developers:
- Start by reading our non-technical primer and viewing the videos and articles on the blog
- Before writing code you will need to set up the dev environment
- Run the dev environment to ensure that everything works on your computer
- Contact @kodylow to get a good first issue matched to your skillset: you can schedule a call with Kody here or just shoot him a DM in our Developer discord with your background, skillset, and what you're interested in working on.
- Now take a look at our GitHub Issues you may want to search for good first issues
- Join our Developer calls especially the ones for new contributors
Small PRs fixing typos, TODOs, broken links are always welcome, but please discuss bigger changes on Discord or GitHub first.
For commits, please use imperative mood.
Below are some broad and general areas of contribution to get you started
- Fedimint Modules
- Fedimint Database System
- The Lightning Gateway
- Fedimint Guardian UI
- Nix Build System
- Devimint
- Scripts
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 or just shoot him a DM with your background, skillset, and what you're interested in working on.
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.
Once you have an issue you're working on, please post blockers or questions in the #new-contributors channel if you're stuck on something.
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.
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.
If you have any questions or need assistance, don't hesitate to reach out to us on our Developer Discord in the #new-contributors channel. Our community is friendly and supportive, and we're here to help you succeed.
Happy Hacking!
- CI must pass (enforced)
- 1 review is mandatory (enforced), 2 or more ideal
- If you believe your change is simple, and non-controversial enough, and you want
to avoid merge conflicts, or blocking work before it gets enough reviews, label it with
needs further review
label and Merge it.
Feel free to post a link to a PR on #code-review to ask for more code reviews.
The goal of the policy is to strike a balance between good review coverage and fast iteration time in a globally distributed team consisting of mostly volunteers with varying levels of availability.
1 mandatory review is meant to enforce basic sanity and security cross-checking.
2 ideal reviews is a target we would like to maintain at the current level of project maturity.
PRs labeled with needs further review
label are meant to enable flexible
"code review debt". The label can be removed after further reviews are done.
Regular contributors are encouraged to review PRs even after they were merged.
Furthermore, PRs with needs further review
will be reviewed during weekly
"Code Review" meetings.
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.