@media, MathML, and Django 1 . eleven: MDN Changelog for May 2018

Editor’ s note: A changelog is “ the log or record of all significant changes made to a project. [It] usually includes records associated with changes such as bug fixes, brand new features, etc . ” Publishing the changelog is kind of a custom in open source, and a long-time practice on the web. We thought visitors of Hacks and folks who make use of and contribute to MDN Web Documents would be interested in studying more about the work of the MDN architectural team, and the impact they have inside a given month. We’ ll furthermore introduce code contribution opportunities, fascinating projects, and new ways to take part.

Done in Might

Here’ s so what happened in May to the code, data, and tools that support MDN Web Docs :

We’ ll continue this function in June.

Migrated CSS @media plus MathML compat data

The browser compatibility migration continuing, jumping from 72% to 80 percent complete. Daniel D. Beck finished the CSS @media rule functions, by converting data ( PR 2087 and a half-dozen others) and by critiquing PRs like 1977 from Nathan Cook . Mark Boas finished up MathML , posting 26 draw requests .

The initial few entries of the CSS @media browser compatiblity table

The @media table provides 32 features. It’ s a huge one.

There are over 8500 features within the BCD dataset, and half of the rest of the work is already submitted as draw requests. We’ re making constant progress toward completing the immigration effort.

Prepared with regard to Django 1 . 11

MDN runs on Django one 8, the second long-term support (LTS) release. In May, we updated the particular code so that MDN’ s check suite and core processes focus on Django 1 . 8, 1 . nine, 1 . 10, and 1 . eleven. We didn’ t make it right at the end of May, but by the time this particular report is published, we’ lmost all be on Django 1 . eleven in production.

Several Mozilla web projects use Django, and most stick to the LTS releases. Within 2015, the MDN team improved from Django 1 . 4 LTS to 1. 7 in PR 3073 , which usually weighed in at 223 commits, 12, 000 files, 1 . two million lines of code, with least six months of effort. Django 1 . 8 followed six months afterwards in PAGE RANK 3525 , a lighter modify of 30 commits, 2, six hundred files, and 250, 000 outlines of code. After this effort, the particular team was happy to stick with one 8 for a while.

The majority of the upgrade pain was specific in order to Kuma . The massive document counts were due to importing your local library as git submodules , a common practice at that time for security, reliability, and personalization. It was also harder to upgrade libraries, which meant updates had been often delayed until necessary. The particular 1 . 7 upgrade included a good update from Python 2 . six to 2 . 7, and it is difficult to support dual-Python installs on a single internet server.

The MDN team worked within some of these restrictions, and tackled others. They re-implemented the development VM setup scripts in Ansible , but kept Puppet to get production. They updated submodules for that 1 . 7 effort, and turned to hashed requirements files just for 1 . 8. A lot of codebase plus process improvements were gained throughout the update effort. Other improvements, like Dockerized environments , were additional later to avoid issues in the next large update.

Django 1 . 4 wasn’ t originally planned being an LTS release, but instead was scheduled for pension after the 1 . 6 release . The end of support was frequently pushed further into the future, lastly extending to six months after 1 . 8 has been published .

However, the Django team knew that will 1 . eight was an LTS release when they shipped it, plus would get security updates for three yrs. Many of the Django team’ s choices in 2015 made MDN’ t update easier. Django 1 . eleven retained Python 2 . 7 assistance, avoiding the pain of a simultaneous Python upgrade. Django now has a predictable release procedure , which is great for website plus library maintainers.

The Django supported versions table shows exactly what releases are supported, and when these are supported. There's a new release each almost eight months, regular releases are backed for 16, and LTS discharge for 3 years.

Django’ s release map makes scheduling update efforts simpler.

Django also maintains a guide on updating Django , and the suggested process worked nicely for us.

The first step was to upgrade third-party libraries, which we’ ve already been working on for the past two years. Our objective was to get a library update straight into most production pushes, and we up-to-date dozens of libraries while shipping not related features. Some libraries, such as django-pipeline , didn’ t support Django 1 . eleven, so we had to update them ourself. In other cases, like django-tidings , we furthermore had to take over project maintenance for some time.

