Improve release cycle chart: color coding, EOL labels, "today" line, and proper dark mode
#2.758 geöffnet am 10.08.2026
Repository-Metriken
- Stars
- (2.001 Sterne)
- PR-Merge-Metriken
- (Durchschn. Merge 7T 20h) (25 gemergte PRs in 30 T)
Beschreibung
Following up on #2297 and the work done in #2327, a few improvements worth considering to bring the release roadmap image (visible in https://www.djangoproject.com/download/) closer to what Python does in their devguide https://www.python.org/downloads/ (direct link https://devguide.python.org/_static/release-cycle.svg).
Color coding by support phase. Right now all bars look the same. Python uses green for mainstream support, yellow for security-only, and red for EOL, you immediately know what state a version is in without reading the labels. Helps a lot with accessibility and color blindness.
A vertical "today" line marking the current month. In Python's chart it's a plain element with a hardcoded x coordinate, meaning the SVG is regenerated periodically rather than calculated in the browser. We could do the same: regenerate in CI at the start of each month or on each patch release. With a "today" line, bars to its left automatically read as EOL, which leads to the next point.
Explicit "end-of-life" labels inside EOL bars, as Python does. Relying on color alone is not enough for accessibility.
Proper dark mode instead of CSS color inversion. The current approach of inverting the image via CSS when the device uses a dark theme is a known shortcut. A better option is to generate two versions of the SVG, one with a light background, one with a dark background, same colors, and serve the right one using the standard HTML picture element with a prefers-color-scheme media query:
<picture>
<source srcset="release-roadmap-dark.svg" media="(prefers-color-scheme: dark)">
<img src="release-roadmap.svg" alt="...">
</picture>
This way we can drop the CSS inversion workaround added in #2327 and have colors that actually work on both themes instead of just being flipped.
The generate_release_roadmap management command is already the right place to implement all of this.