Engineering Productivity is off to a great start in 2016; here’s what we’ve been up to in Q1. Build System
Build system improvements are a major priority for Engineering Productivity in 2016. The build team made great progress in Q1: - Windows builds are now made using VS2015. This shaves 100 minutes off of PGO builds! - Install manifest processing is up to 10x faster on Windows (10s now vs 100s before). Tests files are now lazily installed, making builds and test invocation significantly faster. - Many improvements to artifact builds, which have resulted in a 50% speed improvement - Artifact builds now support git-cinnabar users - A lot of work has been done to migrate legacy Makefiles to moz.build files, and to move away from autoconf; more along these lines will be done in Q2 - Build telemetry has been added, which will allow us to track improvements for developer builds; this is currently opt-in, so please consider setting BUILD_SYSTEM_TELEMETRY=1 in your build environment to help us validate this - The ICU build system has been reimplemented so it no longer excessively slows down builds. The build team is a large meta-team comprised of individuals from Engineering Productivity and several other teams; thanks to everyone who has contributed. MozReview and Autoland The primary goal of the MozReview team in Q1 was to increase user adoption by addressing various UX issues that have confused or frustrated users. To that end, a feedback panel consisting of some of Mozilla’s top reviewers has been created to provide a feedback loop for the MozReview developers. We’ve identified a number of issues that impact reviewer productivity and are working on them, starting with the top issue: lack of inline comments in the diff viewer. We also explored confusion around the general layout and flow of MozReview/Review Board, and working with UX designer Tiffanie Shakespeare we’re coming up with some big changes that should improve general usability. We have been working on a framework that will allow us to experiment in the UI without having to completely fork Review Board. In addition, this quarter we implemented various high-priority fixes and improvements, including - Disabling interdiff rebase filtering, since it was unreliable. - Adding options to disable reviewer deduction and to publish without prompting when pushing commits up. - Concatenating MozReview BMO-comment emails to reduce the volume of email sent out when many commits are published. - Adding extra context to the diffs in BMO comments. - Showing a comment button when hovering over the diff viewer, improving discoverability. - Clarifying status of reviewers in the commits table. We’re also very close to landing two other important features: switching from “ship it” to the standard BMO review flags (r?/r+/r-), and letting reviewers delegate reviews to others. Finally, autoland-to-inbound was rolled out, giving MozReview users an easy way to land reviewed patches. TaskCluster Migration Engineering Productivity is helping the TaskCluster team and Release Engineering migrate builds and automated tests from buildbot to TaskCluster. In Q1, this involved a lot of work in crafting a docker image that could be used to run linux64 debug unit tests successfully, and related work in greening up the test suites in that environment. Linux64 builds and tests in TaskCluster are now running as Tier 1 in Treeherder, so the teams are moving on to other linux64 flavors: opt, pgo, and asan. Performance Automation Sheriffing of performance regressions of Talos tests has moved entirely to Perfherder; Talos no longer reports data to graphserver, and graphserver will be retired in the future. Perfherder also now displays performance metrics generated by AreWeFastYet <https://arewefastyet.com/> and AreWeSlimYet <https://areweslimyet.com/>. To support the e10s project, Perfherder now has an e10s dashboard <https://treeherder.mozilla.org/perf.html#/e10s> that can be used to view the differences between e10s and non-e10s Talos tests. Finally, performance benchmarks previously running in Mozbench have been migrated to AreWeFastYet, and Mozbench has been retired. Continuous Integration A lot of work has been completed to support the addon signing project; this includes taking all of the addons used by test automation and either converting them to restartless addons and making them get installed via a new API, or signing them in-tree. All test harnesses now work with addon signing enforced. For e10s, all appropriate test suites have been enabled in e10s mode on Windows 7 on trunk, with the exception of a couple of suites on Windows 7 debug, due to ongoing assertions and leaks. All suites are running in e10s mode on all platforms on the project branch ash <https://treeherder.mozilla.org/#/jobs?repo=ash>. All relevant test suites have been changed to default to e10s mode when run locally, so that developers don’t accidentally introduce new tests which are not e10s-compatible. Try syntax has been made optional for try pushes; if no jobs are specified, users can use Treeherder’s “Add new jobs” feature to schedule Buildbot jobs at will post-push. Work is continuing on automatic classification in Treeherder; this will allow Treeherder to automatically recognize and classify (or “star”) many existing intermittents. You can see an example here <https://treeherder-heroku.herokuapp.com/#/jobs?repo=mozilla-inbound&revision=6c2df11a71b14819993bfe3f29cf8439551b802c&selectedJob=12309443>; this should be rolled out in Q2. Mobile Automation A |mach autophone| command has been added which allows autophone to be downloaded, configured and run locally. All mobile Talos tests have been migrated to autophone, which has allowed us to entirely retire panda boards. Some enhancements to mobile automation have been made to support testing on Android 6.0+. Marionette/WebDriver It’s now possible to write WebDriver specification tests in Web Platform Tests. Element interactability algorithm from W3C WebDriver standard landed in Marionette; gated behind specificationLevel >= 1 capability. Firefox UI Tests and Firefox Media Tests Both of these suites have been migrated to mozilla-central and have corresponding mach commands; firefox-ui-tests on linux64 debug are now run per-checkin in TaskCluster and have try support. Community Engagement Engineering Productivity is actively involved in increasing community engagement across the team. We continue to work on several approaches related to this: We’ve introduced the concept of “Project of the Month” in order to attract contributors to projects which are ready and willing to accept more community involvement. See https://wiki.mozilla.org/Platform_Operations/Project_of_the_Month for a list of past projects. During Q1, we wrapped up our second Quarter of Contribution (loosely modeled after GSoC) successfully; see this blog post <https://elvis314.wordpress.com/2016/02/19/qoc-2-iterations-and-thoughts/> for details on the projects involved. Lastly, we’ve also engaged some college students in UCOSP <http://ucosp.ca/> to help with code coverage; from their efforts we are now collecting some basic JavaScript code coverage data. Metrics We continue to find new uses for ActiveData <https://wiki.mozilla.org/Auto-tools/Projects/ActiveData>; we now have some build metrics for builds in automation <http://people.mozilla.org/~klahnakoski/MoBuildbotTimings/Builds-Overview.html> (caution: this is slow to load), a buildbot simulator (potentially useful for predicting the effects of changing pool sizes of test machines), and a prototype of a dashboard <http://chinhodado.github.io/codecoverage_presenter/> which can be used to examine JavaScript code coverage data. There’s also a new dashboard for Release Management which displays uplift history <http://people.mozilla.org/~klahnakoski/platform-history/release-history.html> . _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform