Introduction

RoninDojo was birthed from the principles of Free Open Source Software (FOSS) in 2019. Without asking for permission, S2l1 and myself (Zelko), built an entire project around the FOSS node infrastructure "Dojo" designed by LaurentMT from Samourai Wallet. From there we added feature after feature, some of which would eventually be implemented into upstream "Vanilla Dojo". This is what FOSS was meant to be, a back-n-forth of idea sharing and helping each other improve.

Given our history, we are always open to contributions and people who want to help make our project better and more refined. However, because we are on a self-hosted Gitlab instead of GitHub (a trade-off made to prevent possible censorship from Microsoft) we are going to outline exactly "How to Contribute Code" to the RoninDojo, given it is slightly different than contributing directly on GitHub.

The Process

If you are reviewing our code on any of our main repositories (RoninDojo, RoninUI, RoninOS), and you see some areas that can be improved or have features added to, you may be wondering: "Where do I start? I tried to create a Gitlab account and nothing happened."

This isn't meant to restrict access to contributing, but to restrict unwarranted and random users from clogging up the Gitlab server.

So where do you go from here?

Step 1: Write/Test your Code

  • Clone the target repository on your personal machine and publish it to your own personal GitHub (or similar) repository.
  • Create a new branch feature/<feature_name> from the target branch develop  and make whatever changes you think will improve the project and push it to your repository.
  • Next test out these changes on your RoninDojo. On an existing setup, you'll need to set the target branch in the ~/RoninDojo/Scripts/default.sh or change the target in the user.conf ~/.config/RoninDojo/user.conf and run the RoninDojo upgrade from the RoninCLI menus.
  • If you need to build an image with it, be sure to also clone RoninOS and edit the files customize-image.sh and  overlays/RoninOS/usr/local/sbin/ronin-setup.sh. In there, update the references to the Gitlab repos so that both the image build procedure and first time boot of the image make use of your code.
  • Once you are content with the changes and they work, you are ready for Step 2.

Step 2: Notify RoninDojo Team

Step 3: Submit a Merge Request

  • Now that you have a Gitlab account, you'll need to push your feature branch to our repo on Gitlab. The suggested method is to add a new remote to your local repository (or change what origin points to) and push your feature branch to it.
  • Next create a Merge Request to target branch: develop
  • From here monitor the MR comments from other team members for any issues or concerns. If all issues are resolved, your MR will be approved and merged by one of our core team members.
  • Depending on our release schedule and roadmap we might postpone the change for a release. So it may be that we wait with merging it until after a release branch has been made.
💡
Note: You may have a fantastic idea that doesn't align with our vision, or that it's not something we can feasibly support, or it might be that the feature itself introduces a security risk we can't technically overcome.

This means we may not implement your MR. This doesn't mean it was a bad idea, but that it's not in line with the path we are taking. This will most likely be addressed in Step 3.

Conclusion

The method laid out above was laid out with explicit intent to understand that you don't start with asking permission and hope that we will ALLOW you to write code. NO. Remember:

Asking Permission Is Seeking Denial!

Without the community giving feedback and contributing code, RoninDojo as a whole would not exist. I hope this guide helped shed some light on how to contribute code and ideas to our project. We know that our community is full of passionate individuals who care about Bitcoin and privacy as much as we do, and we want to hear from YOU!

Share this post