How to do a Code Tour

From Dreamwidth Notes
Revision as of 01:29, 4 June 2012 by Kaberett (Talk | contribs)

Jump to: navigation, search

What is a code tour?

A code tour lists information about all of the bugs in Bugzilla that have been closed in the past week, or since the last code tour. You can view previous code tours in [info]dw_dev .

How to make a code tour

First, find the ending date of the latest code tour post by viewing the previous code tours. Then, plug that date into the Code Tour Template Generator, and click Generate. The script will automatically find all the RESOLVED FIXED bugs that have been modified since then, and present a text box with a pre-filled template, which you should copy and paste into a text editor on your computer.

There may be a few bugs that overlap with the previous code tour; those should be listed at the top, and can be deleted. (If any bugs from the previous code tour are in the list, but don't appear at the top, that means they've been updated since the last code tour and you should check them in case there have been any new patches.)

You should double-check the 'Category' and 'Patch by' fields to make sure they accurately reflect the bug (for example, sometimes the "patch by" field only includes who made the patch, but other people may have worked on it, especially in the arena of themes - and sometimes the assignee on the bug isn't the one who actually does the patch!), and then write a description for the bug. By default, the text "FILL IN" is pre-filled to make it easy to search for at the end and see if you missed anything, but if you prefer it blank, there's a ticky box on the first page of the generator that will do that for you.

Then, make an entry in [info]dw_dev tagged "code tour". The subject line should include the dates covered by the code tour, and the tour should be behind a <cut> tag to spare people's reading pages. The time to do these is generally the day of the [info]dw_news update or the day before. (The day for this has in the past been Wednesday, or Monday, but is as always subject to change.)

How to manually make a code tour

(You generally don't need to do this; this is just included for reference in case the generator fails. You should normally use the section above.)

First, get a link to a Bugzilla search from [info]denise or by putting the start and end dates of the week into this search form. Then, put the information each bug into this example format:

<a href="">Bug NNNN</a>: Bug Title
Category: What section of the site is this bug about?
Patch by: <user name="username"> or submitter name
Description: What problem does this bug solve, or what new feature does it add?

Then, make a post to [info]dw_dev tagged "code tour". The time to do these is generally Monday, so they can be included in the [info]dw_news update.

Makes sure to double check the bug--sometimes the "patch by" field only includes who made the patch, but other people may have worked on it, especially in the arena of themes.

How to make a Bugzilla search for a code tour

The base link is this:

To that link, you want to add this to the end: &chfieldfrom=2010-03-02&chfieldto=Now where chfieldfrom has the day after the last code code tour on it (replace the 2010-03-02 with the appropriate date). You can replace chfieldto with a date, too, if you like, but "Now" should work.

Template Making Script

If you are comfortable with using Python on the command line, here is a script that can help you make a template with all the bugs in a CSV download of the week's bugs. (You can find the CSV download link on the bottom of the search page. You'll want to make sure to have these columns listed: Full Summary, Component, Assignee Realname, and Resolution.)

#!/usr/bin/env python
# usage: python bugs-2009-09-15.csv
import csv, re, sys
def parse_assignment(assign):
    """Attempt to parse the assignment for the submitter's username.
    Use the full assignment field otherwise."""
    # [:username]
    match ='\[\:([a-z0-9_]+)\]', assign);
        return '<user name="%s">' %
    except (IndexError, AttributeError):
        return assign
# Get the CSV file for the bugs
bugs_file = sys.argv[1]
bugReader = csv.DictReader(open(bugs_file))
# This is a template for a bug record
template_record = """
<b><a href="">Bug %(bug_id)s</a>:</b> %(title)s
<b>Category:</b> %(category)s
<b>Patch by:</b> %(patch_by)s
<b>Description:</b> FILL IN
# For each row in the bug CSV file, put the appropriate variables into
# the template and print
for row in bugReader:
    replacements = { "patch_by": parse_assignment(row["assigned_to_realname"]),
        "bug_id": row["bug_id"],
        "category": row["component"],
        "title": row["short_desc"] }
    print template_record % replacements

How to do a Bugs (old and new) Tour

<a href="">Bug XX</a>: SUMMARY Category: Reported on DATE by <user name="NAME"> Severity and Priority: Status: assigned to/unassigned Description:</b>

Then, make a post to [info]dw_dev tagged "code tour". The time to do these is generally Monday, so they can be included in the [info]dw_news update.

How-to: a ten-step guide for first-timers

  1. join #dreamwidth[1] and cry on people until they hold your hand
  2. spot a post in [info]dw_volunteers requesting a code tour
  3. follow the link to the list of bugs/HTML template for the code tour
  4. open up the wiki page on how to do a code tour (well done! you're here!) and the handy Bugzilla list (both linked to from the handy HTML template)
  5. copy the template into your Post Entry box. It's worth checking the previous code tour to make sure you don't have any duplicates, especially if you have more than 15 bugs to write up.
  6. stare at it in dismay until you work out whether (and how) you want to try to be funny (that's the hard part!)
  7. write the pre-amble and closing notes, stick in the cut tag, fill in the subject with "Code tour: date--date", open all of the bug descriptions at the Bugzilla link
  8. for each bug:
    • confirm that the "patch by:" field matches the info given on the bug page (esp. in comments)
    • the commit message - generally in the final comment - forms a good basis for your summary in the "FILL IN"/Description space, but you'll probably want to flesh it out with details taken from the other comments
    • if you're confused about what it does, #dreamwidth is generally a good place to track down someone who can explain it to you so you can explain it to everyone else
    • and, for that matter, #dreamwidth is an excellent place to give running updates of the "ONE THIRD... ONE HALF... TWO THIRDS... but what if I get something WRONG and the WORLD ENDS... FIVE SIXTHS..." nature, and receive cheerleading in return!
  9. post your COMPLETED CODE TOUR to [info]dw_dev, making sure to tag it with "code tour"
  10. gnaw on your nails until people start telling you it's okay: you have now achieved SUCCESS