Contributing to Open-Source Crypto Projects

Open-Source software and the trustless principles of crypto go hand-in-hand. It’s no surprise that many of the crypto projects have either already open-sourced their code or plan to as a part of their roadmap. I have had many people approach me and ask me essentially the same question, How do I get involved in the crypto/blockchain space? Depending on who is asking, I typically will give a different answer.
- For instance, if you have project management skills, I would recommend that you find a project that you can volunteer your services to and begin to build experience in the industry.
- If you have marketing skills I would recommend finding a project where your skills are needed and work pro-bono until you become indispensable.
- I recommend to EVERYONE that they begin contributing content to the industry as they advance in knowledge. A well written article is extremely helpful regardless of its complexity — as is a good podcast or similar content. This is something that anyone can do at any stage of their career and it shows interest and passion to colleagues and potential partners.
Yeah, but what about open-source…
If someone asks me how to get involved in crypto and I know them to be a technical person, I usually recommend that they find an existing open-source project on github and become a contributor. This can be really foreign and frustrating to developers coming from large institutions who are maybe not proficient in open standards or git in general.
I will warn you that you need a thick skin and humility as you undergo the process of learning to develop within this ecosystem, but your code and confidence will improve through it!
How to become a contributor
The first thing I would suggest is to find a project that has the following attributes:
- interesting — Solves a problem you are interested in
- active — Consistent github activity, online presence
- reputable — Solid team with credentials
- bounty — Pay for contribution whether through a bounty or hourly
The pay or bounty element is really only necessary if you need to be compensated. Many projects either have a development fund setup through their organization or a DAO(Decentralized Autonomous Organization) that offers payment types for developers.
Interesting
One of the best things about the internet is that it enables you to learn by doing. If you are interested in learning a particular technology it is fairly easy to become involved in a bigger project or start one yourself. College and bootcamps are great, but wouldn’t you rather actually build something that you are interested in and have it living online rather than some hello world app that your whole class did? Find a project that interests you and just start reading the code, fork it, and experiment. Submit pull-requests for errors in the documentation or write better documentation. The developers will love you for it! So many of the git issues they are assigned come from faulty or unclear README(s).
One of the first projects that I started working on was Musicoin and while I didn’t really contribute that much, I learned a tremendous amount. I have a passion for musicians to be able to earn a living wage for their music and these guys are trying to create a universal basic income through their blockchain streaming platform.
Active
You really want the project you are working on to be in active development. I would be wary of a project with the latest commit older than 3 months. That being said, there should be consistent and complex commits — not just text or format changes. If you are coming in and contributing there has to be someone that will review and merge your pull requests in a timely fashion. Take a look at the issues and pull requests for the project and see if anyone is responding to them. Try and find who is the primary project owner and contact them through their website, email, twitter, or log an issue for how you can get started. Sometimes you will see a Contribute.md
file in the repo with this information.
When I was first looking for projects to get into blockchain, Ethereum Classic had some git issues that were tagged as Good First. Going through the issues and seeing tags like this show that the platform is open and looking for contributions. I found Igor and some of the team at ETC responsive and kind and began a react-native wallet implementation for the platform. It’s a shame that the platform had to cease development recently…
Reputable
Sometimes you will find interesting projects that are active but as you dig a little deeper into the team behind them, you may find some shady characters. Unfortunately that is an issue with most projects, but there shouldn’t be any outright scammers on their advisory board or team. As 2017 and 2018 taught us, some crypto projects are simply in it for the wrong reason and there is no need to align yourself with such an outfit. As someone once told me -
Most people fail not because of lack of ability, but lack of character.
Bounty
A bounty is a reward in tokens or fiat for accomplishing a goal for the platform. For instance, MarioToken may give you 1000 tokens if you add a feature to their platform that allows them to integrate with a Nintendo Switch’s App Store. This is an optional feature of a platform, but I have found that most legitimate platforms don’t expect good developers to work for free and have structured their business to reflect that.
The thing to be careful about with bounties is that if you don’t deliver the feature -regardless of if it’s under your control or not — nobody gets paid.
I know this for a fact. I was working on a rather large integration bounty for Decred/electrumX/3rd party wallet and we weren’t able to get it working. I learned this the hard way and lost a weeks pay. The moral of the story is to try and pick epics that don’t have too many unknowns before embarking on them. I did several other bite-sized pull-requests for Decred that worked out just fine and I would recommend starting small as you begin to contribute.
Leave your EGO at the door
The truth is that once you leave the corporate software environment and enter the open-source community you enter another league. You enter a world where software is not just someone’s job, but an identity and a passion that aligns with their ideals in life. For some it may be anarchy, for some if may be just be a desire to be a part of a community, but it is definitely a more opinionated and intense environment.
Git Etiquette
You need to observe some git etiquette as you contribute to a project. It’s common for someone to be loose and sloppy with their commits on a project they own and maybe share with one other person. When you get into a project that is shared by dozens of developers, you really need to be concise with your commits and make sure that they follow a logical pattern.
Ie. Do a single commit for a logical unit of work like adding a new attribute to a model. Make the description useful and include language like resolves <issue-number>
if it resolves the issue in git issues.
Feature branches
Create feature branches with a useful name like <issue-number>-add-attribute
and rebase from master often. If you have a ton of commits on your feature branch that are not useful to the core team, git rebase -i
and rewrite multiple commits into a single more readable commit.
Pull Requests
Create pull requests before the code is complete but set the status as incomplete. This will allow other devs to take a look at what you are working on and maybe point something out that you have missed. Make sure that you follow the template for pull requests if one exists or copy a senior dev’s for your own. A good pull request should have at a minimum
- Summary — A summary of what the PR is for
- Issue Link — Link to the git issue or jira
- Test Scenario — How to verify that the code change resolves the issue
- Todos — What is left to do on this PR(version bump, code coverage, etc)
Lint/Format
If a project has a definition file like .eslint
it is a fair guess that they want you to run a linter on the project before pushing to the repo. Same with a .prettier
formatting file. Linting and Formatting code keep everyone on the same page with conventions and code style and keep unneeded diffs from the merges. Play by these rules and respect the conventions of the project that you are joining.
Have a thick skin
The devs on your open-source project are going to bust your chops and make you feel like an idiot. This is all part of it — of becoming a better developer, better collaborator, and a citizen of a global community that is passionate about what they do. I wish you the best in your journey and feel free to reach out if I can help you in any way.

