Diederik van Liere wrote:
We are making three fundamental changes in one-shot:
They are not that much of change. It is like if you changed from using a paper map and an old car to a nice SUV with a GPS. It is still a lot of metal on 4 wheels with one purpose: move some fresh meat from A to B.
The model is the same. Only the tool changes. (you can quote me on this when we finally take the decision to migrate to JavaScript or Python)
- Migrating from a centralized source control system to a
decentralized system (SVN -> Git)
Decentralization itself is just a buzz word for the twitter guys. In the end, it does not change that much since most people have a reference repository. I guess most developers will use the WMF repository as a reference, or at the very least, all patches will eventually end up in the WMF repository.
We could imagine having the WMF feature team to use their own repository then submit a nice giant patch once in a while.
- Introducing a new dedicated code-review tool (Gerrit)
That one is a habit change. It is a bit disturbing for the first week, just like any new web interface. We will eventually get used to it. I am sure people will easily adapt to the GUI and we will be there to assist.
- Introducing a gated-trunk model
We have been using a gated-trunk model for as long as I can remember. Here how it goes with subversion/CodeReview:
=======================[ SVN PROCESS ]================================ - someone submit its patch proposal in subversion trunk - patch is reviewed then either it: -> gets rejected : revision is reverted and marked as such -> is accepted : revision marked 'ok' -> it needs enhancement : marked 'fixme' repeat :-)
From time to time, all patches marked 'ok' are allowed to pass the gate
and land in a wmf branch. Then we deploy them. ======================================================================
We will use the exact same model with git/gerrit:
=======================[ GIT PROCESS ]================================ - someone submit their patch proposal in Gerrit - patch is reviewed then either it: -> gets rejected: marked abandoned in Gerrit -> is accepted : patch is merged in WMF reference repository by Gerrit -> it needs enhancement : comment asking submitter to enhance it.
From time to time, all patches merged in the master branch are allowed
to pass the gate and land in a wmf branch. Then we deploy them.
As a summary:
commit to trunk --> submit to Gerrit revision marked 'ok' --> change merged trunk to WMF branch --> master into WMF
Note: it works the same with Bugzilla, people send their patches as attachments to a bug report. It reviewed there and eventually patch is applied by a gate keeper.