Kuma Report, November 2017
Here’s what happened in November in Kuma, the engine of MDN Web Docs:
- Shipped the first 21 interactive examples
- Added browser versions,
list-style-type
, and even more Browser Compatibility Data - Shipped a sticky table of contents and other article improvements
- Improved MDN in AWS and Kubernetes
- Shipped tweaks and fixes by merging 260 pull requests, including 33 pull requests from 27 new contributors.
We’re planning on more of the same for December.
Done in November
Shipped the First Interactive Examples
We’ve launched the new interactive examples on 20+ pages. Try them out on the pages for the CSS property box-shadow and the JavaScript method Array.slice.
We’re monitoring the page load impact of this limited rollout, and if the results are good, we have another 400 examples ready to go, thanks to Mark Boas and others. Mark also added a JavaScript Interactive Examples Contributing Guide, so that contributors can create even more.
We want the examples to be as fast as possible.
Schalk Neethling improved
the page load speed of the <iframe>
by using preload
URLs
(PR 4537).
Stephanie Hobson and Schalk dived into
HTTP/2, and identified require.js
as a potential issue for this
protocol (Kuma PR 4521 and
Interactive Examples PR 329).
Josh Mize added appropriate
caching headers for the examples and static assets
(PR 326).
For the next level of speed gains, we’ll need to speed up the MDN pages themselves. One possibility is to serve developer.mozilla.org from a CDN, which will require big changes to make pages more cacheable. One issue is waffle flags, which allow us to experiment with per-user changes, at the cost of making pages uncacheable. Schalk has made steady progress in eliminating inactive waffle flag experiments, and this work will continue into December.
Continued Migration of Browser Compatibility Data
The Browser Compatibility Data project was the most active MDN project in November. 36.6% of the MDN pages (2284 total) have been converted. Here are some highlights:
- Imported more CSS data, such as the huge list of allowed values for the
list-style-type
property (this list usesgeorgian
). This property alone required 7 PRs, starting with PR 576. Daniel D. Beck submitted 32 CSS PRs that were merged in November, and is making good progress on converting CSS data. - Added browser and version validation, a month-long effort in PR 439 from Florian Scholz and Jean-Yves Perrier.
- Added a
runtime_flag
for features that can be enabled at browser startup (PR 615 from Florian Scholz). - Add the first compatibility data for Samsung Internet for Android (PR 657 from first-time contributor Peter O'Shaughnessy).
- Shipped the new compatibility table to beta users. Stephanie Hobson resurrected a design that had been through a few rounds of user testing (PR 4436), and has made further improvements such as augmenting colors with gradients (PR 4511). For more details and to give us feedback, see Beta Testing New Compatability Tables on Discourse.
Sticky Table of Contents and Other Article Improvements
We shipped some additional article improvements in November.
The new table of contents is limited to the top-level headings, and “sticks” to the top of the window at desktop sizes, showing where you are in a document and allowing fast navigation (PR 4510 from Stephanie Hobson).
The breadcrumbs (showing where you are in the page hierarchy) have moved to the sidebar, and now has schema.org metadata tags. Stephanie also refreshed the style of the sidebar links.
Stephanie also updated the visual hierarchy of article headings. This is most
noticeable on <h3>
elements, which are now indented with
black space.
Improved MDN in AWS and Kubernetes
We continued to have performance and uptime issues in AWS in November. We’re prioritizing fixing these issues, and we’re delaying some 2017 plans, such as improving KumaScript translations and upgrading Django, to next year.
We lost GZip compression in the move to AWS. Ryan Johnson added it back in PR 4522. This reduced the average page download time by 71% (0.57s to 0.16s), and contributed to a 6% decrease in page load time (4.2 to 4.0s).
Heavy load due to scraping caused 6 downtimes totaling 35 minutes. We worked to improve the performance of unpopular pages that get high traffic from scrapers, such as document list views (PR 4463 from John Whitlock) and the revisions dashboard (PR 4520 from Josh Mize). This made the system more resilient.
Kubernetes was contributing to the downtimes, by restarting web servers when they started to undergo heavy load and were slow to respond. We’ve adjusted our “readiness” and “liveness” probes so that Kubernetes will be more patient and more gentle (Infra PR 665 from Ryan Johnson).
These changes have made MDN more resilient and reliable, but more work will be needed in December.
Stephanie Hobson fixed the development favicon appearing in production (PR 4530), as well as an issue with lazy-loading web fonts (PR 4533).
Ryan Johnson continues work on our deployment
process. Pushing certain branches will cause Jenkins to take specific
deployment steps. Pushing master
will run tests and publish a Docker image.
Pushing stage-push
will deploy that image to
stage.mdn.moz.works. Pushing
stage-integration-tests
will run browser and HTTP tests against that
deployment. We’ll make these steps more reliable, add production variants, and
then link them together into automated deployment pipelines.
Shipped Tweaks and Fixes
There were 260 PRs merged in November:
- 89 mdn/browser-compat-data PRs
- 76 mozilla/kuma PRs
- 38 mdn/kumascript PRs
- 32 mdn/interactive-examples PRs
- 16 mozmeao/infra PRs
- 9 mdn/data PRs
Many of these were from external contributors, including several first-time contributions. Here are some of the highlights:
- Update
chrome_url_overrides
for Opera (BCD PR 559), from first-time contributor Zbyněk Eiselt. - Mark
add
andset
methods ofSet
,Map
andWeakMap
objects as partially implemented on IE 11 (BCD PR 586), from first-time contributor Ivan Buryak. - Add link to Edge bug report for
<a>
(BCD PR 592), from first-time contributor Michael Hogg. - Update status for CSS Scroll Snapping properties (BCD PR 609), from first-time contributor Masataka Yakura.
- Update IANA timezone name support in Chrome/Opera (BCD PR 611), from first-time contributor jungshik.
- Update browser identifier declaration instructions
(BCD PR 625),
Fix schema documentation for
flag
(BCD PR 627), and Add example for Status information (BCD PR 628), from first-time contributor Ra’Shaun Stovall. - Update support data for
parseInt
treatment of leading zeros (BCD PR 633), from first-time contributor Claude Pache. - Update
textarea
@autocomplete
compat data (BCD PR 637 and PR 673), from first-time contributor Matt N. - Add
sampleRate
option tonew AudioContext()
(BCD PR 651), from first-time contributor Jedipedia. - Add support for
page_action
for FF for Android (BCD PR 667), from first-time contributor Elad. - Safari has implemented
upgrade-insecure-requests
(BCD PR 670), from first-time contributor Justyn Temme. TypedArray.toString
(BCD PR 677), from first-time contributor Lambdac0re.- Update support for
content-security-policy
(BCD PR 683), from first-time contributor Jakob Jarosch. - Add note about
Origin
header when usingPOST
requests in Edge (BCD PR 684), from first-time contributor Viktor. - Add the ability for users to hide GitHub link from their public profile (bug 1360294, Kuma PR 4346), from Maton Anthony.
- Add details about the changes in the
.env
(Kuma PR 4494), from first-time contributor Pavan Gudiwada. - Docker setup guidance (Kuma PR 4501), from first-time contributor Pavan Gudiwada.
- Enable Telugu (te) as candidate locale (bug 984149, Kuma PR 4547), from John Whitlock.
- Add
curl
as an alternative towget
(bug 1387505, Kuma PR 4570), from first-time contributor Deep Bhattacharyya. - Add Mozilla Foundation End-of-Year callout (bug 1420535, Kuma PR 4572), from Stephanie Hobson.
- Add support for Bulgarian. (KumaScript PR 374), from first-time contributor Красимир Беров.
- Mark Background Tasks as Proposed Recommendation (KumaScript PR 390), from first-time contributor Masataka Yakura.
- Close
<li>
tag properly (KumaScript PR 398), from first-time contributor antonio-piha. - Add French for event properties (KumaScript PR 408), from first-time contributor Matilin Torre.
- Add Dutch translation (KumaScript PR 412), from first-time contributor evelijn.
- Fix a mistake in
array-reduce
comment (Interactive Examples PR 358), from first-time contributor Gal Pasternak. - Fix AudioContext & OfflineAudioContext inheritance (Data PR 152), from first-time contributor Jedipedia.
Planned for December
Mozilla gathers for the All-Hands event in Austin, TX in December, which gives us a chance to get together, celebrate the year’s accomplishments, and plan for 2018. Mozilla offices will shut down for the last full week of December. This doesn’t leave a lot of time for coding.
We’ll continue working on the projects we worked on in November. We’ll convert more Browser Compatibility data. We’ll tweak the AWS infrastructure. We’ll eliminate and convert more waffle flags. We’ll watch the interactive examples and improved compatibility tables, and ship them when ready.
We’ll also take a step back, and ask if we’re spending time and attention on the most important things. We’ll think about our processes, and how they could better support our priorities.
But mostly, we’ll try not to mess things up, so that we can enjoy the holidays with friends and family, and come back refreshed for 2018.