Review Marketplace

From PostgreSQL wiki
Jump to navigationJump to search

Introduction

This is a system for trading patch reviews. See #Documentation.

Offer book

#Subject #Action required Offerer email (send offers here) #Restrictions on compensating review proposals
https://commitfest.postgresql.org/patch/5091 inplace update: send nontransactional invalidations #r1 noah@leadboat.com None

Active trades

Side 1 Side 2
#Subject #Action Owed by Due date Done? #Subject #Action Owed by Due date Done?
https://pgcf.example.org/patch/19 #r1 1@example.com 2030-01-01 No https://pgcf.example.org/patch/20 #r1 2@example.com 2030-01-01 Yes

Settled trades

Side 1 Side 2
#Subject #Action Owed by Due date Done? #Subject #Action Owed by Due date Done?
https://pgcf.example.org/patch/1 #r1 1@example.com 2030-01-01 No https://pgcf.example.org/patch/2 #r1 2@example.com 2030-01-01 Yes

Documentation

This is a system for matching people needing patch reviews, so they can trade.

Process

Three steps activate a trade:

  1. Person 1 adds a line to #Offer book that boils down to advertising something like, "My VAX support patch needs review. In exchange, I'll review anything but ECPG patches." I recommend notifying reviews Discord that you added something here and also mentioning it in your mailing list thread's next message. Anyone can add to the offer book.
  2. Person 2 reads the offer book and emails Person 1 with an offer like "I'll review VAX by 15Jul if you review my i286 patch by 15Jul". Anyone can send offers to anyone in the offer book.
  3. If they come to an agreement, one removes the #Offer book line and adds an #Active trades line with the agreed details.

Once both parties have completed the action on their side of the trade, anyone can move the line to #Settled trades.

Field details

Subject

This is usually a commitfest entry URL, but it can be any reference to the artifact needing attention. For example, it could be a pull request URL on an extension's repository.

Action

This is what must happen before marking this side of the trade "Done". The field can contain an inline description, or it can link to a definition just below here. Feel free to add more definitions and use them in your offers.

#r1: Review type 1

Diligently search the entire patch for defects, and report all defects found. If you find one or more defects, mark the patch Waiting on Author. Otherwise, if the author is a committer or you are not a committer, mark the patch Ready for Committer. Otherwise, commit the patch.

Posting partial reviews is welcome, but the review is done when you reasonably believe you have found all defects in one patch version. In other words, if the next patch version fixes all reported defects without introducing more defects, you believe that future version will deserve Ready for Committer. Aborting review after the first few defects does not finish an r1 review. That said, you do not owe review of subsequent versions after complete review of one version.

(This captures Noah Misch's opinion on what "review" means by default.)

#c1: Commit

Like #r1, but the other party must be a committer and shall commit the patch or say why all committters should refuse to commit the patch.

Restrictions on compensating review proposals

If the offerer is open to reviewing essentially anything, enter "None". Otherwise, describe the limits of what you want to review in exchange for the requested review. For example, if you review only spgist patches or everything but executor patches, you could say that here.

Exceptional situations

If a party regrets an active trade, the can add an offer book entry for the action they no longer want to complete. If they find a new match, they have essentially delegated the unwanted action.

Background

A topic at PGConf.dev 2025 Developer Meeting proposed this as an experiment. The original use case was patches sitting in Needs Review for several commitfests. Feedback from the developer meeting improved on the proposal. If this attracts significant usage, we may consider building a software tool to replace this wiki page.

Maintenance of documentation

Feel free to edit this documentation like any other part of the wiki.