Skip to content

Commit efc970d

Browse files
stonebigclaude
andcommitted
Draft: 2026-03 announcement on a rebuilt site
Splits the single 704-line page in two and rebuilds the design: - index.html: the current release first — direct .exe/.7z/.zip links with sizes instead of folder listings, one table explaining dot/slim/dotf/slimf instead of a gloss repeated per release, and a top-level section on the pylock / requirements files, which the site never mentioned. - releases.html: the whole history back to 2020, generated from the old page so all 183 download lines survive, one collapsible entry per release. - css/site.css: responsive, dark-mode aware, no JS and no external requests. - NAVIGATION.md: what changed and the staged plan for leading with package sets rather than binaries. 3.14 leads as Recommended: it is the minor kept updated over the coming year. Also fixes the dead Microsoft VC++ redistributable link, the 2024 footer date, the duplicated 3.15 block left over from 2025-05, and the md5_sha1 heading level. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent b8c3682 commit efc970d

6 files changed

Lines changed: 1643 additions & 1206 deletions

File tree

‎NAVIGATION.md‎

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
# WinPython site — what this draft changes, and where it is heading
2+
3+
Working notes for the `draft-2026-03-redesign` branch. Two things are mixed here on purpose:
4+
the 2026-03 announcement (which has to ship soon) and the slower move towards publishing
5+
package sets rather than installers (which the announcement can start).
6+
7+
---
8+
9+
## 1. What is wrong with the current page
10+
11+
Not opinions about taste — these are things a first-time visitor actually hits.
12+
13+
**The page is 85 % archive.** `index.html` is 704 lines; the current release occupies 25 of
14+
them and everything from line 55 to line 633 is history back to May 2020. The most important
15+
information on the site is a rounding error on the page that carries it.
16+
17+
**Nothing on the page is a download.** Every "download" link goes to a SourceForge *folder
18+
listing* or to a GitHub release page holding 14 assets. The visitor still has to work out
19+
which of `WinPython64-3.14.7.0slimf.7z` and `WinPython64-3.14.7.0dot.exe` they wanted, from a
20+
directory index, on a different site.
21+
22+
**The build suffixes are never explained in one place.** `dot`, `slim`, `whl`, `free`,
23+
`slimf`, `cod` are glossed inline, once per release line, in wording that drifts between
24+
releases — "with pre-installed wheels", "with ready to installed wheels", "= Python 3.14.5"
25+
— so the same word means something slightly different three screens apart. A reader has to
26+
reverse-engineer the naming scheme from examples.
27+
28+
**pylock and requirements files do not exist on the site at all.** They are the most
29+
distinctive thing WinPython now publishes and they are invisible here.
30+
31+
**Accumulated markup rot.** An XHTML 1.1 doctype that has never matched the content; no
32+
viewport meta tag, so phones render a 75 em page; `</li>` after `</p>`; `<p>` inside `<ul>`;
33+
an unclosed `<p>` near the end that swallows the footnotes; a duplicated 3.15 block left over
34+
from the 2025-05 edit sitting outside any list; a footer reading "Last updated 2024-04-13" on
35+
a page edited this month; a Microsoft VC++ redistributable link that has been a 404 for years.
36+
37+
**The nav has three entries** — releases, overview, portable — and two of them point into
38+
prose rather than at a decision the visitor is trying to make.
39+
40+
---
41+
42+
## 2. What the draft does
43+
44+
| | before | after |
45+
|---|---|---|
46+
| pages | 1 | `index.html` (current release + how to choose + how to reproduce + what it is) and `releases.html` (the archive) |
47+
| current release | 25 lines among 610 lines of history | the whole top of the page |
48+
| download links | folder listings | direct `.exe` / `.7z` / `.zip` URLs, with sizes |
49+
| suffix meaning | glossed 31 times, inconsistently | one table, once |
50+
| lock files | absent | a top-level section and a link on every build |
51+
| history | flat wall | 31 collapsible entries, nothing lost |
52+
| mobile | unusable | responsive |
53+
| dark mode | no | follows the OS |
54+
55+
Still a static site: no generator, no JavaScript, no external requests, no fonts or CDNs to
56+
fetch. Same deployment as today — commit and GitHub Pages serves it.
57+
58+
`releases.html` was generated from the old page by a script rather than retyped, so all 183
59+
historical download lines and their links survive verbatim, back to 2020. Long-term
60+
availability of old releases is a genuine WinPython advantage, so the archive stays complete;
61+
it is collapsed, not truncated. The stray duplicated 3.15 block was dropped and the broken
62+
tag nesting repaired on the way through.
63+
64+
**3.14 is marked Recommended**, not 3.13 — it is the minor that will keep getting updates
65+
over the coming year. 3.13 stays visible as *Previous*, for the case where a dependency has
66+
no 3.14 wheel yet. Each cycle this is a one-word edit: move the `featured` class and the
67+
`Recommended` tag to whichever card leads.
68+
69+
---
70+
71+
## 3. Keeping the per-release edit small
72+
73+
An early version of this draft had a strip of package-version pills (numpy 2.5.2, polars
74+
1.43.2, …) at the top of the download section. That was removed on purpose: it is a dozen
75+
values to re-check by hand every cycle, for information that is already exact and already
76+
generated in the `packages` changelog. Hand-maintained content is how the current page
77+
acquired its broken tags and its 2024 footer date.
78+
79+
What is left to edit per release, and nothing more:
80+
81+
1. the release name and date (3 places: hero badge, download heading, footer);
82+
2. one highlights line — the same sentence already written in the release notes;
83+
3. the download card bodies: version numbers, sizes, and the tag in the URLs;
84+
4. one new `<details>` block at the top of `releases.html`.
85+
86+
Even that is mechanical enough to generate. A `releases.toml` holding version, date, tag and
87+
the per-build sizes, plus the small script that already built `releases.html` from the old
88+
page, would reduce a release to a data edit and remove hand-written HTML from the loop
89+
entirely. The draft does not depend on it — it is the obvious next cleanup, and the archive
90+
generator is the proof it works.
91+
92+
---
93+
94+
## 4. The move from binaries to package sets
95+
96+
The honest framing of where WinPython is going:
97+
98+
> Today the site sells an installer and mentions what is inside it.
99+
> The end state sells a **pinned, verifiable package set**, and the installer is one
100+
> convenient way to obtain it.
101+
102+
2026-03 is the first release where that is literally true: `3.15.0.4 slim` and `slimf` exist
103+
only as lock files, because at 3.15.0rc1 only ~60 % of the slim set has wheels and shipping a
104+
half-empty 400 MB installer would mislead. That is not a gap in the release — it is the new
105+
model arriving early, and the draft presents it that way rather than apologising for it.
106+
107+
### Stage 1 — this release (done in the draft)
108+
109+
- Lock and requirements files are linked from every single build, not buried.
110+
- A dedicated section, *"The package set, without the 670 MB"*, with the three pip
111+
invocations copied from the release notes: hash-pinned requirements, PEP 751 pylock, and
112+
the offline-wheelhouse two-step.
113+
- 3.15 slim/slimf presented as a usable deliverable.
114+
115+
### Stage 2 — next release, small infrastructure changes
116+
117+
**Attach the lock files to the GitHub release again.** In 2026-03 they live only in the repo
118+
tree, so the only links available are `blob/master/changelogs/pylock.64-3_14_7_0slim.toml`
119+
— which will point at 2026-04's content the moment 2026-04 lands. Release assets give a URL
120+
that pins a release forever, which is the whole point of a lock file. (The tag-pinned raw URL
121+
works, and the draft uses it in the copy-paste commands, but see the tag problem below.)
122+
123+
**Fix the tag shape.** `17.12.20260522/WinPython` contains a slash, so every URL to it needs
124+
`%2F`, and the date reads 05-22 for an August 22nd release. A tag like `2026-03` would make
125+
`github.com/winpython/winpython/releases/tag/2026-03` a link anyone can type, and would let
126+
the site and the docs stop hardcoding build numbers.
127+
128+
**Add channel aliases.** `pylock.64-3_14_7_0slim.toml` embeds the exact build, so there is no
129+
way to say "the current 3.14 slim set" in a CI file. A per-cycle copy named
130+
`pylock.3.14-slim.toml` would let downstreams pin a *channel* and let the website link one
131+
stable URL per row instead of rewriting seven of them every cycle — which also directly
132+
shrinks the per-release edit described above.
133+
134+
### Stage 3 — shrink the binary matrix on purpose
135+
136+
2026-03 is already most of the way there. The rule this suggests writing down:
137+
138+
- `dot` for **every** supported Python — it is 18 MB, it costs nothing to publish, and it is
139+
the natural companion to a lock file.
140+
- `slim` only where the package set is genuinely complete, and for the minor being
141+
recommended.
142+
- pylock + requirements for **everything**, always, including the combinations with no binary.
143+
144+
Publishing fewer, better-justified binaries is easier to explain when the page already says
145+
what a lock file is for.
146+
147+
### Stage 4 — a "latest" that does not need editing
148+
149+
A `latest` tag or a tiny `latest.json` in the site repo would let the download section, the
150+
README and any CI pipeline resolve the current release without a human editing HTML. Worth
151+
doing once the tag naming is fixed.
152+
153+
---
154+
155+
## 5. Navigation beyond this site
156+
157+
**The flavors are explained in four places and agree in none of them:** this site, the wiki,
158+
`README.rst` and `README_PYPI.md`. Pick the *"which build should I take?"* table as the
159+
canonical version and have the others link to it rather than paraphrase.
160+
161+
**The real changelog is a comment on a follow-up issue.** `issues/2026#issuecomment-…` is
162+
excellent and thorough, but it is discoverable only by following a link from this site. The
163+
GitHub Release body already sits next to the assets and is where people look first —
164+
consider making it the canonical note and linking the issue for discussion.
165+
166+
---
167+
168+
## 6. Reviewing this draft
169+
170+
```
171+
git checkout draft-2026-03-redesign
172+
start index.html
173+
```
174+
175+
Both pages carry a red DRAFT banner; remove the `div.draft-banner` from each before merging.

0 commit comments

Comments
 (0)