Hi, everyone. I'm looking for some clarification about the process whereby code gets deployed on the Wikimedia cluster. Not so much the technical side of things, and in fact, I'd love to keep this conversation VCS-agnostic. We'll be moving to git soon and things will change, but these questions apply regardless.
I've been working to review a new extension that Petr Bena wrote, InteractiveBlockMessage. It's a simple little extension that adds some template magic for blocked users, to facilitate the creation of less confusing talk page templates. This bug has links to the relevant code and on-wiki discussions: https://bugzilla.wikimedia.org/show_bug.cgi?id=32819
Here's my present understanding of the process for community-contributed code:
1. Discussion happens, a need arises, etc. 2. Someone writes some code, probably in the form of an extension 3. That extension is checked in and makes its way through code review. All revisions must be ok'd to deploy. 4. On-wiki consensus is reached regarding deployment, and the discussion closes. 5. A ticket is created to request deployment on a specific wiki 6. Someone Who's Been Around A While (Tim, Roan, maybe others) looks over the code and decides it's okay 7. (maybe) A discussion regarding the extension happens here on wikitech-l. 8. The ticket gets picked up, extension gets deployed, ticket gets closed.
(Of course, I'm probably getting this wrong and I'm sure the steps are out of order. Please correct.)
This differs rather significantly from the deployment process we've been following for new code here in the office. That's more like:
1. Someone decides we need the code. 2. The code gets written 3. Code is checked in, makes its way through CR, must be ok'd before deployment 4. A deployer schedules a window and deploys it.
Note that I'm leaving out the technical parts (creating a patch, pushing to prototype, testing, etc...) That's unnecessary detail here. This message concerns only the social part of the procedure.
My specific questions:
Process B is what I'm used to, but it seems that for this extension, it's process A. When do we pick one or the other? Is process A for community-contributed code, whereas B is for stuff from WMF? Do things change when we're deploying a whole new extension? I understand that this process is informal, and I'm not necessarily pushing to formalize it, but maybe a few general guidelines or a minimum standard would help make things more clear.
The step where Someone Who's Been Around A While reviews the code makes sense, but it seems to be applied inconsistently, or perhaps the conditions for that just aren't clear. When does code need to be run past one of these very busy people, and when is it okay to push it without? Is there a way to indicate which code needs this review, and when it's done aside from the existing 'OK' status in CR? Secondly, who *are* these people? I've heard Roan and Tim so far, but I bet there are more.
Is a discussion on wikitech-l generally part of the process in addition to the on-wiki discussion? Is that only for new extensions, or for other types of deployment as well?
I would love to get this worked out and document it, so community developers can better understand how to get their code deployed. Of course, if this is already documented somewhere please send me a link. :)
-Ian