Hi Trevor and Roan
Comments inline (Roan, my reply to you is way below)....
On Tue, Nov 2, 2010 at 10:34 AM, Trevor Parscal tparscal@wikimedia.org wrote:
The idea of dividing deploy and enable seems strange to me. Only in the case of a feature-flagged bit of core code or extension which has not been deployed yet would this even work, in all other cases deployment is enabling because you've just updated active code.
Perhaps "deploy" is a little too ambiguous, so I'm open to changes there. Basically, there are three distinct stages that I'm picking out: a. The act of reviewing code for suitability for any purpose (e.g. shipping with MediaWiki tarballs) b. The act of making an extension or modification available in the production branch c. The act of adding the bits of LocalSettings.php (er...InitialiseSettings.php) for enabling on a particular wiki
I've named these "review", "deploy" and "enable", but if there are better names, that's fine.
These three steps all have different operational ramifications, and can exist independently of each other. While one combination doesn't make sense, most have a sensible interpretation. Let's step through the full list of combinations that can exist on an open bug (since there are only eight of them):
0. no tags - probably no code, or incomplete code. Owner: any developer who can code to completion 1. "need-review" - implementation exists, but probably only of interest for MediaWiki tarballs. Owner: any reviewer 2. "need-deploy" - reviewed implementation exists, but only in trunk. Needs to be published in deployment branch and scap'd, though there may not be a particular wiki ready for the feature yet, or there's a separate issue filed with the "need-enable" flag which spells out the conf for a particular wiki. Owner: WMF reviewer 3. "need-review" + "need-deploy" - implementation exists, but needs review prior to publication in the deployment branch. Owner: any reviewer 4. "need-enable" - reviewed implementation exists, is in deployment branch, and has already been scap'd. Just needs to a nudge in the configuration for a particular wiki. Owner: WMF Ops 5. "need-enable" + "need-review" - this is probably nonsense. Probably needs all three tags. 6. "need-enable" + "need-deploy" - Reviewed implementation exists, but it hasn't been deployed yet. Owner: WMF reviewer 7. "need-enable" + "need-deploy" + "need-review" - there's an unreviewed implementation for a feature which is being requested for deployment on a specific wiki. Owner: any reviewer.
Additionally, the idea of having a division between need-review and need-deploy is counter to the arguments made in D.C. which were that essentially review is a by-product of deployment, not the other way around. Marking something as need-deploy shows reviewers what should be reviewed and merged into the deployment branch.
Nope, not counter at all. It's very important for the sanity of those trying to keep track (e.g. me) that we distinguish between the deployment-bound stuff that hasn't been reviewed, and the deployment-bound stuff that has been reviewed. I believe the conversation in DC centered around the difference between state 1 and state 3 above, where we agreed that we shouldn't worry about optimizing the process for state 1. However, I don't think anyone can make a convincing argument that the distinction between state 2 and state 3 isn't important.
Code-review needs a way to tag files and directories rather than just revisions. These resource-tags would be persistent between revisions, allowing us to say "show me 'new' revisions that affect 'deployment' files and directories" or some such. This would likely be core + some extensions.
The more work we have to do over and over (such as adding and managing tags on revisions) the less likely we are to keep it up.
I think it would be cool to have this feature, but I think we can handle this in Bugzilla without new tools.
On Tue, Nov 2, 2010 at 12:40 PM, Roan Kattouw roan.kattouw@gmail.com wrote:
As to Rob's suggestion of a need-enabled tag: I don't think that makes any sense. We don't deploy something, then leave it disabled on all wikis, we always enable it somewhere (granted, we sometimes do dark launches or launches on test.wp.o only, but that's always an immediate preparation for enabling it for real). Our current procedure of enabling a feature on a certain set of wikis (possibly all) upon deployment and have requests to extend that set go through the shell request procedure works just fine IMO.
I'll admit that part of the reason why I added "need-enable" is because I had forgotten about "shell", so you're probably right; "need-enable" is probably unnecessary.
However, it looks like our current workflow involves removing that keyword whenever something needs review (see https://bugzilla.wikimedia.org/show_bug.cgi?id=20246 for an example). It seems to me that it is *way* too easy for a request to drop off the radar if the person who reviews it drops the "need-deploy" flag or "need-review" flag without adding the "shell" flag back in. Is there a reasonably robust way of mitigating against that problem?
Rob