Here’s what happened in August to the code, data, and tools that support MDN Web Docs:
- Migrated 95% of compatibility data
- Improved performance and experience
- Maintained the platform
- Shipped tweaks and fixes by merging 400 pull requests, including 78 pull requests from 55 new contributors
Here’s the plan for September:
Done in August
Migrated 95% of compatibility data
The MDN content team prioritized reviewing and merging Browser Compatibility Data pull requests (PRs) in August, and met their goal of getting the open PRs to less than 50. The team reviewed and merged 85 PRs that were open at the start of the month, including a schema change to catch duplicate identifiers (PR 1415) from Dominique Hazael-Massieux. The team also merged 123 PRs that were opened during the month, including Visual Studio Code configurations for BCD editing (PR 2498) from ExE Boss.
A lot of these were migration PRs, and the migration is now 95% complete, with 10,000 features over 6,300 pages. Some of the remaining migration work will be straightforward. Other data sources will require strategy and format discussions, such as Event support and summary pages. These discussions will be easier with the experience of migrating thousands of simpler features.
Existing data also got some love. Contributors fixed incorrect data, clarified if and when a browser supported a feature, and celebrated support in new browser releases. We expect a steady stream of maintenance PRs as the project transitions from migration to ongoing maintenance.
Florian Scholz has worked to make this a community project, organizing the effort with spreadsheets and transitioning to issues as the remaining work becomes manageable. This has been a successful effort, and GitHub insights shows that most contributions were not from MDN staff.
Thanks to ExE Boss (24 PRs), Connor Shea (23 PRs), Claas Augner (18 PRs), David Ross (17 PRs), Lucian Condrea (13 PRs), Joe Medley (8 PRs), and all our contributors, and thanks to the staff and tool builders that keep the review queue moving!
Improved performance and experience
Tim Kadlec audited MDN in July, and created performance metrics and goals, as well as recommending changes. In August, we started implementing these changes. Schalk Neethling improved the load time for the homepage by optimizing the hero image (PR 4903) and removing a section with an image (PR 4912). Ryan Johnson automated recording deployments and re-calculating metrics with Speedcurve (PR 4902). We’ll continue working on performance in the coming months.
Previously, if you wanted to link to a section in a page, such as MDN’s advice on why you should use labels for <input>
elements, you had to use the Developer Tools to get the section ID. Schalk added section-level anchor links (PR 4901), so that you can quickly grab the link and paste it into a code review:
Maintained the platform
Anthony Maton is switching Kuma to Python 3. Our memcached library hasn’t been updated for Python 3, and instead of a library swap, Anthony simplified the caching configuration and switched to Redis (PR 4870). He continues to make incremental changes (PR 4899) to get to a shared Python 2 / Python 3 codebase, with a goal of switching to Python 3 by the end of the year.
I completed the ElasticSearch 5.6 update, which was harder than expected. The update from 1.7 to 2.4 only required updating the servers (PR 4192), and didn’t even merit a mention in the April 2017 report. ElasticSearch no longer provides libraries that span major versions. The upgrade from 2.5 to 5.6 required updating the client libraries, the Kuma code that uses them (PR 4906), and the server (PR 4904), all at the same time. This update included some minor fixes, and search with 5.x appears faster, but site search still needs a lot of work. The next update, to ElasticSearch 6.x, will be in March 2019.
Ryan Johnson is continuing the work of migrating from MozMEAO to Mozilla IT support. Ed Lim provisioned the new Kubernetes cluster (PR 24) and backing services (PR 31), with support from Dave Parfitt and Josh Mize. Ryan configured the new Jenkins server to run parallel tests and deployments (PR 4931), and to publish Docker images to a new repository (PR 4933). We’re now deploying to both the MozMEAO staging environment and the MozIT staging environment.
We’ll continue with production and disaster-recovery environments in September, and prioritize the infrastructure issues. The goal is to switch traffic in October.
Shipped tweaks and fixes
There were 400 PRs merged in August:
- 208 mdn/browser-compat-data PRs
- 53 mozilla/kuma PRs
- 34 mdn/bob PRs
- 34 mdn/interactive-examples PRs
- 29 mdn/kumascript PRs
- 17 mdn/data PRs
- 16 mdn/infra PRs
- 4 mdn/css-examples PRs
- 2 mdn/learning-area PRs
- 1 mdn/webextensions-examples PR
- 1 mdn/sw-test PR
- 1 mdn/webaudio-examples PR
This includes some important changes and fixes:
- Fix the survey banner on standard DPI displays (Kuma PR 4907), from Schalk Neethling.
- Avoid “remember this preference” dialog if the language preference is already set (Kuma PR 4890), from Safwan Rahman.
- Add Discourse field to user profiles (Kuma PR 4930), from Mihir Karbelkar.
- Improve document purging (Kuma PR 4934), from me.
- Improve reliability of Interactive Example performance metrics (Kuma PR 4935), from Schalk Neethling.
- Replace
KUMA_WIKI_IFRAME_ALLOWED_HOSTS
withALLOWED_IFRAME_PATTERNS
(Kuma PR 4940), from me. - Replace the survey banner with a Firefox Development banner (Kuma PR 4938), from Schalk Neethling.
- On mobile, show the browser name instead of an icon in compatibility table (Kuma PR 4948), from Schalk Neethling.
78 pull requests were from first-time contributors:
- Add Service Worker support in Safari 11.1 (BCD PR 1881), from Abdón Rodríguez Davila.
- Correct SMIL compatibility information (BCD PR 1956), from Robert Longson.
- Add compat data for
Element
(BCD PR 2316), from Bobu aka Sébastien. - Add compat data for
PositionError
. (BCD PR 2398), from Deepraj Pandey. - Fix Mobile Edge support for
gap
,row-gap
andcolumn-gap
(BCD PR 2500), from Kumar Harsh. - Update
setIcon
to include Edge notes (BCD PR 2513), from Morgan Gangwere. - Add missing
<input type="password">
description (BCD PR 2543), from weary-adventurer. - Update
datalist
, not supported by Android WebView. (BCD PR 2544), from Valentin. - Rename “ExperimentalCanvasFeatures” to “Experimental Web Platform Features” (BCD PR 2547), from Indi Kernick.
- Remove Safari support for
href
from SVG<use>
(BCD PR 2548), from Michal Miky Jankovský. - Remove support fort
proxy.settings
from Firefox Android (PR 2550), from Martin Giger (first contribution to BCD). - Remove support for
chrome_url_overrides
from Edge (BCD PR 2556), from Lucas Everett. - Add support for
Upgrade-Insecure-Requests
in Edge 17 (PR 2561), and Add support for:matches()
in Edge (PR 2578), to BCD from Eric Eggert. - Add support for
Request.destination
in Chrome, Opera and Edge (BCD PR 2562), from Nicolas Hoizey. - Add support for
InputEvent.getTargetRanges()
in Safari 10.1 (PR 2565), and Add support for Asynchronous Clipboard API in Opera 53 and Chrome 66 (PR 2703), to BCD from Makoto Kato. - Add support for
onbeforeunload
in Edge (BCD PR 2566), from Sumit Chahal. - Update support for
-webkit-overflow-scrolling
, not supported (BCD PR 2577), from Summon528. - Update
X-Frame-Options
compatibility for Safari and Edge (PR 2579), and FixNavigator.share
compatibility for Chrome and Opera (PR 2595), to BCD from Nick Zahn. - Migrate compat data for
Coordinates
(BCD PR 2587), from Omar Boukli-Hacene. - Update
window.open
support IE and Edge (BCD PR 2594), from David Patterson. - Use correct name for
menus
permission (PR 2612), and Use correct name forcontextMenus
permission (PR 2613), to BCD from Jay Linski. - Remove Mobile Safari support for
href
from SVG<use>
(BCD PR 2616), from Erno. - Add support for numeric font weights in Chrome 62 (PR 2619), and Move support for RGBA hex notation to Chrome 62 from 63 (PR 2630), to BCD from Kasper Isager.
- Add
Promise.finally
support in Safari 11.1 (PR 2623), and Add Safari 11 support for Performance APIs (PR 2645), to BCD from jakub-g. - Update support for
NetworkInformation.effectiveType
(BCD PR 2656), from Seul-gi Choi(Chase). - Add support for
xml:space
in SVG in Firefox 3 and 4 (BCD PR 2670), from linkmauve. - Add support for
location.origin
and.toString
in IE 11 (BCD PR 2672), from Nik Rolls. - Add support for
Document.hasFocus
in Opera (BCD PR 2678), from Mass Carl. - Migrate note on Firefox 3.5 support for the Geolocation API (BCD PR 2680), from Mingye Wang.
<details>
is not in development in Edge (PR 2688), from Kagami Sascha Rosylight (first contribution to BCD).- Update support for
NetworkInformation
for Firefox and Edge (PR 2689), and Add support forDocument.exitFullscreen
(PR 2699), to BCD from Thomas den Hollander. - Add Edge 15 support version for
Element.closest
(BCD PR 2702), from Randall Leeds. - Add support for
word-break
for Edge (BCD PR 2704), from k-utsumi. - Fix typo of “user-agent” in
console.error()
calls (Kuma PR 4916), from Stephen Donner. - Remove reference to incorrect restart command (Kuma PR 4922), from James Hobin.
- Add examples for async iterators and generators. (PR 1036), from Joe Medley (first contribution to Interactive Examples).
- Add
String
concat
,ends
/startswith
,padend
/start
live examples (Interactive Examples PR 1068), from Melissa. - Add method for
String[@@iterator]()
(PR 1069), Create an example for theString.raw()
method (PR 1070), and 4 more PRs from Irene Smith (first contributions to Interactive Examples). - Make variable names consistent (Interactive Examples PR 1090), from Roy Revelt.
- Improve example code (Interactive Examples PR 1111), from Arjan Einbu.
- Add Japanese Translation for CompatibilityTable.ejs (KumaScript PR 692), from hmatrjp.
- Add data for XPath specifications (PR 726), Correct broken
<a>
and<strong>
DOM hierarchy in AddonSidebar (PR 771), and Add theoverheadIndicator
class toSeeCompatTable
(PR 788), from ExE Boss (first contributions to KumaScript). - Update CSS4 Text specification (PR 735), from Jakob Krigovsky (first contribution to KumaScript).
- Add CSS Environment Variables spec (KumaScript PR 748), from Nicolas Hoizey.
- Localize WebExtensions Sidebar (KumaScript PR 755), from Etienne Wan.
- Add Japanese translation (KumaScript PR 763), from WhiteHawk.
- Mark a couple of
scroll-snap
properties as obsolete (PR 251), from Dominique Hazael-Massieux (first contribution to Data). - Add
place-items
property. (PR 252), from Connor Shea (first contribution to Data). - Add MDN URLs to CSS properties data (PR 256), Add MDN URLs to at-rules data (PR 258), and 3 more PRs from Daniel D. Beck (first contributions to Data).
- Add initial value
auto
tomin-width
andmin-height
(PR 263), and Rename theoffset-
logical properties toinset-
(PR 273), from Rachel Andrew (first contributions to Data). - Add
media-document(<string>)
to@document
(PR 268), from Estelle Weyl (first contribution to Data). - Create code examples for Variable Fonts Guide (PR 4), Update widths and spacing (PR 5), and 2 more PRs to css-examples from Jason Pamental.
- Fix spelling error (learning-area PR 74), from Utkarsh Nag.
- Fix spelling error (learning-area PR 91), from LittleMang.
- Make minor adjustments to the setup instructions (sw-test PR 28), from Zunino.
- Add audio analyser (webaudio-examples PR 7), from peterchang.
Planned for September
In September, we’ll continue working on new and improved interactive examples, converting compatibility data, migrating MDN services, and other long-term projects.
Hack on accessibility
We’re happy with the results of the Paris Hack on MDN event in March, and are doing it again in September. MDN staff will meet in London for a week of meetings and 2019 planning, and then have the fourth Hack on MDN event, focusing on accessibility. We plan to write docs, build tools, and explore ways to help web developers make the internet more accessible for all users.
Ship more performance improvements
We’ll continue working on the suggested performance improvements, to meet the performance goals for the year.
One area for improvement is optimizing MDN’s use of custom web fonts. These fonts often need to be downloaded, increasing page load time. Some plugins and clients, like Firefox Focus, improve the mobile experience by blocking these by default. Our goal is to improve the experience for desktop users by downloading optimized fonts after the initial page load, and avoiding required custom fonts like FontAwesome for icons.
Another focus is Interactive Examples, which are useful but have a large impact on page load time. James Hobin is working through the requirements to load the examples directly into the page, rather than via an <iframe>
. Schalk is improving the asset builder for new features and for optimized asset building.
About John Whitlock
John is a web developer working on the engine of MDN Web Docs