Community-driven RBS repository

Hi. I’m Pocke, a maintainer of RBS. I’m writing this article to share an update on ruby/gem_rbs_collection repository.

As of March 2024, significant improvements have been made to the RBS repository, ruby/gem_rbs_collection to enhance its community-driven approach.

This article provides an update on the changes and their impact on the repository.

What is ruby/gem_rbs_collection?

Before the main topic, let me explain what the repository is. You can skip this section if you are already familiar with it.

The repository, ruby/gem_rbs_collection, is a collection of RBS files for gems.

It contains RBS files for many gems. Anyone can add RBS files for a gem to the repository by creating a pull request.

If you are familiar with TypeScript, you can think of it as DefinitelyTyped for Ruby gems.

What has changed?

The repository has transitioned to a truly community-driven model.

Previously, the repository was not actually community-driven. Any contributors could open a pull request, but most of the pull requests needed a review from the repository owner (me) to be merged. It was a bottleneck for the repository to grow. Therefore I decided to grant more permissions to the community to maintain the repository.

I introduced the concept of “Gem Reviewer” to the repository. Gem Reviewer is a role that is responsible for maintaining the RBS files for a gem. Gem Reviewers can merge pull requests for the gem they maintain. We can merge pull requests more smoothly than before by delegating the review process to Gem Reviewers.

Implementation

We use GitHub Actions to grant permissions to Gem Reviewers. Actions assign the Gem Reviewer to the pull request and merge the pull request with the Gem Reviewer’s approval.

See the .github/workflows/ files for the implementation details.

For more information

Do you want to contribute to the repository? You can find more information in the CONTRIBUTING.md. It describes how to contribute, and the Gem Reviewer role.

I wrote a rough design doc for this change. It may help you understand the background and the design of the change. https://hackmd.io/OBmj4M3tT8SOUXdGjKqntg

I’m planning to make a presentation with the same title at RubyKaigi 2024. I’ll describe this topic in more detail there. Such as background, implementation, and security. Please check it out if you are interested!


I have described the recent changes in the repository. I encourage you to contribute to the repository and be a part of the community!

Published-date