-- tl;dr start --
We're using gerrit now. And as we use it we all keep running into issues
stemming fundamentally from how gerrit is designed.
I had an irc discussion with Roan[1] awhile ago tossing around ideas on
how we would write a review system for git if we wrote one from scratch.
Based on a number of things I noted there I started a draft of how such a
review system would work:
https://www.mediawiki.org/wiki/User:Dantman/CodeReviewSystem
I probably haven't written down nearly as much detail on that page as I've
thought out for the actual system.
This is a long term project. It's definitely going to take awhile before
it's ready to manage MediaWiki. However we're using git now, so this
project doesn't have as much pressure. Since git is distributed things can
easily coexist; We can put this up on labs before it's ready for
primetime. When it's somewhat ready we can opt-in to trying it on less
important repos. And even when we switch it will be possible to do so in a
way such that gerrit and the review system co-exist until all changesets
in gerrit have finished being reviewed.
-- tl;dr end --
In one of my one-day bouts of coding I started trying to implement the
system:
https://github.com/dantman/gareth
Right now the code is EXTREMELY rough, and it barely does anything. My
focus is on getting the fundamentals needed for the system to work
(otherwise it's a fancy ui that does nothing). So I've made short-cuts on
a lot of things so I don't get held back implementing the clean stuff.
I'm probably the only person with a whole enough idea of how this'll work
to push forward on the fundamental parts of it.
However despite that I welcome help on the project and have a number of
things that other people should still be able to write while I work on the
fundamental pieces.
Right now I've skipped past a number of things:
- We need a views system, something that will let us template out many
sections of html. And will allow different themes to override them.
- Right now I've copied some of the classes from MediaWiki like WebRequest
and stripped stuff out of them. Anyone up to it is free to clean these up
into the start of a real framework based on MW's code that can in the
future be the base of both this and MW.
- The project needs a good database system. I copied our database classes
in but never got to using them. I'm isolating all database stuff into some
model classes so different database handing can be swapped in. Anyone who
feels up to it can adapt our database code to work as a framework for the
review system.
- Right now I'm implementing git handling using proc_open to interact with
git's porcelain and plumbing commands. Anyone who feels up to the task is
free to implement a PHP extension for interfacing with git we can swap
over to using.
- I'd really like to eventually have a way to list a set of commits using
a nice line graph the way that things like gitk, gitx, and source tree
too. I welcome anyone who feels like trying to write something like a JS
library to generate in-page SVG (Raphael?) making a vertical list of
commits listed that way.
I welcome anyone who feels like turning the short-cuts into a properly
written system. And anyone who feels like turning MediaWiki's code into a
framework. Or anyone who feels that a framework they know fits best and
wants to make the review system use it (Though no file layout controlling
MVC frameworks, please).
[1]: The discussion was buried somewhere deep in
http://bots.wmflabs.org/~petrb/logs/%23mediawiki/20120329.txt try
somewhere around [20:16:09]
--
~Daniel Friesen (Dantman, Nadir-Seen-Fire) [
http://daniel.friesen.name]