Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
5b66bf2
Initial commit triage for april TMiS post.
jdm Apr 25, 2025
bcf1a12
Generate outline.
jdm Apr 25, 2025
0ec2d0c
Write about servoshell.
jdm Apr 25, 2025
8ea83a9
More sections.
jdm Apr 25, 2025
7ca288a
Add webdriver note.
jdm Apr 25, 2025
f95df25
Add webview PRs.
jdm Apr 25, 2025
f0319a7
More change descriptions.
jdm Apr 28, 2025
923505c
More descriptions and copyediting.
jdm Apr 29, 2025
6b25d44
Initial draft for April with donations
delan Apr 30, 2025
c2ffe23
Add WPT dashboard data
delan Apr 30, 2025
e8c252e
Try `tac` but fall back to `tail -r` if unavailable
delan Apr 30, 2025
70647f9
Fix list-commits-between.sh when run without a pulls.json
delan Apr 30, 2025
eaaa912
Add note to README about list-commits-by-nightly.sh
delan Apr 30, 2025
b67ef93
Add commits.txt for 1 April through 29 April
delan Apr 30, 2025
707f9ff
Triage 59 commits
delan Apr 30, 2025
a7161b3
Add tip about triaging commits
delan May 1, 2025
4f11001
Triage 62/239 of the remaining commits
delan May 1, 2025
c90db70
Triage 86/239 of the remaining commits
delan May 2, 2025
d41c67f
Triage 98/239 of the remaining commits
delan May 5, 2025
8613d86
Triage 143/239 of the remaining commits
delan May 5, 2025
66136ff
Triage 163/239 of the remaining commits
delan May 5, 2025
97e3210
Replace email addresses with GitHub handles
delan May 5, 2025
3117163
Triage 186/239 of the remaining commits
delan May 5, 2025
88d08ff
Triage 212/239 of the remaining commits
delan May 5, 2025
4635658
Triage all 239 remaining commits
delan May 5, 2025
ceafba7
Generate outline for April
delan May 5, 2025
d547a74
More writeups.
jdm May 5, 2025
e7a51ca
Finish initial writeups for commits.
jdm May 6, 2025
76fa6ac
Copyediting and screenshots.
jdm May 6, 2025
8f01b30
Temper expectations.
jdm May 6, 2025
ca4fc2e
Fix screenshots.
jdm May 6, 2025
4db5ed1
Fix dangling markup.
jdm May 6, 2025
dbb91fa
Write about 26 commits
delan May 6, 2025
b5f801d
Write about devtools
delan May 6, 2025
7abb2e0
Write about editing
delan May 6, 2025
28952ce
Write about forms
delan May 6, 2025
502d109
Write about script
delan May 6, 2025
a44639a
Add wpt dashboard stats.
jdm May 6, 2025
819a980
Write about HTML features
delan May 7, 2025
ef7cf35
Write about about:memory
delan May 7, 2025
553a22f
Write about servoshell
delan May 7, 2025
2143e0e
Rework text about new API features
delan May 7, 2025
02a0b42
Write about testing
delan May 8, 2025
834c0d4
Add about:memory figure
delan May 8, 2025
2ec574e
One sentence per line, to make diffs easier to read
delan May 8, 2025
4ef2d0f
Remove finished commits from April post
delan May 8, 2025
be971a1
Write about shadow DOM (with March)
delan May 8, 2025
6e428cf
Figure filenames
delan May 8, 2025
2a90204
Copy big news across
delan May 8, 2025
031d51b
Merge in `script` split
delan May 9, 2025
52aca26
Merge in --enable-experimental-web-platform-features
delan May 9, 2025
28352b2
Move --enable-experimental-web-platform-features
delan May 9, 2025
1d94c3f
Merge in new features
delan May 9, 2025
40a5df4
Write about conference talks
delan May 9, 2025
cbc43b6
Merge merge
delan May 9, 2025
704801b
Merge in perf and stability
delan May 9, 2025
a8460d6
Merge in embedding
delan May 9, 2025
9253667
Merge in keyword sizes
delan May 9, 2025
8b2eba0
Add another figure
delan May 9, 2025
ad83a81
Add gc patches from April
delan May 10, 2025
cfb28a8
Minor fixes
delan May 10, 2025
84bc764
Write about incremental layout
delan May 10, 2025
8fca33f
Write about crashes
delan May 10, 2025
e4d3bd1
Write about embedding
delan May 10, 2025
ae1ab2d
Write about legacy layout
delan May 10, 2025
dfbbf33
Linkify libservo items
delan May 10, 2025
32767d9
Swap sections
delan May 10, 2025
88cb509
Merge in bulk changes
delan May 10, 2025
a6cc75f
Write about more crashes
delan May 10, 2025
7d9d843
Merge in servoshell
delan May 10, 2025
f345644
Merge in remaining March text
delan May 10, 2025
d5548f6
Write about Outreachy interns
delan May 10, 2025
306cc08
Write about AI policy
delan May 10, 2025
e4cdfa1
Write about WPT scores
delan May 10, 2025
cce706e
Move flexbox improvements
delan May 10, 2025
f83c2ff
Remove notes
delan May 10, 2025
41d4881
s/GMail/Gmail/
delan May 10, 2025
e42a7d9
Title and summary
delan May 10, 2025
b2a0d04
Linkify everything
delan May 10, 2025
8e94c26
Tweak devtools wording
delan May 10, 2025
d5e72e1
Copyediting
delan May 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 32 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ To copy the output to your clipboard for a specific calendar month only:
$ tools/list-commits-by-nightly.sh ~/code/servo 2>&1 | tee /dev/stderr | sed '/^>>> 2025-01-/,/^>>> 2025-02-/!d' | xclip -sel clip
```

**NOTE:** this will display the squash commit message of each commit, which has historically been less useful than the pull request description. To display pull request descriptions instead, pass in a pulls.json as documented in [§ Triaging commits in nightlies for monthly updates](#triaging-commits-in-nightlies-for-monthly-updates).

## How to list this year’s pull request contributors

```sh
Expand All @@ -58,51 +60,46 @@ $ > tools/pull-requests.json tools/list-pull-requests.sh servo/servo 2023-03-16

```js
((data, ...dates) => {
const stride = data.area_keys.length;
const focusAreaCount = data.focus_areas.length;
const rows = dates.map(expectedDate => data.scores.find(([date]) => date == expectedDate));
rows.forEach((row, i) => {
console.log(i, row);
if (row == null) throw `no results for ${dates[i]}!`;
if (row.length != 3 + stride + 2 + stride) throw "schema change? bad length";
if (row.length != 3 + focusAreaCount) throw "schema change? bad length";
if (row[0] != dates[i]) throw "unreachable! incorrect date in [0]";
if (!/^[0-9a-f]{9}$/.test(row[1])) throw "schema change? expected commit hash in [1]";
if (!/^0[.]0[.]1-[0-9a-f]{7}$/.test(row[2])) throw "schema change? expected version in [2]";
if (!/^[0-9a-f]{9}$/.test(row[3+stride])) throw "schema change? expected commit hash in [3+stride]";
if (!/^0[.]0[.]1-[0-9a-f]{7}$/.test(row[4+stride])) throw "schema change? expected version in [4+stride]";
if (!/^0[.]0[.]1-[0-9a-f]{7,9}$/.test(row[2])) throw "schema change? expected version in [2]";
});
const areas = data.area_keys.map((key, i) => ({key, results: rows.map((row, j) => ({
const areas = data.focus_areas.map((focusAreaName, i) => ({focusAreaName, results: rows.map((row, j) => ({
date: dates[j],
legacy: row[3+i],
servo: row[5+stride+i],
score: row[3+i].total_score / row[3+i].total_tests,
subtests: row[3+i].total_subtests_passed / row[3+i].total_subtests,
}))}));
console.log(">>> areas", areas);
const analysis = areas
.map(({key, results: [p, q]}) => ({
key,
regressionWas: p.legacy - p.servo,
regressionNow: q.legacy - q.servo,
legacyWas: p.legacy,
legacyNow: q.legacy,
servoWas: p.servo,
servoNow: q.servo,
.map(({focusAreaName, results: [p, q]}) => ({
focusAreaName,
scoreWas: p.score,
scoreNow: q.score,
subtestsWas: p.subtests,
subtestsNow: q.subtests,
}))
.map(({key, regressionWas, regressionNow, legacyWas, legacyNow, servoWas, servoNow}) => ({
key, regressionWas, regressionNow, legacyWas, legacyNow, servoWas, servoNow,
legacyDelta: delta(legacyWas, legacyNow),
servoDelta: delta(servoWas, servoNow),
regressionDelta: delta(regressionWas, regressionNow),
.map(({focusAreaName, scoreWas, scoreNow, subtestsWas, subtestsNow}) => ({
focusAreaName, scoreWas, scoreNow, subtestsWas, subtestsNow,
scoreDelta: delta(scoreWas, scoreNow),
subtestsDelta: delta(subtestsWas, subtestsNow),
}));
console.log(">>> analysis", analysis);
const deltaAnalysisText = analysis
.sort((p,q) => q.servoDelta.pp - p.servoDelta.pp)
.map(({key, servoDelta, servoNow}) => `${key} (${servoDelta.pp.toFixed(1)}pp to ${(servoNow/10).toFixed(1)}%)\n`);
console.log(`>>> top deltas (servo, pp):\n${deltaAnalysisText.join("")}`);
const regressionAnalysisText = analysis
.filter(({regressionWas}) => regressionWas >= 0)
.sort((p,q) => p.regressionDelta.percent - q.regressionDelta.percent)
.map(({key, regressionDelta, regressionWas, regressionNow}) => `${key} (${regressionDelta.percent.toFixed(1)}% from ${(regressionWas/10).toFixed(1)}pp to ${(regressionNow/10).toFixed(1)}pp)\n`);
console.log(`>>> top cuts in legacy regression (%):\n${regressionAnalysisText.join("")}`);
function delta(p,q) { return {pp: (q-p)/10, percent: 100*(q-p)/p}; }
})(await (await fetch("scores.json")).json(), fromDate, toDate)
const scoreAnalysisText = analysis
.sort((p,q) => q.scoreDelta.pp - p.scoreDelta.pp)
.map(({focusAreaName, scoreDelta, scoreNow}) => `${focusAreaName} (${scoreDelta.pp.toFixed(1)}pp to ${(scoreNow*100).toFixed(1)}%)\n`);
console.log(`>>> top deltas (score, pp):\n${scoreAnalysisText.join("")}`);
const subtestsAnalysisText = analysis
.sort((p,q) => q.subtestsDelta.pp - p.subtestsDelta.pp)
.map(({focusAreaName, subtestsDelta, subtestsNow}) => `${focusAreaName} (${subtestsDelta.pp.toFixed(1)}pp to ${(subtestsNow*100).toFixed(1)}%)\n`);
console.log(`>>> top deltas (subtests, pp):\n${subtestsAnalysisText.join("")}`);
function delta(p,q) { return {pp: (q-p)*100, percent: 100*(q-p)/p}; }
})(await (await fetch("https://wpt.servo.org/scores.json")).json(), fromDate, toDate)
```

