# Ways to contribute
So you want to contribute to IPFS and the ecosystem? Here is a quick listing of things we need help with and how you can get started. Even if what you want to do is not listed here, we probably accept contributions for it! If you're unsure, please open an issue.
The IPFS community believes that our mission is best served in an environment that is friendly, safe, and accepting, and free from intimidation or harassment. To that end, we ask that everyone involved in IPFS read and respect our code of conduct (opens new window). Please contact [email protected] if you need to report a problem or address a grievance related to an abuse report.
# Code
IPFS and its sister-projects are big, with lots of code written in multiple languages. We always need help writing and maintaining code, but it can be daunting to just jump in. We use the label Help Wanted on features or bug fixes that people can help out with. They are an excellent place for you to start contributing code.
The biggest and most active repositories we have today are:
- ipfs/kubo (opens new window)
- ipfs/js-ipfs (opens new window)
- libp2p/go-libp2p (opens new window)
- libp2p/js-libp2p (opens new window)
If you want to start contributing to the core of IPFS, those repositories are a great place to start. But the Help Wanted label exists in all of our repositories across the GitHub organizations:
- IPFS (opens new window)
- libp2p (opens new window)
- IPLD (opens new window)
- Multiformats (opens new window)
# Documentation
IPFS is a huge project and undertaking, and with lots of code comes the need for lots of good documentation! However, we need a lot more help to write the awesome docs the project needs. If writing technical documentation is your area, we'd absolutely love your help!
Before contributing to the IPFS docs, please read these quick guides; they'll save you time and help keep the docs accurate and consistent!
If you have never contributed to an open-source project before or just need a refresher, take a look at the contribution tutorial.
# Support
IPFS already has lots of users and curious people experimenting and using IPFS in their applications. These users sometimes get stuck or have questions that need answering. If you've contributed something with code or documentation, the chances are that you can probably help a lot of people with their questions.
The IPFS forum (opens new window) is the best place to go if you're looking for support.
# Testing
We're continuously improving IPFS every day, but mistakes can happen, and we could release something that doesn't work as well as it should — or simply doesn't work at all! If you like to dig into edge-cases or write testing scenarios, wrangling our testing infrastructure could be the job for you.
We work on CI tools (opens new window) and plan larger scale tests at ipfs/kubernetes-ipfs (opens new window).
# Design
We have many design needs, but only a small team of visual and UX designers who divide their time between IPFS-related projects and other work here. That means there are a number of issues that could use your design contributions. As home to IPFS Desktop and Companion, the ipfs-gui (opens new window) repo is a good place to look for opportunities to help move our design work forward. Simply filter by the label that best fits your skill set, such as design-visual (opens new window) or design-ux (opens new window).
# Issues / Triaging
With lots of code come lots of Github Issues. We need YOU to help with organizing all of this in some manner. We don't yet have any proper resources for getting started with this. Get in touch if you can contribute a sense of extreme organization!
We currently don't have a single place for this. If you'd like to start it, please let us know.
# Applications
IPFS is designed for others to build applications around it! Building applications and services using IPFS is an excellent way to find use cases where IPFS doesn't yet do a perfect job or uncover bugs and inefficiencies.
Get started by looking at our awesome-ipfs list. Build anything you think is missing! If you're unsure about something, please create an issue to get help or feedback on your specific problem/idea.
- ipfs/awesome-ipfs (opens new window)
- ipfs/notes (opens new window)
- ipfs/apps (opens new window)
- IPFS forum (opens new window)
# Protocol Design
IPFS is ultimately about building better protocols, and we always welcome ideas and feedback on how to improve those protocols. Post feedback, issues, and proposals in the specs
projects in our Github organizations or in ipfs/notes
(opens new window).
- ipfs/specs (opens new window)
- libp2p/specs (opens new window)
- ipld/specs (opens new window)
- multiformats/specs (opens new window)
- ipfs/notes (opens new window)
# Research
Finally, we see Protocol Labs as a research lab, where YOUR ideas can become technologies that have a real impact on the world. If you're interested in contributing to our research, please reach out to [email protected] or [email protected] for more information. Include what your interests are so we can make sure you get to work on something fun and valuable.