Kuma Report, April 2017
Here’s what happened in April in Kuma, the engine of MDN:
- Explored faster paths to AWS
- Maintained quality with new robots
- Improved the macros dashboard
- Goodbye BrowserCompat API, Hello Browser Compat Data
- Shipped tweaks and fixes
Here’s the plan for May:
- Experiment with on-site interactive examples
- More legacy cleanup and fixes
- Ship the sample database
Done in April
Explored Faster Paths to AWS
The AWS Migration Plan details how Kuma and its backing services will need to evolve to fit into a cloud architecture. However, there are good reasons to make the switch quickly with a non-ideal architecture. We can minimize the painful transition where we are supporting both the current datacenter and AWS. Some changes are difficult to do now, and could be easier in the single AWS environment.
jgmize and metadave, the MozMEAO Site Reliability Engineers (SREs), are leading this effort to find a faster path to AWS. You can follow their work in the MDN AWS Architecture Eval & Recommendation milestone in the mozmar/infra repository. MDN developers are still involved when a code change is needed, like escattone’s work to disable the contributor bar in maintenance mode.
Maintained Quality with New Robots
Linters are pedantic robots that find syntax errors, style mistakes, and language misuse. They can be jerks about the small stuff so that code reviewers can focus on the ideas in the new code. We added several new linters to our development process:
- stylelint checks Kuma’s stylesheets, which required some work to get into the proper format. (PR 4167, PR 4170, and PR 4170)
- ESLint can be used to check Kuma’s JavaScript. Our JS needs work. (PR 4199)
- EJSLint checks for invalid EJS templates in KumaScript PRs. (PR 154)
- JSON Lint checks for invalid JSON in KumaScript PRs. (PR 159)
Improved the Macros Dashboard
We’ve shipped an improved macros dashboard which lets KumaScript authors see how often macros are used, access the macro source, and find documents that use the macro. There are over 90 macros not used on any page, so there are opportunities for deprecating and removing macros.
Goodbye BrowserCompat API, Hello Browser Compat Data
BrowserCompat was a 2014 project to build an API to serve browser compatibility data, for MDN and for other users. An API was a development-heavy solution, and we had to abandon it in 2016 when we lost resources. This month, stephaniehobson removed the MDN assets supporting this project, so we can start shutting down the service.
For the next iteration of this idea, we’re hand-coding JSON structures with the Browser Compatibility data, and working to make MDN the first consumer of this data. You can follow the project on the browser-compat-data repository.
Shipped Tweaks and Fixes
Here’s some other highlights from the 41 merged Kuma PRs in April:
- PR 4144: In the page history, enable comparing the first translation to the English source (safwanrahman).
- PR 4158: When creating a sub-page of a redirected page, create the sub-page at the new URL (safwanrahman).
- PR 4171: Enable Bulgarian as a supported language. This was a small code change backed by a lot of work from kberov and jswisher.
- PR 4173: Deprecate KumaScript editing on MDN, and reduce the static assets (stephaniehobson).
- PR 4181: For page watch emails for a first translation, show a diff to the original English text, and prepare for more email changes (jwhitlock).
- PR 4182: Banned user profiles are now 404 Not Found, not 403 Forbidden (safwanrahman).
- PR 4190: The Insert Live Sample editor action inserts better section titles (sheppy).
There are some new contributors in the 16 merged KumaScript PRs in April:
- PR 150: Fix a French typo (Porkepix).
- PR 158: Update HTML 5.1 and 5.2 specifications (PointedEars).
Planned for May
Here’s what we’re planning to ship in May:
Experiment with On-site Interactive Examples
In April, we shipped a first iteration of changing examples on MDN. wbamberg and Elchi3 created alternate versions of JavaScript and CSS reference pages with short examples at the top of the page. We’ve added an A/B test to see if there is a behavioral difference for users seeing these examples.
In May, schalkneethling will refine wbamberg’s prototype code to add interactive examples for CSS and JavaScript. This will allow users to test their understanding by making changes to the short examples and seeing the results without leaving MDN. We’ll also ship this as an A/B test, and analyze the results before planning further rollouts.
More Legacy Cleanup and Fixes
We’re planning on reducing and removing more legacy features, to simplify the Kuma project and make room for new development:
- Remove the Vagrant development environment.
- Remove the Ansible provisioning system, used by Vagrant and TravisCI.
- Rework Zones, moving the styles to standard assets and simplifying configuration.
- Fix several bugs and misfeatures in client-side drafts.
- Rewrite more tests in the py.test style.
- Improve the KumaScript engine, macros, and development process.
Ship the Sample Database
The Sample Database has been promised every month since October 2016, and has slipped every month. We don’t want to break the tradition: the sample database will ship in May, for the anniversary of the project. See PR 4076 for the remaining tasks.