The next step has been to turn on Django’ s deprecation warnings, to find the known update problems. This highlighted a few more libraries in order to update, and also the big changes required in our code. One problem area has been our language-prefixed URLs. MDN utilizes Mozilla-standard language codes, such as /en-US/ , where the area is in capital letters. Django boats a locale-prefixed URL framework , but utilizes lowercase language codes, such as /en-us/ . Mozilla’ t custom framework broke in one 9, and we tried a few techniques before copying Django’ s platform and making adjustments for Mozilla-style language codes ( PR 4790 ).

Next we ran our automated assessments , and started fixing the numerous failures. Our goal was to back up multiple Django versions in a single codebase, and we added optional builds in order to TravisCI to run tests on one 9, 1 . 10, and 1 ) 11 ( PAGE RANK 4806 ). We divided the fixes into over fifty pull requests, and tested little batches of changes by implementing to production. In some cases, the same program code works across all four versions. Consist of cases, we switched between program code paths in line with the Django version . Updates pertaining to Django 1 . 9 were regarding 90% of the upgrade effort.

This incremental approach is definitely safer than a massive PR, plus avoids issues with keeping a long-running branch up to date. It does make it tougher to estimate the scope of the change. Looking at the commits that will mention the update bugs , we transformed 2500 to 3000 lines, which usually represents 10% of the project program code.

Started tracking operate ZenHub

For the past 2 yrs, the MDN team had been making use of Taiga to plan and monitor our work in 3-week sprints. The particular team was unhappy with efficiency issues, and had been experimenting with GitHub’ s project management features. Janet Swisher and Eric Shepherd directed an effort to explore alternatives. In May, all of us started using ZenHub , which provides a run planning layer on top of GitHub problems and milestones.

The ZenHub board collects task cards straight into columns, that mive to the correct as they approach completion.

See how the ‘ sausage’ gets made with our ZenHub board.

If you have the ZenHub plugin set up, you can view the sprint board within the new mdn/sprints repository, which gathers tasks across our 10 energetic repositories. It adds additional information to GitHub issues and draw requests, linking them into task planning. If you don’ t possess the plugin, you can view the sprint plank on the ZenHub website . If you don’ to want to sign in to ZenHub along with your GitHub account, you can view the breakthrough in the individual projects, like the Sprint 4 landmark in the Interactive Examples project .

Continued HTML Online Examples

We’ lso are still working through the technical difficulties of shipping HTML interactive illustrations. One of the blocking issues is limiting style changes to the demo result on the right, but not the instance code on the left. This is a make use of case for Shadow DOM , which can limit styles to a subset of components. Schalk Neethling shipped a solution depending on Shadow DOM in PR 873 and PAGE RANK 927 , and it works within Chrome. Unfortunately, not all current browsers support Darkness DOM , and we’ ve had difficulty integrating a shim. We’ ll continue to work on this particular and other blockers.

At the same time, contributors from the global MDN neighborhood have written some interesting demonstrations for < track> ( Leonard Lee , PR 940 ), < map> ( Adilson Sandoval , PR 931 ), and < blockquote> ( Florian Scholz , PR 906 ). We’ re capable to get these and the other illustrations on MDN.

On the particular left, HTML defines a < map> of polygon targets, and the right the resulting image along with link targets is displayed. inch width=

A demonstration of the polygon targets for < map>.

Shipped Tweaks and Fixes

There were 397 PRs combined in May:

60 of the were from first-time contributors:

Other significant PRs:

Planned for June

We plan to ship Django 1 ) 11 to production in early 06, even before this post is published. We’ ll spend some additional time within June fixing any issues that MDN’ s millions of visitors discover, plus upgrading the code to take benefit of some of the new features.

We plan to keep working on the particular compatibility data migration, HTML online examples, and other in-progress projects. 06 is the end of the second one fourth, and is a deadline for many quarterly goals.

We are collecting in San Francisco for Mozilla’ s All-Hands . It will be a chance for the remote group to be together in the same area, to celebrate the year’ ersus accomplishments to date, and to make programs for the rest of the year.

John is really a web developer working on the motor of MDN Web Docs

A lot more articles by John Whitlock…

If you liked @media, MathML, and Django 1 . eleven: MDN Changelog for May 2018 by John Whitlock Then you'll love Web Design Agency Miami

Add a Comment

Your email address will not be published. Required fields are marked *

Shares