Skip to the content.

Workshop — Blue Ridge Ruby 2026

90-minute workshop, then open hacking.

Premise

You depend on dozens of gems. Some of those projects need help. This tool finds the overlap. We built v0.1; you’re going to make it better.

Before the workshop

git clone https://github.com/cdhagmann/gem-contribute
cd gem-contribute
bundle install
bin/gem-contribute

If bundle install complains about ratatui_ruby building a native extension, you need a Rust toolchain. On macOS: xcode-select --install is usually enough. On Linux: sudo apt install build-essential plus curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh.

If you can’t get the build working, pair with someone who can. The workshop scales fine with two-person teams.

Arc

0:00 — 0:15 · Demo and tour

I run the tool against a real Gemfile.lock. We walk through what each pane does, then through the architecture (docs/design.md).

0:15 — 0:30 · Architecture overview

The four-stage pipeline: parse → resolve → adapt → render. Where things are, why they’re separate, what an adapter looks like. The point is to give you enough mental model to know where your changes go.

0:30 — 1:00 · Exercise: build a feature

Pick one issue from https://github.com/cdhagmann/gem-contribute/issues?q=label:workshop. They’re scoped to be doable in 30 minutes by someone who’s never touched the codebase. Examples:

If you finish, pick another. If you don’t finish, that’s fine — open a PR with what you have and we’ll land it together.

1:00 — 1:30 · Show and tell, plus the contribute-the-tool flow

Anyone who wants to demo their change does. Then I run gem-contribute against this repo’s own Gemfile.lock and we use the tool to find issues to contribute to in our actual dependencies.

1:30 — end of day · Open hacking

Stay if you want. Work on this tool, or — better — use it on a project you depend on. The goal of the rest of the day is at least one merged PR per attendee, somewhere. Doesn’t have to be here.

Ground rules