1
0
mirror of https://github.com/django/django.git synced 2025-11-07 07:15:35 +00:00

Updated ticket triage process diagram and contributing docs.

This commit is contained in:
ontowhee
2025-09-11 15:04:55 -05:00
committed by nessita
parent 8af79e2c0c
commit eaf7b563a5
6 changed files with 51 additions and 319 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 224 KiB

View File

@@ -1,282 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="59.5 134.5 385 491.5" width="385" height="491.5">
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse" x="21" y="85.35">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/>
<feOffset in="blur" result="offset" dx="0" dy="2"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in"/>
</filter>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="#008f00">
<g>
<path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="#005493">
<g>
<path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
</defs>
<g id="Canevas_1" stroke="none" fill="none" fill-opacity="1" stroke-dasharray="none" stroke-opacity="1">
<title>Canevas 1</title>
<rect fill="white" x="59.5" y="134.5" width="385" height="491.5"/>
<g id="Canevas_1_Calque_1">
<title>Calque 1</title>
<g id="Graphic_88_shadow" filter="url(#Shadow)">
<rect x="72" y="576" width="162" height="36" fill="white"/>
</g>
<g id="Graphic_126_shadow" filter="url(#Shadow)">
<rect x="270" y="576" width="162" height="36" fill="white"/>
</g>
<g id="Graphic_32_shadow" filter="url(#Shadow)">
<rect x="288" y="216" width="144" height="288" fill="white"/>
<rect x="288" y="216" width="144" height="288" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_99_shadow" filter="url(#Shadow)">
<rect x="72" y="216" width="144" height="288" fill="white"/>
<rect x="72" y="216" width="144" height="288" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_10_shadow" filter="url(#Shadow)">
<path d="M 95 450 L 193 450 C 195.76142 450 198 452.2386 198 455 L 198 481 C 198 483.7614 195.76142 486 193 486 L 95 486 C 92.23858 486 90 483.7614 90 481 L 90 455 C 90 452.2386 92.23858 450 95 450 Z" fill="#0096ff" fill-opacity=".3"/>
<path d="M 95 450 L 193 450 C 195.76142 450 198 452.2386 198 455 L 198 481 C 198 483.7614 195.76142 486 193 486 L 95 486 C 92.23858 486 90 483.7614 90 481 L 90 455 C 90 452.2386 92.23858 450 95 450 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_11_shadow" filter="url(#Shadow)">
<path d="M 95 360 L 193 360 C 195.76142 360 198 362.23858 198 365 L 198 391 C 198 393.76142 195.76142 396 193 396 L 95 396 C 92.23858 396 90 393.76142 90 391 L 90 365 C 90 362.23858 92.23858 360 95 360 Z" fill="#0096ff" fill-opacity=".3"/>
<path d="M 95 360 L 193 360 C 195.76142 360 198 362.23858 198 365 L 198 391 C 198 393.76142 195.76142 396 193 396 L 95 396 C 92.23858 396 90 393.76142 90 391 L 90 365 C 90 362.23858 92.23858 360 95 360 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_12_shadow" filter="url(#Shadow)">
<path d="M 95 270 L 193 270 C 195.76142 270 198 272.23858 198 275 L 198 301 C 198 303.76142 195.76142 306 193 306 L 95 306 C 92.23858 306 90 303.76142 90 301 L 90 275 C 90 272.23858 92.23858 270 95 270 Z" fill="#0096ff" fill-opacity=".3"/>
<path d="M 95 270 L 193 270 C 195.76142 270 198 272.23858 198 275 L 198 301 C 198 303.76142 195.76142 306 193 306 L 95 306 C 92.23858 306 90 303.76142 90 301 L 90 275 C 90 272.23858 92.23858 270 95 270 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_123_shadow" filter="url(#Shadow)">
<rect x="315" y="279" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="279" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_130_shadow" filter="url(#Shadow)">
<rect x="315" y="459" width="90" height="18" fill="#008f00" fill-opacity=".3"/>
<rect x="315" y="459" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_139_shadow" filter="url(#Shadow)">
<rect x="315" y="351" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="351" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_137_shadow" filter="url(#Shadow)">
<rect x="315" y="387" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="387" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_135_shadow" filter="url(#Shadow)">
<rect x="315" y="423" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="423" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_132_shadow" filter="url(#Shadow)">
<rect x="315" y="315" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="315" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_88">
<rect x="72" y="576" width="162" height="36" fill="white"/>
</g>
<g id="Graphic_126">
<rect x="270" y="576" width="162" height="36" fill="white"/>
</g>
<g id="Graphic_32">
<rect x="288" y="216" width="144" height="288" fill="white"/>
<rect x="288" y="216" width="144" height="288" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(293 221)" fill="black">
<tspan font-family="Helvetica" font-size="14" fill="black" x="23.427734" y="14">Closed tickets</tspan>
<tspan font-family="Helvetica" font-size="12" fill="black" x="40.984375" y="35">resolution</tspan>
</text>
</g>
<g id="Graphic_99">
<rect x="72" y="216" width="144" height="288" fill="white"/>
<rect x="72" y="216" width="144" height="288" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(77 221)" fill="black">
<tspan font-family="Helvetica" font-size="14" fill="black" x="28.093262" y="14">Open tickets</tspan>
<tspan font-family="Helvetica" font-size="12" fill="black" x="37.316406" y="35">triage state</tspan>
</text>
</g>
<g id="Graphic_10">
<path d="M 95 450 L 193 450 C 195.76142 450 198 452.2386 198 455 L 198 481 C 198 483.7614 195.76142 486 193 486 L 95 486 C 92.23858 486 90 483.7614 90 481 L 90 455 C 90 452.2386 92.23858 450 95 450 Z" fill="#0096ff" fill-opacity=".3"/>
<path d="M 95 450 L 193 450 C 195.76142 450 198 452.2386 198 455 L 198 481 C 198 483.7614 195.76142 486 193 486 L 95 486 C 92.23858 486 90 483.7614 90 481 L 90 455 C 90 452.2386 92.23858 450 95 450 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(95 454)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="22.987305" y="11">Ready for </tspan>
<tspan font-family="Helvetica" font-size="12" fill="black" x="27.323242" y="25">Checkin</tspan>
</text>
</g>
<g id="Graphic_11">
<path d="M 95 360 L 193 360 C 195.76142 360 198 362.23858 198 365 L 198 391 C 198 393.76142 195.76142 396 193 396 L 95 396 C 92.23858 396 90 393.76142 90 391 L 90 365 C 90 362.23858 92.23858 360 95 360 Z" fill="#0096ff" fill-opacity=".3"/>
<path d="M 95 360 L 193 360 C 195.76142 360 198 362.23858 198 365 L 198 391 C 198 393.76142 195.76142 396 193 396 L 95 396 C 92.23858 396 90 393.76142 90 391 L 90 365 C 90 362.23858 92.23858 360 95 360 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(95 371)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="23.983398" y="11">Accepted</tspan>
</text>
</g>
<g id="Graphic_12">
<path d="M 95 270 L 193 270 C 195.76142 270 198 272.23858 198 275 L 198 301 C 198 303.76142 195.76142 306 193 306 L 95 306 C 92.23858 306 90 303.76142 90 301 L 90 275 C 90 272.23858 92.23858 270 95 270 Z" fill="#0096ff" fill-opacity=".3"/>
<path d="M 95 270 L 193 270 C 195.76142 270 198 272.23858 198 275 L 198 301 C 198 303.76142 195.76142 306 193 306 L 95 306 C 92.23858 306 90 303.76142 90 301 L 90 275 C 90 272.23858 92.23858 270 95 270 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(95 281)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="17.31836" y="11">Unreviewed</tspan>
</text>
</g>
<g id="Graphic_123">
<rect x="315" y="279" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="279" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(320 281)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="15.982422" y="11">duplicate</tspan>
</text>
</g>
<g id="Graphic_130">
<rect x="315" y="459" width="90" height="18" fill="#008f00" fill-opacity=".3"/>
<rect x="315" y="459" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(320 461)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="27.326172" y="11">fixed</tspan>
</text>
</g>
<g id="Graphic_139">
<rect x="315" y="351" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="351" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(320 353)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="22.990234" y="11">invalid</tspan>
</text>
</g>
<g id="Graphic_137">
<rect x="315" y="387" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="387" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(320 389)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="13.978516" y="11">needsinfo</tspan>
</text>
</g>
<g id="Graphic_135">
<rect x="315" y="423" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="423" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(320 425)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="8.995117" y="11">worksforme</tspan>
</text>
</g>
<g id="Graphic_132">
<rect x="315" y="315" width="90" height="18" fill="#ff2600" fill-opacity=".3"/>
<rect x="315" y="315" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(320 317)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="21.326172" y="11">wontfix</tspan>
</text>
</g>
<g id="Line_33">
<line x1="72" y1="243" x2="216" y2="243" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_36">
<line x1="288" y1="243" x2="432" y2="243" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_127">
<rect x="351" y="594" width="81" height="18" fill="#008f00" fill-opacity=".3"/>
<text transform="translate(356 596)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="7.817383" y="11">completed</tspan>
</text>
</g>
<g id="Graphic_125">
<rect x="351" y="576" width="81" height="18" fill="#ff2600" fill-opacity=".3"/>
<text transform="translate(356 578)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="14.148438" y="11">stopped</tspan>
</text>
</g>
<g id="Graphic_129">
<rect x="270" y="594" width="81" height="18" fill="#0096ff" fill-opacity=".3"/>
<text transform="translate(275 596)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="5.819336" y="11">in progress</tspan>
</text>
</g>
<g id="Line_42">
<line x1="183.6" y1="585" x2="208.5" y2="585" marker-end="url(#FilledArrow_Marker)" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Graphic_43">
<text transform="translate(72 578)" fill="#008f00">
<tspan font-family="Helvetica" font-size="12" fill="#008f00" x="17.173828" y="11">Ticket triagers </tspan>
</text>
</g>
<g id="Line_44">
<line x1="183.6" y1="603" x2="208.5" y2="603" marker-end="url(#FilledArrow_Marker_2)" stroke="#005493" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Graphic_45">
<text transform="translate(72 596)" fill="#005493">
<tspan font-family="Helvetica" font-size="12" fill="#005493" x="52.3125" y="11">Mergers</tspan>
</text>
</g>
<g id="Graphic_128">
<rect x="270" y="576" width="81" height="18" fill="white"/>
<text transform="translate(275 578)" fill="black">
<tspan font-family="Helvetica" font-size="12" fill="black" x="19.492188" y="11">status</tspan>
</text>
</g>
<g id="Line_124">
<line x1="252" y1="288" x2="302.1" y2="288" marker-end="url(#FilledArrow_Marker)" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_140">
<line x1="252" y1="288" x2="306.5053" y2="350.29176" marker-end="url(#FilledArrow_Marker)" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_138">
<line x1="252" y1="288" x2="308.50006" y2="384.85725" marker-end="url(#FilledArrow_Marker)" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_136">
<line x1="252" y1="288" x2="309.82944" y2="420.18157" marker-end="url(#FilledArrow_Marker)" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_131">
<line x1="198" y1="468" x2="302.1" y2="468" marker-end="url(#FilledArrow_Marker_2)" stroke="#005493" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_54">
<line x1="144" y1="306" x2="144" y2="347.1" marker-end="url(#FilledArrow_Marker)" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_82">
<line x1="198" y1="288" x2="252" y2="288" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_60">
<line x1="144" y1="396" x2="144" y2="437.1" marker-end="url(#FilledArrow_Marker)" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Graphic_89">
<rect x="189" y="144" width="243" height="54" fill="white"/>
<path d="M 432 198 L 189 198 L 189 144 L 432 144 Z" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
<text transform="translate(193 150)" fill="#595959">
<tspan font-family="Helvetica" font-size="12" fill="#595959" x="19.789062" y="11">The ticket was already reported, was </tspan>
<tspan font-family="Helvetica" font-size="12" fill="#595959" x=".8017578" y="25">already rejected, isn&apos;t a bug, doesn&apos;t contain </tspan>
<tspan font-family="Helvetica" font-size="12" fill="#595959" x="1.2792969" y="39">enough information, or can&apos;t be reproduced.</tspan>
</text>
</g>
<g id="Line_90">
<line x1="252" y1="278.5" x2="252" y2="198" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
</g>
<g id="Graphic_91">
<path d="M 258.36395 281.63605 C 261.8787 285.15076 261.8787 290.84924 258.36395 294.36395 C 254.84924 297.8787 249.15076 297.8787 245.63605 294.36395 C 242.1213 290.84924 242.1213 285.15076 245.63605 281.63605 C 249.15076 278.1213 254.84924 278.1213 258.36395 281.63605" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
</g>
<g id="Graphic_96">
<rect x="72" y="144" width="99" height="54" fill="white"/>
<path d="M 171 198 L 72 198 L 72 144 L 171 144 Z" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
<text transform="translate(76 150)" fill="#595959">
<tspan font-family="Helvetica" font-size="12" fill="#595959" x="8.486328" y="11">The ticket is a </tspan>
<tspan font-family="Helvetica" font-size="12" fill="#595959" x="4.463867" y="25">bug and should </tspan>
<tspan font-family="Helvetica" font-size="12" fill="#595959" x="22.81836" y="39">be fixed.</tspan>
</text>
</g>
<g id="Graphic_97">
<path d="M 150.36395 317.63605 C 153.87869 321.15076 153.87869 326.84924 150.36395 330.36395 C 146.84924 333.8787 141.15076 333.8787 137.63605 330.36395 C 134.12131 326.84924 134.12131 321.15076 137.63605 317.63605 C 141.15076 314.1213 146.84924 314.1213 150.36395 317.63605" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
</g>
<g id="Line_98">
<path d="M 134.5 324 L 81 324 L 81 198" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
</g>
<g id="Graphic_102">
<rect x="72" y="522" width="342" height="36" fill="white"/>
<path d="M 414 558 L 72 558 L 72 522 L 414 522 Z" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
<text transform="translate(76 526)" fill="#595959">
<tspan font-family="Helvetica" font-size="12" fill="#595959" x="7.241211" y="11">The ticket has a patch which applies cleanly and includes all </tspan>
<tspan font-family="Helvetica" font-size="12" fill="#595959" x="26.591797" y="25">needed tests and docs. A merger can commit it as is.</tspan>
</text>
</g>
<g id="Graphic_103">
<path d="M 150.36395 407.63605 C 153.87869 411.15076 153.87869 416.84924 150.36395 420.36395 C 146.84924 423.8787 141.15076 423.8787 137.63605 420.36395 C 134.12131 416.84924 134.12131 411.15076 137.63605 407.63605 C 141.15076 404.1213 146.84924 404.1213 150.36395 407.63605" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
</g>
<g id="Line_104">
<path d="M 134.5 414 L 81 414 L 81 522" stroke="#595959" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4.0,4.0" stroke-width="1"/>
</g>
<g id="Line_151">
<line x1="252" y1="288" x2="303.79966" y2="317.5998" marker-end="url(#FilledArrow_Marker)" stroke="#008f00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -28,7 +28,7 @@ If an `unreviewed ticket`_ reports a bug, try and reproduce it. If you can
reproduce it and it seems valid, make a note that you confirmed the bug and
accept the ticket. Make sure the ticket is filed under the correct component
area. Consider writing a patch that adds a test for the bug's behavior, even if
you don't fix the bug itself. See more at :ref:`how-can-i-help-with-triaging`
you don't fix the bug itself. See more at :ref:`how-can-i-help-with-triaging`.
Review patches of accepted tickets
----------------------------------

View File

@@ -49,47 +49,58 @@ attribute easily tells us what and who each ticket is waiting on.
Since a picture is worth a thousand words, let's start there:
.. image:: /internals/_images/triage_process.*
:height: 750
:width: 600
.. image:: /internals/_images/contribution_process.*
:alt: Django's ticket triage workflow
We've got two roles in this diagram:
We have four roles in this diagram. Maintainers (also known as Fellows) usually
take part in all of them, but anyone in the Django community can participate in
any role except merger. The :ref:`merger role <mergers-team>` is granted by a
vote of the :ref:`Steering Council <steering-council>`.
* Mergers: people with commit access who are responsible for making the
final decision to merge a change.
* Triagers: anyone can take on this role by checking whether a ticket describes
a real issue and keeping the tracker organized.
* Ticket triagers: anyone in the Django community who chooses to
become involved in Django's development process. Our Trac installation
is intentionally left open to the public, and anyone can triage tickets.
Django is a community project, and we encourage :ref:`triage by the
community<how-can-i-help-with-triaging>`.
* Bug fixers: anyone can contribute by opening a pull request and working on a
solution for a ticket.
By way of example, here we see the lifecycle of an average ticket:
* Reviewers: anyone can review pull requests and suggest improvements.
* Alice creates a ticket and sends an incomplete pull request (no tests,
* Mergers: people with commit access who make the final decision to merge a
change.
Our Trac system is intentionally open to the public, and anyone can help by
working on tickets. Django is a community project, and we encourage
:ref:`triage and collaboration by the community
<how-can-i-help-with-triaging>`. This could be you!
For example, here's the typical lifecycle of a ticket:
* Alice creates a ticket and opens an incomplete pull request (missing tests,
incorrect implementation).
* Bob reviews the pull request, marks the ticket as "Accepted", "needs tests",
and "patch needs improvement", and leaves a comment telling Alice how the
patch could be improved.
* Bob reviews the pull request, marks the ticket as "Accepted", sets the
flags "needs tests" and "patch needs improvement", and leaves a comment
explaining how Alice can improve the patch. This puts the ticket
automatically into the "waiting on author" queue within the "accepted" stage.
* Alice updates the pull request, adding tests (but not changing the
implementation). She removes the two flags.
* Alice updates the pull request, adding tests (but not yet fixing the
implementation), and removes the two flags. The ticket moves into the "needs
PR review" queue.
* Charlie reviews the pull request and resets the "patch needs improvement"
flag with another comment about improving the implementation.
* Charlie reviews the pull request, sets the "patch needs improvement" flag
again, and leaves another comment suggesting changes to the implementation.
The ticket moves back to the "waiting on author" queue.
* Alice updates the pull request, fixing the implementation. She removes the
"patch needs improvement" flag.
* Alice updates the pull request again, this time fixing the implementation,
and removes the "patch needs improvement" flag. The ticket moves once more
into the "needs PR review" queue.
* Daisy reviews the pull request and marks the ticket as "Ready for checkin".
* Jacob, a :ref:`merger <mergers-team>`, reviews the pull request and merges
it.
* Jacob, a :ref:`merger <mergers-team>`, reviews and merges the pull request.
Some tickets require much less feedback than this, but then again some tickets
require much much more.
Some tickets move through these steps quickly, while others take more time and
discussion. Each contribution helps Django improve.
.. _triage-stages:
@@ -104,16 +115,15 @@ Unreviewed
The ticket has not been reviewed by anyone who felt qualified to make a
judgment about whether the ticket contained a valid issue or ought to be closed
for any of the various reasons.
for any reasons. Unreviewed tickets appear in the "triage" queue.
Accepted
--------
The big gray area! The absolute meaning of "accepted" is that the issue
described in the ticket is valid and is in some stage of being worked on.
Beyond that there are several considerations:
The absolute meaning of "accepted" is that the issue described in the ticket is
valid and actionable. It is broken out into three queues:
* **Accepted + No Flags**
* **Needs Patch** (Accepted + No Flags)
The ticket is valid, but no one has submitted a patch for it yet. Often this
means you could safely start writing a fix for it. This is generally more
@@ -126,14 +136,14 @@ Beyond that there are several considerations:
<requesting-features>` and received community and :ref:`Steering Council
<steering-council>` approval, or been accepted in a DEP.
* **Accepted + Has Patch**
* **Needs PR Review** (Accepted + Has Patch)
The ticket is waiting for people to review the supplied solution. This means
downloading the patch and trying it out, verifying that it contains tests
and docs, running the test suite with the included patch, and leaving
feedback on the ticket.
* **Accepted + Has Patch + Needs ...**
* **Waiting On Author** (Accepted + Has Patch + Needs fixes)
This means the ticket has been reviewed, and has been found to need further
work. "Needs tests" and "Needs documentation" are self-explanatory. "Patch
@@ -339,10 +349,10 @@ bring the issue to the `Django Forum`_ instead.
.. _how-can-i-help-with-triaging:
How can I help with triaging?
=============================
How can I help with development?
================================
The triage process is primarily driven by community members. Really,
The development process is primarily driven by community members. Really,
**ANYONE** can help.
To get involved, start by `creating an account on Trac`_. If you have an