AMP

The AMP Project Roadmap

The ongoing development of AMP is conducted in working groups, each with knowledge or interest in a specific area of AMP.

To make their work visible to the community all groups provide regular status updates with details of what they have accomplished and what's up next.

All of the updates listed here are available as issues on GitHub and we'd love you to join the conversation there!

Select working groups

User Interface & Accessibility

Status Update Tue May 26 2020

What was accomplished

Storybook

  • Worked on open sourcing the Storybook addon for AMP

Bento

  • Preact modifications to SocialShare merged, ongoing discussions on AMP modifications
  • Merged initial amp-selector and amp-fit-text implementations
  • Modified PreactBaseElement to create a slot for internal AMP services, i.e. the sizer for layout=responsive
  • Bumped Bento components by a full integer (0.1 => 1.0 instead of 0.1 => 0.2)

Bugs

  • Kevin's first week on triage!!
  • amp-img missing src leads to obscure error message bug fix
  • amp-carousel:0.2 autoadvance during prerender bug fix

UX

  • amp-lightbox and amp-image-lightbox for AMP4Email

Lessons learned

  • return type of internal objects should be a struct
  • static methods should be hoisted to improve performance (instantiation)
  • Preact props need to be quoted, otherwise they get obscured by the compiler
  • You need a computer to do things
  • Zewen doesn't like dark mode during the day -- the range of colors expressing the information hierarchy leaves more to be desired

What's next

  • modifications to amp-social-share
  • ongoing discussion & design review for lightbox in email
  • prototype carousels for Bento
  • more bugs to be fixed
All details on GitHub

User Interface & Accessibility

Status Update Mon May 11 2020

What was accomplished

Kevin: - Progress on amp-social-share Preact mode - More React training!

Caroline: - amp-list[layout=container] available: - launched on email! - experimental elsewhere - Progress on amp-selector for Bento - Progress on amp-fit-text for Bento - Was on release duty - Rolled out display locking, in testing for one week - a11y vendor conversations - Discussed amp-lightbox in email

Wassim: - amp-imgur format fix - amp-facebook fullscreen ongoing - Storybook --addon-amp

Alan: - amp-story-animation code complete - Turned on ECMASCRIPT 2020 :)

Rebecca: - Ramping up with new extension Codelab.

Lessons learned

What's next

  • amp-social-share Preact mode
  • More Bento: amp-selector, amp-fit-text, starting discussions for amp-carousel
  • Testing display locking using CSS property instead of an attribute.
  • Launching amp-story-animation
  • Investigating migrating amp-carousel 0.1 to 0.2
  • (Reproing amp-carousel 0.2 in amp-lightbox bug)
  • Finalizing design for video on Bento mode
All details on GitHub

Runtime

Status Update Mon May 11 2020

Recap

  • Justin

    • Auto link stacktrace frames to code in bug reports

    • Added support for module/nomodule script pairs

    • Fixed devAssert/userAssert for closure's type narrowing

    • Persistent browserify caching!

    • Helped remove AmpPass, various fixes to infra builds

    • Added linting to chai assertions, fixed tests

    • Added a few missing unresolved element CSS styles

    • Made blurry-image non-interactable when it's opacity: 0.

    • Fixed CEv1 in Safari 9 and Yandex

    • Made getMode().test and friends DCE in prod (again)

  • Jake

    • documentHeight bugfix, unit test, and integration test.

    • amp-script worker exceptions caught as user errors instead of dev errors. 

    • Protocol Adapters unit tests and manual e2e test.

    • Small improvements to the e2e testing flow (--extensions and --fast options)

  • Will

    • “intersect-resources” experiment

      • Fixed ads regression

      • Looks like 1-2% LCP, 5-6% FID improvement

    • Reviewed to-date progress on code mauve in CSI data


Learned

  • Persistent module state in unit tests is tricky

  • Old browsers still get a small (but noticeable) percentage in traffic

    • Does this effectively constrain our true browser support set?


