Ratatui Received Funding: What's Next?

10 minute read Published: 2024-04-08

Let's delve into the realm of open source funding along with Ratatui's journey.

Table of Contents

Ratatui

In case you haven't been following, I have been actively taking part in an open source project called Ratatui since last year. It is the community maintained fork of tui-rs project which is a Rust library for building terminal user interfaces. Ratatui is the successor of tui-rs and I'm very proud to say that we have built an amazing ever-growing community around the Rust/TUI ecosystem. These awesome TUI tools and libraries and the expanding adoption from companies (such as Netflix's bpftop) are some of the biggest motivations for us to elevate Ratatui to make it the future of the terminal.

Check out our GitHub here: https://github.com/ratatui-org/ratatui


What happened?

In November last year, we got an issue in GitHub with the title of "Donating Funds to Ratatui".
The contents were the following:

Hi Ratatui, I'm one of the core contributors to the Radworks project.

Radicle has been using Ratatui. It's in fact one of our most critical dependencies!

All Radicle’s core-contributors really appreciate the work you all do and we want to make sure that you are all well-funded to keep doing it.

For that reason, we have decided to donate some funds to your project through Drips
(an initiative that is coming out of our organization for funding FOSS).

The problem and the proposed solution in the issue were even more interesting:

Problem: None, you've done amazing work. This is a thank you.

Solution: Claim funds. Engage on a call to understand what we are trying to do here.

If you don't need 100% of the funds, share with your own critical dependencies.

I especially like the last part!

Neither I, nor anyone in the team had any idea about this so we quickly started researching what this meant for us. Luke from Radworks was also kind enough to hop on a call with us to explain the process and how the Drips Network works.

Here are some relevant links if you are interested in reading more about this:

At the end of the day, it seemed like we had a funding of $20k+.

This was so unexpected and surprising considering that no one was/is working on Ratatui with financial expectations. But no one was opposed to the idea of covering our future expenses!


Our Strategy

When it comes to funding open source, I see a couple of viable options:

Our situation did not fully apply to any of these, so we have to come up with something.

I saw that Sebastian Thiel (@byron) (maintainer of Gitoxide) already claimed funds on Drips so I reached out to him about his experience. He gave us very detailed information about his crypto setup, but unlike him, his solution didn't fully fit our needs as a team of 5+ people, because it would be challenging for a single person to manage the funds.

And... taxes? Nobody wants to be responsible for random money sitting in their bank accounts.

As some Turkish saying goes: "If you have the money then you have the problem."

In hindsight, this made us re-consider the possibility of applying for GitHub Sponsors. After some discussion, we also decided to set up Open Collective alongside of GitHub Sponsors and use Open Collective to manage our funds. We registered our collective to GitHub Sponsors which enabled us to manage everything at one place. Pretty neat feature!

We looked into the possibility of doing the same with Drips Network and eventually decided that if Open Collective is able to create a crypto wallet for us, that will presumably be the easiest way to send funds from Drips Network to Open Collective. They would handle taxes and other legal matters for us, and it would be just perfect.

For the curious, Open Source Collective (our fiscal host) takes a 10% cut for operating costs.

Managing Funds

Shout out to Benjamin Nickolls (@benjam) from Open Collective, he greatly helped us to figure out the crypto-related details of things and set up a multi-signature wallet. After this, we managed to get everything dripping 💧

All of these were in the works for the past couple of months. We now have the following setup and everything works like a charm!

Ratatui Funding Diagram

You can see the related transactions on Open Collective:

Ratatui Transactions


The Future

Now that we are an open source project and the money is involved, we need to draw some lines about how we manage these funds. Additionally, we need to come up with a thinking model that will be taken as a baseline when it comes to utilizing this financial source.

Expenses

In the simplest terms, the primary and the most traditional reason that companies make money is to stay afloat and expand their business.

In our case, these are already semi-covered thanks to open source. We don't usually worry about the project dying, because if that happens tomorrow someone else might fork the project and start Ratatui v2 (which is exactly what we did).

However, there might be still financial costs of maintaining an open source project. These include things such as a custom domain, additional services/servers, promotional elements and so on.

Thus we will be using these funds to cover these maintenance/promotional costs.

Sustainability

As companies receive investment, they just don't go "hey we got the money let's go home y'all".

That is the same in our case as well. We still have a lot to do.

So can't we just pay people to do work?

That's the beauty of open source, people are already doing work. Not because they want to get rich off of the project, but because they want to learn new things and have some fun on the side.

Paying people for their open source work will also push the incentive that everyone might get paid through this work. Which means when there is no money left, there might not be a project left to work on.

However, don't get this wrong, this isn't a sneaky approach to make people work for free. We will still support people / other projects that we depend on. Finding the balance is the key.

It is good to remember that this policy works for us and is not a one-size-fits-all solution. ⚠️

Crucial tasks

We are happy to support people who are working on core/crucial/technical tasks that won't be worked on otherwise. Some examples might be,

This does not give the promise that we will throw money at you if you do one of these.

But we absolutely don't say the otherwise 🐭

This is similar to Neovim's approach where funded contributors are expected to provide full-time, high-quality contributions on GitHub regularly.

Supporting our dependencies

Ratatui is dependent on other Rust libraries such as crossterm.

We don't want them to go unmaintained, so we are considering to support these other open source projects as well.

Non-profit model

To understand the way that we are aiming to manage our funds, we can take a look at the differences between "Company vs. Non-profit":

CategoryCompanyNon-profit
FocusProfit generation and maximizing shareholder valuePrimarily focused on serving a mission or cause
MotiveFor-profitNot-for-profit
Profit DistributionCan distribute profits to shareholdersCannot distribute profits to individuals or shareholders
StructureGenerally structured with a hierarchical management systemOften structured with a board of directors or trustees
Tax ObligationsCan face tax obligations on profitsMay be eligible for tax-exempt status and can receive donations/grants

We are closer to being a non-profit in that sense.

That is why we don't split the funds among maintainers / project members.

Beyond money

Why do people work on this? You invest your time and make no money. What is the point?

Money is not everything.

The contributors likely stand to gain more from second-order effects such as:

TL;DR: open source is a beautiful thing. 🌸


Closing

We will be managing the donations/sponsorships we receive through our Open Collective transparently in line with the principles outlined in this blog post.

We will be also reaching out to the creator of tui-rs (Florian Dehau (@fdehau)) about offering a one-off donation for his past work on this awesome library. I will update this post with any developments.

Edit: Florian said he's grateful to see the community taking over the project and doesn't want the donation. He's happy for it to fund the current maintainers' work, as seeing his project thrive without his involvement is a reward in itself.

To follow the updates:

Acknowledgements

💖 Huge thanks to:

🥂