For many years, open-source projects have played a vital part in the revolution that we have been enjoying. Development has never been easier with the use of an open-source library/framework to quickly build and prototype.

However, the community behind those works is mostly doing it voluntarily without any pay. One example, and is also among my favorite is Sequelize where they have to resort to donations like OpenCollective.

What if, we can develop something that is trustless, yet easy for developers to connect with the work they are doing? Using the power of blockchain, all payment/donation made is transparent. That would be a win-win for all.

What it does

This app aims to address the pain of the open-source project maintainers to receive donations for the work they put in for the open-source project.

Most of the developers and open-source projects are hosted on Github. This makes it a suitable platform for us to build solutions on top of it. What's more, Github comes with Github Actions, which makes work even simpler adopt.

Therefore, we have built a Github Custom action called XRP Donation Action for developers to easily integrate it with their Github workflow. Once added, the custom action will watch for key events such as Pull Request and XRP transfer to update the state (label) accordingly. This will give the contributor and donor visibility of the current donation state.

example of the label for the state of donation

How we built it

There are 2 parts of the design for this project:

  1. Github custom action - This includes the designing of the custom action to make it friendly to use. Behind the scene, we call different endpoints using Github GraphQL API and many more to retrieve and update the label and comment state accordingly for the user.

  2. Interface of the donation page - This is developed using NextJS. Where we also store the state of the transaction in MongoDB for a fast query. The payment is also being done on this page using Xumm SDK.

Challenges we ran into

We initially wanted to work on a solution that tries to gamify the pull request. However, XRP lacks some basic smart contract functionality to make the game realistic. Escrow is best suited for post-payment and not storing the state.

Also, we weren't able to make the Github Action integrate seamlessly. The limitation is due to the Github Action API to create custom label that is used in the Github issue. The only fallback here is that we require the user to manually create the following 3 labels (XRPDonation:New, XRPDonation:Funding, XRPDonation:Done) which we also mention in the README.

Learning XRP and Github Actions. We are aware of the existing technology and functionality, however, we had never spent the time to deep dive into the development part of it. Spent a good amount of time going through the documentation and understanding how to navigate the docs.

Accomplishments that we're proud of

Nevertheless, despite the challenges mentioned earlier, we are proud of the solution that we managed to pivot to. The ease of use, low transaction cost, and no third-party commissions for the service make this idea impactful to the open-source community.

Also, we manage to overcome much of the learning curve from XRP and Github Actions partly due to the good documentation and community post that helps us to implement the functionality as imagined.

What's next for XRP Donation App

Since the Xumm app support for "testnet" or "mainnet" doesn't require any code change. The app is as good as ready to use on the "mainnet". All we need is to configure it in the Github Action params.

We also like to see the aesthetic to be improved further. With the help of a good product designer, we can look at how to improve the interface and visible comment on the pull request to increase the click-through rate for the donation.

Built With

Share this project: