Week 29 - 2023
The weeknote for 7/17 - 7/23.
I started working on the bug fix on chromium this week.
In the discussion of the design of
deno_std/async, Jesse Jackson (@jsejcksn) pointed that in the web platform spec
fetchthrows 'abort reason' when the abort signal is aborted, and chrome doesn't follow this rule. https://github.com/denoland/deno_std/pull/3479
I got interested in the reason why chrome doesn't follow it. It's rare that chrome doesn't follow the spec, especially when the spec is maintained by whatwg.
I checked https://wpt.fyi/results/ and the case (
Aborting rejects with abort reason) was actually failing.
I also check the chromium's issue tracker and there was actually an issue for it. https://bugs.chromium.org/p/chromium/issues/detail?id=1371359 . According to the issue, this behavior used to be not a bug, but it became a bug at some point because of the change in the upstream spec. This describes a little bit of why this is in this way.
I decided to work on this mainly because this bug doesn't look difficult to resolve. It looks like really a simple bug. It throws a wrong error, instead of correct one. The fix should one line change.
After working on this a while, I found the code which caused this, and fixed it. https://chromium-review.googlesource.com/c/chromium/src/+/4705592
This was my first contribution to chrome browser. I'm glad to be able to contribute back to the software which I've been using almost everyday over 10 years.
The experience of review in chromium's review system was a bit tough because it's very different from what I'm used to. I mean it's very different from GitHub. I needed to learn their own tool
The reviewers are very responsive and supportive. My change list was reviewed in very timely manner. I got 3 LGTMs in a few days. It felt a little better than the case of Deno CLI. You rarely get 3 LGTMs there.
One of the tough part of contributing to it is the build time. It takes enormous amount of time. The first day I started the full build of chrome target, and it didn't finish when I woke up next day. The CPU usage had been 100% more than a half day. Another tough part was probably specific to my contribution. I updated my WPT expectation and I thought that's enought for passing CI, but the CI reported the error in other expectation files, which look exactly similar to what I already updated. After reading the code base carefully I found some special settings about
virtualtests, which trigger the chrome with special flags. That
virtualtesting things are not documented well, and I needed to read lot of code, lof of past changes, etc to understand it.
After all, I'm glad to be able to contribute to chrome. Now my name is in
- Joined Workers Tech #1, which is the tech meetup for cloudflare workers, organized by @yusukebe. The venue was Classmethod's office. Really nice place and nice talks.
- We had denobata #21. Talked about random things about Deno.
Edit this page