deniz.in

Markets

Weather

Loading weather

· via Hacker News – Front Page (native)

Community fork revives Maiao, a Gerrit-style stacked pull request tool for multiple git forges

A community fork keeps Maiao alive after Adevinta's original maintainers moved on. The git review command turns each commit into its own stacked pull request across GitHub, GitLab, Gitea and other forges.

Community fork revives Maiao, a Gerrit-style stacked pull request tool for multiple git forges

Fork takes over after the upstream goes quiet

Development of Maiao, an open-source tool that applies a Gerrit-style review model to modern git hosting platforms, has moved to a community fork. According to the project's README, the maintainers behind the original adevinta/maiao repository have left Adevinta and are no longer maintaining the upstream project, so a fork published under the runetes organisation now carries the work forward. The project recently reached Hacker News's front page, bringing it renewed attention.

The name, the README notes, comes from a tiny island, chosen because the tool nudges developers toward smaller and tidier commits.

One command, one review per commit

Maiao's core interface is a single git review command. Run it on a branch holding several commits and the tool opens a pull request (or merge request, depending on the forge) for each commit, then chains them together: the first change targets the main branch, the second targets the first, the third targets the second. The README walks through a branch with authentication, middleware and admin-endpoint commits, which produces three stacked PRs linked in sequence.

This implements the stacked diffs methodology, which the README points readers toward via Jackson Gabbard's foundational essay, Graphite's workflow guide and industry analysis from The Pragmatic Engineer. Instead of one sprawling PR, reviewers see small, focused changes, while the final history keeps one logical change per commit.

Several supporting behaviours are documented:

  • Review feedback is addressed with git commit --fixup, which Maiao folds into the correct change.
  • Commits are tracked through Gerrit-style Change-IDs generated by the commit-msg hook, so follow-up patches land in the same review rather than opening a new PR.
  • When one PR in a stack merges, the remaining PRs are rebased automatically.
  • The provider is inferred from the remote URL for known hosts such as github.com and codeberg.org; self-hosted instances prompt once, with the answer stored in git config as maiao.provider.

Multi-forge support with uneven depth

The fork lists six supported providers: GitHub, GitLab, Gitea, Forgejo/Codeberg, Bitbucket Cloud and Cursor Origin, the last still in beta. Integration depth varies. GitHub and GitLab can register native stacks — explicitly on GitHub, and auto-detected from the target branch on GitLab with a cap of 20 merge requests — while Cursor Origin relies on a parentPullNumber field. Gitea, Forgejo and Bitbucket Cloud offer no native stacking, so Maiao's own branch-based mechanism does the work there. Draft handling also differs: GitHub and Cursor Origin expose an API field, GitLab and the Gitea family depend on WIP-style title prefixes, and Bitbucket Cloud has no draft support at all.

GitHub's newer Stacks feature is optional rather than required. Maiao probes the Stacks API, caches the result for 24 hours, and registers pushed PRs as a stack when the capability is present. On older GitHub Enterprise instances the step is skipped quietly and branch-based stacking still functions. A maiao.useNativeStack config setting exposes auto, always-on and disabled modes.

The project is free and MIT-licensed.

Why it matters

Stacked reviews have largely lived on dedicated platforms such as Gerrit, or on commercial tooling like Graphite. Maiao ports the workflow onto the forges teams already use — including self-hosted Gitea and Forgejo instances — without forcing a migration to a separate review service. That matters for codebases where reviewers drown in oversized PRs and where clean, commit-level history is valued.

The story is also a small case study in open-source continuity: a corporate-backed tool whose authors moved on was picked up by the community rather than left to rot, which matters to any team whose daily review loop is built around git review. The trade-off is that the new stewardship has no track record yet, and anyone standardising on the fork should watch whether the runetes maintainers can sustain development better than the original project did.

  • #open-source
  • #git
  • #code-review
  • #developer-tools
  • #pull-requests

Related posts