Next

  • Justin

    • Hoping to add persistent file transform cache to Babel

    • Deferring buildCallback (should be easier, now that I've looked into it)

      • See if any elements expect really early buildCallback

  • Jake

    • New metric for in-viewport but not rendered latency

    • worker-dom Protocol Adapters PRs

    • IE11 Minimum support explorations

  • Will

    • Figure out and run a manual QA plan and start prod rollout
All details on GitHub

Stories

Status Update Mon May 11 2020

What was accomplished

  • Video performance bug fixes
  • amp-story-reaction refactoring in preparation for new components (quizzes, polls) and finalizing API.
  • Animation investigation for amp-story-reaction
  • Refactoring of LocalizationService
  • Ability to override story language via an attribute at the player level (wip).
  • amp-story-player
  • Load stories inside the player from the AMP cache of the publisher's choice. This is specified as an amp-cache attribute in the player tag. (e.g. amp-cache="cdn.ampproject.org")
  • Progress on programmatic API hooks for publishers to use (onReady, loadStory, etc..)
  • Scoping work for entry points to the player (upcoming interns project).

What's next

  • Backend for amp-story-reaction.
  • Implementation of animations for amp-story-reaction.
  • Launch API for programmatic control of the amp-story-player.
All details on GitHub

Analytics

Status Update Mon May 11 2020

What was accomplished

  • Performance Improvement
  • Running analytics-chunks experiment in canary. (Exclude AMPHTML ad)
  • Two existing errors surfaced due to the above experiment Issue Issue

  • Consent

  • Discussion on allowing consent dialog to take over fullScreen on page load Issue
  • Add metadata on top of the raw consent string. PR
  • Fixed consent dialog UI when the navigation bar is displayed. Issue
  • Agreed on expanding raw consent string storage limit up to 1kb.
    • The AMP team will monitor the "storage size exceed limit" error rate.
    • Update from Google AMP Viewer: open to expand the size limit to each domain, if it's the current limit is too small for the TCF V2 consent string.

What's next

  • Store consent metadata & pass metadata to vendors
  • Standalone analytics solution for AMPHTML Ad. Looking for early thoughts and ideas! Draft PR Draft PR.
All details on GitHub

Ads

Status Update Mon May 11 2020

What was accomplished

AMPHTML ads - Inabox regression cause found. Ran many experiments to catch back up. Currently back on track with normal amp release. (new regression found in canary with known cause) - Internal review of new format docs. - CSS change experiment currently running at 5% - IntersectionObserver on Firefox testing flakiness issues discussion in progress with Mozilla - Chunking experiment 0.1% on canary

Story ads - GDN alpha test with live publisher starting.

What is next

AMPHTML ads - Resume no-signing work - Monitor and optimize chunking experiment (many experiments running at the same time) - Launch CSS change - Bring new ad format design to external review.

Story Ads - Roll out GDN to larger set of publishers.

All details on GitHub

Performance

Status Update Mon May 11 2020

What was accomplished

  • Design doc and design review for validator changes needed for module/nomodule https://docs.google.com/document/d/1aD7MSHNlS8MsyBOjBx57OuLxVuIMPXVWDIrjt0ItzM8/edit#heading=h.hyyaxi8m42a
  • FixedLayer experiment merged (but turned off due to failing test on master)

Lessons Learned

  • Experiment tests do not run on PRs in CI

What's Next

  • Turn on Integration tests for module build (carry over, blocking module/nomodule launch)
  • Investigate removal of AmpCodingConvention.java
  • Investigate/resolve conflict with sidebar tests & FixedLayer experiment
  • Wrap up RAIL metrics in amp-analytics work
All details on GitHub

Bento

Status Update Mon May 11 2020

What was accomplished

  • IntersectionObserver polyfill code in PROD. Monitoring for launch.
  • SocialShare: an updated component API.
  • AmpSelector: active progress.
  • AmpFitText: active progress.

Lessons learned

  • Switching to major-version bump for all bento components.
  • Balance between keeping the old code and fixing the legacy issues. For instance, AmpSocialShare has a config that always requires asynchronous rendering. Or AmpFitText over-nests DOM elements and provides an extra z-index layering.

What's next

  • We will soon cover all unique component types and can focus on performance and quality.
  • Display locking: migrate to new Chrome API.
  • Aspect ratio CSS: active collaboration with Chrome team to get it done.
  • React context and DOM tree.
  • ResizeObserver polyfill.
All details on GitHub

User Interface & Accessibility

Status Update Mon Apr 27 2020

What was accomplished

Bento: - Design review for styling - Progress on amp-selector - Progress on design for amp-social-share in Preact mode - amp-social-share Storybook examples

amp-carousel 0.2: - Investigated stability issues.

amp-list[layout=container]: - Progress on launching

amp-story-animation: - Done: scoping selectors to an element - Done: sequencing

Display locking: - Setting up infrastructure for experiment rollout

amp-next-page 0.2: - Bugfix for deep parsing - Bugfix for recommendation box not rendering

Storybook: - Styled JSX

Lessons learned

  • URL expansion is async and specific to AMP—some components on Preact mode need a different solution.

  • Closure doesn't have intersection types :(

  • Wassim learned a lot on how custom fonts work on AMP

  • optional ?? fallback syntax for nullish values

What's next

  • Rebecca joining us!
  • More on design for amp-social-share on Preact mode
  • amp-story-animation: viewport units/CSS extensions
  • Using only amp-animation spec format for amp-story presets.
  • Rollout display locking
  • Caroline on release duty next week
  • amp-selector in Bento
  • amp-fit-text in Bento
  • Reviewing font strategy change
  • Transformer for font-display: optional on Google Fonts URLs.
All details on GitHub

Ads

Status Update Mon Apr 27 2020

What was accomplished

AMPHTML ads - Debugging inabox performance regressions across April releases. - Continued work on chunking of FIE load (I2I: ampproject/amphtml#27584 & PR: ampproject/amphtml#27585) - CSS change experiment

Story ads - GDN backfill test complete. GAM Demo is ready. Some outstanding questions around adsense. - Monetization metrics exploration

What is next

AMPHTML ads - Continue to investigate regression losses. - Introduce manual regression test and explore other ways to optimize finding of root causes. - Investigation of popular unsupported reservation formats - Resume signing work

Story Ads - Alpha trial of auto generated creatives. - Finalize monetization metrics.

All details on GitHub

Stories

Status Update Mon Apr 13 2020

What was accomplished

  • Last launch-blocking tweaks for remote URLs in page attachments
  • Bugfixes for story education, auto-advance
  • Update amp-geo documentation to mark as usable within stories
  • Allow single-tap links in <amp-story-grid-layer> if they are within the bottom-most 20% of the viewport (with publisher opt-in)

What's next

  • Validation and documentation for remote URLs in page attachments
  • Validation and documentation for single-tap links in <amp-story-grid-layer>
  • Allow loading stories in the player from the cache
  • JS APIs for open source web player
  • Adding play/pause controls to the system layer on desktop
  • Exploratory work on quiz improvements
All details on GitHub

Ads

Status Update Mon Apr 13 2020

What was accomplished

AMP Monetization AMPHTML ads - More profiling of ff fallback, sticky ad & 3p network doc - Introduce chunking into long promise chain I2I: ampproject/amphtml#27584 & PR: ampproject/amphtml#27585

Story ads - Experiment and E2E testing of auto generated demand - Exploration of introduction of new story ads network

What is next

AMP Monetization AMPHTML ads - Submit chunking experiment and monitor results - Introduce manual regression test - Explore resuming no signing work.

Story Ads - Support integration of new ad server - Ramp up auto generated creatives experiment

All details on GitHub

Stories

Status Update Mon Mar 30 2020

What was accomplished

  • Fixes for auto-advancing based on audio
  • Pull request out for remote page attachments
  • Story education mostly complete
  • Fixes for style isolation

What's next

  • Moving amp-story-player to a custom element
  • Allow loading stories from the cache in the player
  • Design of player JS API
  • Continuing video performance design
All details on GitHub

Ads

Status Update Mon Mar 30 2020

What was accomplished

AMP Monetization

AMPHTML ads - Organized fast fetch findings into doc - Explored with Google Ad Manager team data on reservation formats - Module/nomodule: explore serving only module script for modern browsers - I2I for performance bisection script

Story ads - Ramping up new PM, working to prioritize impression tracking and serving changes. - Strategy around finding existing asset pipeline - Started discussion around available cookies in different serving contexts

What is next

AMP Monetization

AMPHTML ads - Profiling of fast fetch fallback code path - Introduce chunking into long promise chains for fast fetch eg load event - Find out if Ad Manager has potential to attract more amp ads supplies

Story Ads - Work with creation tools interested in integrating new ad server - Re-engage with GDN auto generated creatives

All details on GitHub

Performance

Status Update Mon Mar 30 2020

What was accomplished

  • Reduce size of v0.mjs to 60.07kb, as a result of landing several optimization changes.
  • Move from resorcery to @ampproject/remapping.
  • Introduce Post Closure Babel Compilation Pipeline for Multi-Pass.
  • Remove padding-top adjustment during boot on origin documents.
  • Fix accidental compilation of ES Classes in Module Build.
  • Prototype and land new local server for development, supporting Modules.
  • Test framework for Document transforms, intended for usage across different transformers (AMP Caches, Optimizer, AMP Wordpress).
  • Fix error reporting to identify module build.
  • Add module build explainer.

Lessons Learned

  • Buy a good chair for home.

What's Next

  • postHTML transforms in integration tests (in progress).
  • Start work on AMP optimizer and validator for module build changes.
  • Slight refactor of babel-plugin-transform-function-declarations.
  • Remove indirection for AMP Configuration, allowing plural AMP Caches and AMP Optimizer to support Module Builds.
  • Moving FixedLayer to extension
  • Send page load performance metrics to CSI
All details on GitHub

Bento

Status Update Wed Mar 18 2020

What was accomplished

  • AMP team went through the React training.
  • A lot of work has been completed to make React development idiomatic, but compatible with Closure compiler used by AMP.
  • A separate testing infrastructure has been set up.
  • amp-timeago, amp-date-display, amp-social-share are reimplemented as React components.
  • Initial runtime infrastructure has been built to connect Web Components and React components.

Lessons learned

  • Make everything idiomatic
  • Use more React tools

What's next

  • Continue to improve idiomatic React style.
  • Setup storybook and more tools.
  • More sophisticated components. Specifically composite components such as carousel and accordion.
  • Design the pattern for all video players.
  • Improve Web Components/React mapping in AMP Runtime.
  • Build the first launch plans.
All details on GitHub

Stories

Status Update Mon Mar 16 2020

What was accomplished

  • Support swiping in amp-story-player
  • Prototypes of loading remote URLs on swipe up
  • Started work on story education

What's next

  • Loading stories from the cache in amp-story-player
  • Productionize loading remote URLs on swipe up
  • Viewer messaging for story education
  • Spec out auto-advancing previews
All details on GitHub

Ads

Status Update Mon Mar 16 2020

What was accomplished

AMP Monetization

AMPHTML ads - Exploration of fast fetch ads performance, identified potential targets - Removing AMPHTML ads singing WIP: working to understand crossover with perf improvements - Exploring new ads format, and established connection with Celtra to bring them to their users - Reviewing the module/nomodule experiment data, finding that inabox ads on Edge has underreported a lot of active views

Story ads - Met with Ad Manager teams around performance tracking, some concerns about web vs app tracking.

What is next

AMP Monetization

AMPHTML ads - Finalize ideas for potential UX metric improvements in conjunction with ad networks. - Removing AMPHTML ads singing WIP: may be reprioritized - Fixing inabox ads on Edge issues - Performance profiling for inabox ads

Story Ads - Escalation of impression tracking changes.

All details on GitHub

Performance

Status Update Mon Mar 16 2020

What was accomplished

  • add mjs files for experiments added on experiments-config.js
  • fixed single pass to work with Preact work
  • Tracked down common sources of low performance due to layout shift and high largest contentful paint and created tracking issues:
  • https://github.com/ampproject/amphtml/issues/27228
  • https://github.com/ampproject/amphtml/issues/27229
  • https://github.com/ampproject/amphtml/issues/27230

Lessons Learned

  • fast internet is expensive

What's Next

  • fix integration tests for module build (in progress)
  • build pipeline for local development automatically uses module / nomodule
All details on GitHub

AMP for Email

Status Update Wed Mar 04 2020

Highlights

  • A lot of consensus on standardization efforts

WG Meeting Notes (12/13, 1/10, 2/13)

  • Unified sender registration form still in review across providers
  • Consensus on allowing CSS attribute selectors in spec
  • Consensus on banning AMP-Redirect-To feature in amp-form
  • Consensus on standardizing meta-based whitelists (https://github.com/ampproject/amphtml/issues/27094)
  • Consensus on allowing input[type=button] in spec, links with tel: URI scheme
  • Reviewed process proposal for incremental adoption of new AMP components
  • Discussed optional enforcement of email CSS rules in validator
  • Discussed standardizing enforcement of DMARC
  • Discussed standardizing email "hyper-collapsing"
  • Discussed standardization of MIME tree corner cases
  • Continued reviewing new email auth proposal
  • Created new "AMP for Email Ecosystem" group and Slack channel

Focus areas

  • Standardizing AMP for email behavior across providers by using AMP4EMAIL spec as single source of truth
All details on GitHub

Stories

Status Update Mon Mar 02 2020

What was accomplished

  • Filed intent-to-deprecate: amp-story-bookend
  • Filed intent-to-deprecate: amp-sidebar within amp-story
  • Player
  • Rolled out to production
  • Documentation launched
  • Navigation and tap-to-next story are in beta
  • Quizzes
    • Options to customize quizzes, including theme, chip corner, chip style, accent color, prompt and option text color
  • Fix for --story-page-vh and --story-page-vw being incorrect sometimes on desktop

Lessons learned

  • It's not always clear which features should exist at the format level and which should exist at the player level

What's next

  • Player
    • Swipe-to-next story
    • Sandboxing of iframes
  • Story format onboarding and user education
  • Kickstarting discussions around remote URLs in page attachments
  • Examples for workarounds for sidebars/bookends
All details on GitHub

Ads

Status Update Mon Mar 02 2020

What was accomplished

AMP Monetization - Exploring "expand to scroll" ads format to better support the multi-size ads.

AMPHTML ads - Removing AMPHTML ads singing WIP: refactoring DOM streaming code. - Ran module/no-module experiment for inabox. Found issue with ads transformer.

Story ads - Design of impression tracking changes to be more inline with in-app interstitials

What is next

AMP Monetization - UX review & design review for "expand to scroll" ads format - Meeting Axios & Kargos to understand the current monetization challenges

AMPHTML ads - Removing AMPHTML ads singing WIP: Connect to new streaming logic. - Fixing the ads module/nomodule transformer and rerun module/nomodule experiment.

Story Ads - Working through impact of ad impression tracking with partner ad networks - Exploration of alternative ad placement strategies to help with shorter stories.

All details on GitHub

Performance

Status Update Mon Mar 02 2020

What was accomplished

Kris

  • added post closure compiler transformation processing step
  • Remove doc css and base css from ESM build, which is a 10% improvement from the output size (62.61 kb <- 72.88 kb)
  • Move the ampproject from using brotli-size library to filesize (brotli compression on multiple cores, improves task on machines with higher cpu cores)

Erwin

  • Fixed render delaying extensions preloading for module builds
  • On duty (partially 1st week)
  • Ramped up module builds to 5% (seeing traffic)
  • Fixed single pass code to work with JSX (in review)

Kevin

  • Wrote proposal to move FixedLayer from runtime to viewer integration extension (save 36kb unminified, uncompressed)
  • Investigating AMP pages with poor RAIL metrics to identify areas of work for performance improvements

Lessons Learned

Kris

  • Travis VMs are lower powered than Github Actions ones.

Erwin

Kevin

What’s next

Kris

  • Assist Working Groups with Performance Analysis on real-world devices

Erwin

  • Ramp up module to 50%
  • Get all tests to work with module build
  • Add module/nomodule pattern to AMP packager

Kevin

  • Take FixedLayer proposal to design review
  • Writeup for using DOM Purify only in cache (remove from extensions on origin)
All details on GitHub

Infrastructure

Status Update Mon Feb 03 2020

What we did

  • Updated amp.dev release schedule page
  • Release tagging is live (PR Use: In Stable / Beta / Experimental)
  • Updated cherry-pick template with new release channel names
  • Added a way to build only the core runtime via gulp build | dist | watch --core_runtime_only
  • Clarified process for adding amphtml dependencies using yarn
  • Triaged backlog of infrastructure issues
  • Renaming AMP_CANARY cookie to __Host-AMP_OPT_IN

What's next

  • Default minified build (gulp dist) will now add AMP_CONFIG to runtime files
  • Performance tests as part of CI / release workflow
  • Make LTS and nightly channel widely available
  • Take steps to reduce CI flakiness (sauce labs, percy)
All details on GitHub

Stories

Status Update Mon Feb 03 2020

What was accomplished

  • Viewer (amp-story-player)
  • Renamed to public-facing name amp-story-player
  • Initial styling for viewer before JS is loaded
  • Quiz
  • Displaying percentages for options
  • Animations for bar filling
  • Video
  • Investigated performance of video formats: MP4, WEBM (VP9)
  • Investigated bitrates to use
  • Prototyped using navigator.connection.downlink to determine throughput
  • Other
  • Removed 1px border that sometimes showed up on 3-panel desktop experience
  • Corrected initial position for inactive pages on 3-panel desktop experience to improve animation

Lessons learned

  • Test in Safari!

What's next

  • Viewer (amp-story-player)
  • Launch of single-story experience
  • Developer documentation and usage examples
  • Quiz
  • RTL for percentage animations
  • Resolve Safari bug where entrance animation for options is not triggered
  • Internationalization of (a), (b), (c), and (d) options
  • Accessibility review (e.g. roles on interactive options)
  • Documentation of next steps for validation
  • Video
  • Create prototype to test on different phones
All details on GitHub

Ads

Status Update Fri Jan 31 2020

What was accomplished

AMP Monetization Met with Kargo to understand their experiences with AMP.

AMPHTML ads Started refactor work needed for AMPHTML ads signing. Introducing new statefulness to amp-ad-exit

Story ads Launched Bed Bath & Beyond Fixed CTA button rendering bug in Firefox.

What is next

AMP Monetization Explore design for an AMP bridge for Kargo and other Celtra based creatives. Reach out directly to Celtra team. Explore support of new types of creatives.

AMPHTML ads Changes to A4A base implementation and introduce experiment for removing signing. Investigate a test issue relating to Firefox reported by Google.

Story Ads Discussion around how impression logic should be implemented (web vs native options)

All details on GitHub

Infrastructure

Status Update Tue Jan 21 2020

What we did

  • Updated Release documentation
  • Forbid iframe-ing experiments page to prevent clickjacking
  • Release tagging works
  • Updated / unflaked e2e tests with new selenium version
  • Enforced JSDoc-based access controls in source code
  • New --core_runtime_only flag for gulp {build|watch|dist}
  • Published Infra doc for OpenJS

What's next

  • Interactive visualization for release schedule/cadence
  • Announce / monitor LTS launch
  • Rename AMP_CANARY cookie to __Host-AMP_OPT_IN
  • Automate deployment of internal GitHub apps
  • Refactor gulp changelog
  • Integrate perf tests into CI
  • Fix Sauce Labs disconnects (with help from Karma & Sauce)
All details on GitHub

Ads

Status Update Tue Jan 21 2020

What was accomplished

AMP Monetization - Done security review removing signing requirement for AMPHTML ads.

AMPHTML ads - Exploring opportunities for AMPHTML ads to protect user privacy

Story ads - Supporting Adsense team for GDN launch - New "mobile like" view for fullscreen desktop - Fixed impression tracking logic

What is next

AMP Monetization - Implementation of removing signing

AMPHTML ads - Building more format examples of AMPHTML ads

Story Ads - Continue working towards launch of GDN creatives - Discussion around impression logic / parity with existing standards for other story products.

All details on GitHub

Infrastructure

Status Update Mon Jan 06 2020

What we did

  • LTS: Updated validator and other parts to support new release type
  • GH releases are now auto-published
  • WIP: Updates to release schedule
  • New cherry picking section of release dashboard
  • Network logging for E2E tests
  • Added coverage instrumentation for unminified builds

What's next

  • Wrap up docs / comms for LTS
  • Improve changelog creation
  • Network logging API for E2E tests
  • Measure code coverage during integration tests
All details on GitHub

Infrastructure

Status Update Mon Dec 09 2019

What we did

  • Release names: stable, beta, experimental, nightly, lts
  • Design reviews for nightly and lts
  • Opt-in cookie for arbitrary RTVs
  • Fixed ~5k unit / integration tests that were using global sandbox
  • Added support for checking bundle-size of all JS files
  • Legacy bluebird promise cleanup

What's next

  • Deploy automated release tagger
  • More work on LTS and nightly releases
  • Validator changes to recognize LTS releases
  • Network logging for E2E tests
  • Enforce bundle-size check for JS files that opt in
All details on GitHub

Ads

Status Update Mon Dec 09 2019

What was accomplished

AMP Monetization - Brainstorming a re-design of amp-ad - Further amp-link-rewriter design discussion with Amazon OneTag.

AMPHTML ads - Security review WIP for removing signing requirement for AMPHTML ads. - Module-no-module for inabox WIP - Some more refactoring work that was left for inabox-lite WIP - Fixed a regression in "iframe transport"

Story ads - Helping more advertisers and publishers launch

What is next

AMP Monetization - Re-design of amp-ad

AMPHTML ads - Design review: Removing signing requirement for AMPHTML ads - Module-no-module for inabox - Complete the refactoring work that was left for inabox-lite

All details on GitHub

Infrastructure

Status Update Mon Nov 11 2019

What we did

  • OWNERS syntax check via API
  • Eliminating use of global sinon
  • Fixed breaks due to new Node LTS
  • Owners bot GCE → GAE (with tree, teams, and syntax guide)
  • Test infra for amp-github-apps
  • Fixed npm security vulnerabilities
  • Premium Travis VMs are live

What's next

  • Automate GitHub release creation and improve content
  • Auto-label PRs on release
  • Track bundle-size for extensions
  • Automate node LTS upgrades
  • Upgrade sinon and eliminate the use of global sandbox

All details on GitHub

Ads

Status Update Mon Nov 11 2019

What was accomplished

AMPHTML ads - inabox-lite is fully launched! with ~26% size reduction in total. - Started a discussion around removing signing requirement for AMPHTML ads.

Misc - New vendor integration guidelines on amp.dev. - Worked with Amazon OneTag & Apester media to finalize their AMP integration designs

Story ads - Ramping up more publishers and advertisers. Two new advertisers launched. - Remove CTA restriction

What is next

AMPHTML ads - Module-no-module for inabox - Complete some refactoring that was left for inabox-lite

Story ads - Helping more advertisers and publishers launch - Testing serving auto-generated GDN demand

All details on GitHub

Infrastructure

Status Update Mon Oct 28 2019

What we did

  • New build-pipeline check for unknown dependencies
  • Automating GitHub release publication (tracking release CLs)
  • Owners Bot migrated to AppEngine w/ virtual repository
  • Public-facing owners tree & status pages
  • New style check for non-JS files (OWNERS, docs): gulp prettify
  • Lots of small documentation fixes

What's next

  • Make owners bot repo agnostic
  • Travis check for OWNERS syntax
  • First steps on monthly release channels
  • Automate GitHub release creation and improve content
  • Track bundle-size for extensions
  • Adopt new bundle-size checker
  • Un-break amphtml-validator for users of older Node versions
  • Automate node upgrades across all package.json files
All details on GitHub

Infrastructure

Status Update Mon Oct 14 2019

What we did

  • Owners check is now blocking
  • Enabled automatic reviewer assignment
  • Added bundle-size support for arbitrary binaries / extensions
  • Reorganized build-system and repo root directory for better code ownership boundaries
  • Investigated ways to check owners file changes during CI
  • Presented 2019 Infra highlights during contributor summit

What's next

  • Deploy bundle-size checks for a few non-v0.js files
  • Investigate / fix missing PR-deploy button for some folks
  • Add a CI check for OWNERS file formatting
  • Follow up on open requests from contributor summit
All details on GitHub

Infrastructure

Status Update Tue Sep 17 2019

What we did

  • Deployed owners bot after design review
  • Owners is now a non-blocking check on Github
  • Enabled brotli size tracking via bundle-size bot (not yet default)
  • Lazy-build is default gulp mode (to disable: --eager_build)
  • Re-wrote dev server as an in-process server
  • Sauce Labs start / stop scripts supported on Linux and Mac OS
  • Fixed bug that caused frequent Travis cache corruption

What's next

  • Owners bot: always / never notify owners, auto-assign reviewers, syntax checks
  • Improve Travis greenness
  • Release tooling (“is my PR in production?”)
All details on GitHub

Infrastructure

Status Update Mon Jul 08 2019

Release quality

  • Initial version of PR deploy bot
  • Fixed amp-date-picker bug, wrote post mortem
  • Enabled dormant conformance checks for runtime code

Developer experience

  • Migrated CJS runtime deps to ESM
  • Babel transforms for multipass
  • Fixed babel global transform config
  • Fixed gulp watch bug (cancel on compilation error)

What's next

  • More work on PR deploy bot
  • Re-deploy owners bot with new reviewers assignment algorithm
  • Generate externs for all typedefs found in 3p/ads/bind
All details on GitHub

Infrastructure

Status Update Mon Jun 24 2019

Release quality

  • Fixed saucelabs safari 12.1 bug
  • Run integration tests on IE 11

Developer experience

  • Refactor of gulp test into gulp unit|integration|a4a
  • WIP: Bot to deploy in-flight PR code for demo / testing (on-demand)
  • Refactored / sped up unminified builds by 15%

What's next

  • Redeploy owners bot with new reviewers assignment algorithm
  • Generate externs for all typedefs found in 3p/ads/bind
All details on GitHub

Infrastructure

Status Update Tue May 28 2019

Release quality

  • E2E tests are now a blocking check
    • Viewer / Shadow, Chrome / FF
  • Integration tests on minified runtime
  • Unit tests on Chrome / FF
  • GH status:
    • Code coverage (non-blocking)
    • Failing tests (blocking)

Developer experience

  • Prettier adoption complete!
  • Closure compiler at v20190513
  • Travis CI build / test optimizations
  • Local testing: gulp pr-check

What's next

  • Enforce code coverage for lines changed by PRs
  • Move owners code to ampproject repo, reuse common libs
All details on GitHub

Infrastructure

Status Update Mon May 13 2019

What was accomplished

Release quality

  • Progress on fixing failing E2E tests
  • IE-11 integration tests are back in blocking mode (tests must opt in)

Developer experience

  • Added babel transforms for version numbers and AMP.extension
  • Single pass now uses compiler.jar with zero custom passes
  • Refactored compilation code
  • WIP: PR checks for minified code

What's next

  • PR statuses for integration tests
  • Make e2e tests a blocking check
  • Investigate hermetic AMP tests
  • Prettier implementation
All details on GitHub

Infrastructure

Status Update Mon Apr 29 2019

What was accomplished

  • Closure compiler 2018 → 2019
  • gulp dist 4x faster
  • gulp dist --single_pass 1.5x faster
  • gulp nailgun-start for local dev
  • Visual tests are hermetic
    • Snapshots now show errors
  • Sauce infra issues sorted out

What's next

  • Update GH branch protection rules to amphtml/reviewers
  • E2E tests on Firefox
  • Iron out more CI issues
All details on GitHub

Infrastructure

Status Update Mon Apr 01 2019

What was accomplished

  • GH test status bot is now live
  • Created Windows dev VM to run integration tests locally
  • Several fixes of typedefs / casts
  • WIP: Closure compiler upgrade

What's next

  • Run E2E tests as part of CI
  • Review, test, and merge closure compiler upgrade
  • Upgrade owners bot to handle “reviewers” (vs. “owners”)
All details on GitHub

Infrastructure

Status Update Mon Mar 18 2019

What was accomplished

  • Manual test planning under way
  • Owners bot can now retrieve teams information
  • Progress on detecting bad cast locations that block single-pass
  • Progress on elevating test results to PR statuses

What's next

  • Submit PR for test statuses
  • Fix bad cast locations that affect single pass correctness
All details on GitHub

Infrastructure

Status Update Mon Mar 04 2019

What was accomplished

  • Deployed AMP Owners bot
    • Fixed permissions, logging
    • Added retry mechanism
    • Enabled in non-blocking mode
  • Fixes for build matrix / PR check
  • Solved race in amp-foo-latest.js
  • Faster booting xenial Travis VMs
  • Updated / cleaned up package.json
  • Investigated use of prettier

What's next

  • Move test results to status check
  • Auto-assignment for owner reviews
  • Add a way to re-run all checks on Travis
  • Differentiate between reviewers and owners (per new guidelines)
  • Add IE 11 testing to CI builds
All details on GitHub

Infrastructure

Status Update Tue Feb 19 2019

What was accomplished

  • New travis build matrix
  • Doubled Travis VM allocation
  • Fixits for Visual diff (per-test subdomains, new verification API)
  • Unified testing port number logic
  • Updates to owners bot (Probot)

What's next

  • Move test results to PR status checks
  • Implement (optional) retry mechanism for owners check
  • Build matrix optimizations
  • Expose new release automation
All details on GitHub

Infrastructure

Status Update Mon Feb 04 2019

What was accomplished

  • ~1 dozen new tests
  • E2e tests ready to be added to Travis runs
  • Got more Travis VMs
  • RC build is now live for versioned requests
  • Implemented configuration diffs for release automation

What's next

  • Parallelize / optimize Travis CI (separate build from tests)
  • Deploy new version of bundle-size bot
  • Direct traffic to RC for unversioned requests
All details on GitHub

Infrastructure

Status Update Tue Jan 22 2019

What was accomplished

  • Selenium-based end-to-end tests now available via gulp e2e
  • Added rc-channel opt-in flag
  • Submitted code to divert 0.5% AMP traffic to the RC build
  • bundle-size is now a required check

What's next

  • Build / serve before e2e tests
  • Run e2e tests on Travis
  • Make owners bot check blocking
  • Remove hard bundle size check
All details on GitHub