## How to analyse [wpt.fyi](https://wpt.fyi) pass rate improvements
Expand Down Expand Up @@ -347,7 +344,7 @@ Generally we want to include...
And generally we want to exclude...

- dependabot updates (“build(deps)”)
- WPT imports (“Update web-platform-tests”)
- WPT imports (“Update web-platform-tests” or “Sync WPT with upstream”)
- lint and warning fixes
- other CI changes
- refactors (unless large-scale)
Expand Down Expand Up @@ -375,6 +372,8 @@ $ tools/list-commits-by-nightly.sh ~/code/servo tools/pulls-2025-01-2025-02.json
- To write some notes or additional context, append `; your notes` to that new tags line
- Generate the outline: `tools/generate-outline.sh commits.txt`

**TIP:** if you’re faced with hundreds of commits and it’s a real slog, try triaging the commits of one author at a time. Each author probably only works on a few things each month, so it’s a lot easier to keep the context of their work in your head.

## Hints for writing about changes

**Always check the correct names of people and API features.** People like it when their names are spelled correctly, of course, but sometimes authors refer to API features by incorrect names. When in doubt, check the spec. For example, [servo#32642](https://github.com/servo/servo/pull/32642) says “ShaderCompilationInfo” in the title, but the interface is actually [GPUCompilationInfo](https://developer.mozilla.org/en-US/docs/Web/API/GPUCompilationInfo), returned by the [getCompilationInfo() method on GPUShaderModule](https://developer.mozilla.org/en-US/docs/Web/API/GPUShaderModule/getCompilationInfo) ([July 2024](https://servo.org/blog/2024/07/31/this-month-in-servo/)).
Expand Down
Loading