# Bitcoin Open-Source Development
## Grant Programs
Spiral: https://spiral.xyz/
HRF: https://hrf.org/program/financial-freedom/bitcoin-development-fund/grantees/
## Starting open-source work in Bitcoin
Someone asked me: "How can I get started doing open-source work in Bitcoin?"
When people think of open-source work on Bitcoin, they typically think of [[Bitcoin Core]]. Working on Bitcoin Core is an ambitious and challenging goal worth pursuing. That said, [[C++]] is a tough language to learn and get up to speed with at the quality required of contributors. I generally find [[Rust]] a lot more accessible - it's good training for eventually doing C++ development, and is a highly transferable skill. In general, because of Rust's memory safety guarantees, a lot of Bitcoin development is moving to Rust, and the [[Rust Bitcoin Community|rust-bitcoin]] open-source projects can always use more help.
- Rust-Bitcoin: https://github.com/rust-bitcoin/ The closest technically and culturally to Bitcoin Core development, typically lower level crates. Data types, consensus, cryptography. Has a very high bar for quality. Maintained by legends such as Andrew Poelstra.
- LDK: https://lightningdevkit.org/ Lightning Network protocol implementation and related (typically protocol-level) utilities. This is the probably the most well-resourced open-source project, and has top tier talent working on it, led by Matt Corallo and mostly funded by Spiral. Working on LDK proper (`rust-lightning`) is the most challenging, if you're drawn to that, as Lightning is a very complex interactive protocol, and LDK implements the protocol while also meeting insane requirements (abstracted disk/io/networking/runtime etc). But there are also more approachable entrypoints such as ldk-node, ldk-sample, and ldk-server which are at the node/application level instead of the protocol level.
- BDK: https://bitcoindevkit.org/ On-chain wallet library used by an increasing number of Bitcoin wallets. Generally more approachable than LDK proper. My view is that they have a talent shortage and are most in need of additional help!
- PDK: https://payjoindevkit.org/ Payjoin library with the goal of improving Bitcoin privacy by hiding payment amounts and breaking the common input heuristic used by Chainanalysis et al. It's a small project headed by just 2-3 devs, but they are moving quickly and have very high quality code.
Despite the common names and branding, LDK/BDK/PDK are all independent projects with their own characteristics. A good way to get started is to just peruse the open issues and make a PR!