#BlackLivesMatter
Do you build things with AMP? Fill out the new AMP Developer Survey!
AMP

La feuille de route du projet AMP

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

Runtime

Status Update Mon Aug 03 2020

What was accomplished

  • amp-img SSR work is almost done, cleaning up the code now before creating CL
  • Bento Reviews for Context and Styles
  • TC39: logical assignment operators will be in ES2021
  • Merged protocol-adapters for amp-list, amp-script[nodom] (https://github.com/ampproject/amphtml/pull/29329, https://github.com/ampproject/amphtml/pull/29541)
  • "nodom" binary for worker-dom (https://github.com/ampproject/worker-dom/pull/882)
  • Investigating 1% ads query regression in intersect-resources and created another candidate fix

Lessons learned

  • For changes that may affect ads, start minimal and incrementally diverge instead of starting with a big refactor and paring down
All details on GitHub

What's next

  • Auto-envelope pattern for Bento binaries
  • Fix more TODOs with amp-img SSR
  • Support <link rel=preload imagesrcset>
  • Support auto srcset generation for SSR'd <img>
  • Cleanup code paths
  • Research inputmask bug to see if related to the strict experiment
  • Follow up on removeCalcTask & content prioritization. CSI effects seemed negligible.
  • Documentation for new amp-list/amps-script features and launch experiment: ampproject/amphtml#29603
  • Implement Bento JSS Proposal
  • Fixit:
  • Clean up "layoutbox-invalidate-on-scroll" experiment ampproject/amphtml#25203
  • amp-bind: remove the need for treewalking ampproject/amphtml#27590
  • Fixit:
  • <amp-script> improve hash error: ampproject/amphtml#29614
  • <amp-script> validator extension bug: ampproject/amphtml#29457
  • Fixit: AMP.navigateTo
  • ampproject/amphtml#26248
  • ampproject/amphtml#24798
All details on GitHub

Stories

Status Update Mon Aug 03 2020

What was accomplished

  • UI Animations for quizzes/polls highlight on page navigation
  • Update polls/quizzes API endpoints (base64 encode URL, use component ID over page ID, use :vote method on POST request)
  • Category results page for multi-polls story
  • Fixing audio state propagation from story to story in a Player
  • Ability to navigate back using TalkBack
All details on GitHub

What's next

  • Percentage results page for multi-quizzes story
  • Moving interactive components to their own extension
  • Interactive components validation
  • Prompt gyroscope data access on iOS for amp-story-360
  • Player entry point: singleton preview
  • Player entry point: circular wrapping
  • Player API: proxy to getDocumentState/setDocumentState API
  • Restart active page advancement when swiping back to a Story (#28927)
  • Fix joint latency video metrics (#29105)
All details on GitHub

Analytics

Status Update Mon Aug 03 2020

What was accomplished

  • SESSION_ID: Decided to store to session storage and bypass the storage API as first step.
  • Analytics to temporary collect element width/height & viewport width/height at maximum intersect ratio (For debugging)
  • Consent UI to support dir=rtl
  • Disable promptUISrc from <amp-story-consent>
All details on GitHub

What's next

  • Benchmark delay of creating a web worker within a non origin iframe
  • More granular consent blocking on client side
All details on GitHub

Ads

Status Update Mon Aug 03 2020

What was accomplished

AMP Monetization - Removing AMPHTML ads signing WIP. More PRs merged. - Shared sidekick demo with kargo. Unblocked their engineering work. - Started the ampdoc-fie experiment. - Get amp-auto-ads work with amp-access

Story ads - Reporting ad experiments via amp-analytics (PR pending)

All details on GitHub

What is next

AMP Monetization - Removing AMPHTML ads signing - SideKick creative - Launch ampdoc-fie

All details on GitHub

Performance

Status Update Mon Aug 03 2020

What was accomplished

  • Merged ads experiment id's for module/nomodule
  • runtime type meta is temporarily inserted for module/nomodule ads experiments detection (ex. <meta name="runtime-type" value="${value}">
  • @xiexr151e added gulp coverage-map task. allows to evaluate code not ran during initialization

Lessons Learned

All details on GitHub

What's Next

  • evaluate gulp unit testing to align with module build
  • fixes/update to gulp coverage-map
All details on GitHub

Bento

Status Update Mon Aug 03 2020

What was accomplished

  • Started Video Player implementation
  • Started work on advanced carousel components: inline-gallery and streaming-gallery
  • Context API: subscriber and component APIs in review
  • CSS design ready based on JSS framework
  • Model for container wrappers based on the contain CSS as an alternative to AMP's layouts.
  • amp-img SSR work in progress.
  • Main social-share redesign complete with more advanced customization.
  • New embedding mode with non-empty passthrough when a shadow DOM is given a slot only when children are available. This allows us to support text nodes as well as elements as children.
  • Renewed focus on unit and integration testing of both: Preact and AMP elements.

Lessons learned

  • Our carousel ecosystem is very advanced.
  • How useful display:none in React world?
All details on GitHub

What's next

  • Start using Context API
  • Storybook: Bento mode that does not reload the whole AMP page.
  • Continued progress on advanced carousels
  • Continued progress on video players
  • Prototype auto-enveloped extensions that can run without v0.js
  • CSS implementation for components and shadow DOM.
All details on GitHub

User Interface & Accessibility

Status Update Fri Jul 31 2020

What was accomplished

Becca Worked on documents (I2I and I2D) for amp-youtube and amp-img

Kevin Bento implemented a new way of handling children, how to style the individual social share components

Caroline Working on inline gallery features for amp-base-carousel, amp-base-carousel extension is live Allowlisted amp accordion actions in email, fixed template rendering bug for ssr code

Wassim Merged a PR to allowlist select menus Has a PR in review for supporting icon fonts in amp-next-page

Lessons learned

Becca Learned about the flow required for creating new major features in amp

Kevin How shadow group works and how children function in bento

Caroline Did a WFH physical health checkup, and learned you should take a standing break every hour

All details on GitHub

What's next

Becca Design review for Amp-img and amp-youtube

Kevin Working on tests for amp-social-share

Caroline Amp-base-carousel, amp-inline-gallery, accessibility changes

Wassim Fixing as many amp-next-page issues as possible Completing transition elements

All details on GitHub

Runtime

Status Update Mon Jul 20 2020

What was accomplished

  • Merged PRs for validator to support amp-img SSR
  • Code reviews for Bento, including Context APIs in AMP code
  • Merged experiment to remove calcTaskTimeout (https://github.com/ampproject/amphtml/pull/28453/commits)
  • Merged server experiment for compiling v0/extensions in strict mode (https://github.com/ampproject/amphtml/pull/28793)
  • Merged cross-document navigation for AMP.goBack (https://github.com/ampproject/amphtml/pull/26585)
  • Fixed too-small rootMargin vs. loadRect in “intersect-resources”

Lessons learned

  • Kittens are cute
All details on GitHub

What's next

  • Finishing amp-img SSR cache transforms
  • Prototyping Bento "auto-envelope" pattern to support components in/out of AMP runtime
  • Wrap up in-progress worker-dom feature work
  • Lite binary for worker-dom (https://github.com/ampproject/worker-dom/pull/882)
  • Protocol adapters (https://github.com/ampproject/amphtml/pull/29329)
  • Continue investigating the ~1% regression in ad queries for "intersect-resources"
All details on GitHub

Stories

Status Update Mon Jul 20 2020

What was accomplished

  • Viewer
  • Show(), go(), play/pause(), mute/unmute(), add() callbacks
  • Exposed a navigation event
  • Bug fixes
  • Adding visual tests
  • New github dashboard for tracking player-related tasks
  • "Interactions" (formerly quizzes & polls)
  • Results page implementation
  • Demos and documentation of API
  • Emoji burst animation
  • Videos
  • Two fixes for videos on first story page, and simplifying video playback code to reduce surface for bugs
  • Custom adaptive bitrate implementation MVP
  • Other
  • 360 images launch with programmatic animations
All details on GitHub

What's next

  • Viewer
  • Preview mode for amp-story-player
  • Starting implementation work on entry points
  • Wrap to first story after finishing last one
  • Merging amp-story-player AMP extension
  • "Interactions" (formerly quizzes & polls
  • Additional demos and documentation
  • Emoji validation for emoji confetti
  • Other
  • 360 component to support video and gyroscope
  • Animation preset enhancements
All details on GitHub

Analytics

Status Update Mon Jul 20 2020

What was accomplished

  • Update <amp-story-consent> to support config in new format
  • <amp-consent> doc improvement (metaData, TCF support, promptUISrc, inline postPromptUI)
  • <amp-consent> UI lightbox mode when initial height is greater than 80vh. (#29204)
  • Decided to keep analytics service running and maintain states when the ampdoc becomes inactive. (This means the lower level timer trigger will continue to fire unless there's a stopSpec)
  • All 3rd background cross origin iframe usage in AMP will NOT be allowed w/o special approval. (#28471)
All details on GitHub

What's next

  • SESSION_ID to support a session id that expires after a defined time
  • Support tracking visibility of non AMP elements
All details on GitHub

Ads

Status Update Mon Jul 20 2020

What was accomplished

AMP Monetization - Removing AMPHTML ads signing WIP. PRs merged for head validation & ad rendering https://github.com/ampproject/amphtml/issues/27189 - Working a prototype of SideKick creative. Set up joint goals with Kargo.

Story Ads - Onboarded more advertisers with story ad creatives.

Releases - Caught 2 regressions in RC and prevented them from entering prod. - Enhancing inabox auto releaser to use nightly build.

All details on GitHub

What is next

AMP Monetization - Removing AMPHTML ads signing - SideKick creative task breakdown and implementation

All details on GitHub

Performance

Status Update Mon Jul 20 2020

What was accomplished

  • Add a way for the module/nomodule rollout to be able to identify its control branch. This gives us a path to report to the ads team
  • Did some preliminary work on reducing v0.js in the upcoming SxG build by enabling the experiment on fixed layer code

Lessons Learned

All details on GitHub

What's Next

  • Add reporting for rollout of module/nomodule as an ads experiment on client side
All details on GitHub

Bento

Status Update Mon Jul 20 2020

What was accomplished

  • Context API introduced to AMP for discovery phase, value propagation in progress
  • Using externs to define types for props, allowing direct prop access and destructuring in components
  • amp-social-share:
    • update experiment name
    • design documentation
    • configurable color and backgroundColor for preconfigured providers
  • Video players design
  • amp-base-carousel:
    • Initial Preact implementation with looping and smooth scrolling
    • AMP layer and default arrow UI in progress
All details on GitHub

What's next

  • Continued progress on Context API
  • Add passthrough-non-empty for amp-social-share
  • Continued progress on Carousel
  • Prototype video players
  • Prototype extension "auto-envelope" for Bento and AMP modes
All details on GitHub

User Interface & Accessibility

Status Update Fri Jul 17 2020

What was accomplished

Alan Completed design of Video components for Bento and reviewed with Bento team

Caroline Implemented and merged Bento Carousel features including: smooth scrolling and looping Amp version of component and default arrows feature currently in review

Kevin Merged moving of handling iOS target links from AMP to Preact for Social-Share Discussed approach for color of social-share-icons and handling of children with Bento team

Wassim Reviewed Whatsapp implementation Transition out of UI team in progress In process of looking for new host for intern

Lessons learned

All details on GitHub

What's next

Alan Begin implementation of video components

Caroline Typedefs for existing bento components Continue on Carousel

Kevin Work on passthrough-non-empty children handling for bento and other Social Share features

All details on GitHub

User Interface & Accessibility

Status Update Mon Jul 06 2020

What was accomplished

OpenJS World Summit

Bento

  • Foundational Preact prototype for amp-base-carousel
  • Documenting Bento component design principles
All details on GitHub

Lessons learned

What's next

  • Kris goes on Paternity leave again.

Bento

  • Continued progress on amp-base-carousel and friends
  • Changes in review for amp-social-share open items
  • Documentation of amp-social-share
All details on GitHub

Runtime

Status Update Mon Jul 06 2020

What was accomplished

Lessons learned

All details on GitHub

Analytics

Status Update Mon Jul 06 2020

What was accomplished

  • Fixed amp-analytics FID, LCP collection
  • Investigated and Fixed IntersectionObserver polyfill issue in inabox
  • Fixed scroll trigger issue
  • Expanded <amp-story-consent> config support
All details on GitHub

What's next

  • Pause analytics trigger in <amp-next-page>
All details on GitHub

Performance

Status Update Mon Jul 06 2020

What was accomplished

  • Merged CSS insert logic for tests https://github.com/ampproject/amphtml/pull/28972
  • OpenJS/Web.dev conferences
  • Wrapped up server side cache transformation for inline amp-analytics vendor config
  • Fixed Transpilation of WorkerDOM impacting Element.classList.
  • Moved AMP to Graal Native Closure Compiler, increasing concurrency and dropping developer build times by ~2.5x.

Lessons Learned

  • Travis, Github, and CircleCI all use low core count machines for Continuous Integration.
All details on GitHub

What's Next

  • turn on transformers for all integration tests. unblock failing critical tests by skipping and assigning to individual working groups.
  • Runtime changes for using inlined amp-analytics vendor config
  • Efficiency improvements for Closure Compilation
  • Kris goes on paternity leave.
All details on GitHub

User Interface & Accessibility

Status Update Mon Jun 22 2020

What was accomplished

  • Final changes in for <amp-social-share> in Bento

  • amp-img documentation for <img> cache transform.

  • amp-youtube ad configuration parameter.

  • amp-next-page infinite loop issue

  • Team-wide dogfooding exercise

  • Team-wide Fix-it

Lessons learned

  • A lot of stale issues
  • Lots of setbacks dogfooding!
All details on GitHub

What's next

  • OpenJS World summit next week!
  • I2I amp-youtube ad configuration parameter.
  • Launch Storybook AMP addon
  • Planning priorities for rest of the year.
All details on GitHub

Runtime

Status Update Mon Jun 22 2020

What was accomplished

Lessons learned

All details on GitHub

Stories

Status Update Mon Jun 22 2020

What was accomplished

  • Started work on results-page components and multi-option polls
  • Interactive poll animations (PR pending) https://github.com/ampproject/amphtml/pull/28931
  • Fixit week: 25 bugs closed
  • Accessibility fixes (https://github.com/ampproject/amphtml/pull/28860, https://github.com/ampproject/amphtml/pull/28780, https://github.com/ampproject/amphtml/issues/28408, https://github.com/ampproject/amphtml/issues/28294)
  • complete docs regarding analytics in STAMP
  • audio bug fixes
  • increased tap target for swipe up
  • tooltip dark-theme
  • fix sandbox flag bug in player
  • Fixed bugs related to video playback and media pool (on story replay)
  • 360 videos and images implementation ongoing, with two projections
  • Removed amp-story v0.1 (~2 years after deprecation 😅 )
All details on GitHub

What's next

  • Planning 360 media component
  • Figure out solutions to improve the audio UX
  • Ongoing video performance work (hoping to get bitrate selection prototypes)
  • implement show() callback in player
  • expose swipe down to close handlers for players
  • Starting to design/implement UI primitives / API methods for the story player
  • Demos, documentation, and tooling for fixed aspect ratio grid layers
All details on GitHub

Analytics

Status Update Mon Jun 22 2020

What was accomplished

  • Fixit week 9 closed issues
  • Consent Metadata PRs landed. Introduced getConsentMetadata to get TCF v2 related consent meta data including consent string type, gdprApplies and additional consent string info.
  • Consent UI Lightbox design
  • Enabled data-vars attribute for analytics events by default
  • Further expanded the consent info storage limit to 1200 in chars
  • Add expireCache support to amp-consent reprompt action
  • Deprecated and clean up the analytics mApp support.
All details on GitHub

What's next

  • OpenJS World Summit
  • Consent UI lightbox mode API Design
  • InOb Polyfill usage in analytics investigation
  • Expand iframe-transport feature to all analytics vendors (still under discussion)
All details on GitHub

Ads

Status Update Mon Jun 22 2020

What was accomplished

FixIt week - Fixed/closed 11 issues

AMP Monetization - Removing AMPHTML ads signing WIP. Introduced an experiment flag and diversion point in code. Implemented response stream writer. - Launched then reverted removing centering css on amp-ad. Fixed an issue and rolled forward. - Launched JSON targeting expansion experiment to 1% - Launched an experiment to add a padding to sticky ad for devices ad interaction may be impaired (e.g. rounded edge of iPhone X)

Story ads - Now hiding share and volume icons (if ad has no sound) when the ad is showing. - Fixed infinite loop edge case.

Q3 OKR planning

All details on GitHub

What is next

OpenJS World & Collab summit - The whole wg-ads working group will be attending. - @calebcordry is going to give a talk about the "removing AMPHTML ads signing" work.

AMP Monetization - Work with @dvoytenko to launch the ampdoc-fie experiment - Removing AMPHTML ads signing - Create a reference implementation of Safeframe-based new creative format

Story Ads - Still working to ramp up GDN demand. - Early discussions of experiment framework so we can iterate on optimizations.

All details on GitHub

Performance

Status Update Mon Jun 22 2020

What was accomplished

  • integration tests html fixtures are now passed through a no op pipeline and outputted to test-bin at the root of the project https://github.com/ampproject/amphtml/pull/28864
  • @xiexr151e joined the AMP Performance team as an intern!
  • Removed Single Pass Pipeline.
  • Simplify Logic for rtv in client code.
  • Conformance checks for allowlist, denylist, and legacy enforced usage.
  • Remove Share Tracking

Lessons Learned

  • Github Actions works well for generating native binaries using Graal.
All details on GitHub

What's Next

  • add css append postHTML transformer https://github.com/ampproject/amphtml/pull/28972
  • turn on the transforms for fixtures when integration tests are ran for esm mode
  • Enable Custom AMP Runner pre-built native Closure Compiler, ~3x speedup in compilation.
  • Inline amp-analytics vendor config with cache transform (instead of fetching from server)
All details on GitHub

Bento

Status Update Mon Jun 22 2020

What was accomplished

  • Teams were off on FixIt. So limited progress.
  • Intersection observer polyfill fully launched. But some research regarding possibly duplicate firings.
All details on GitHub

What's next

  • Start video work
  • More progress on carousels
  • More progress on context propagation
  • More progress on social share
All details on GitHub

User Interface & Accessibility

Status Update Mon Jun 08 2020

What was Accomplished

  • Alan - Workaround for virtual keyboards for datepickers inside lightboxes
  • Caroline - Added Bento support for intrinsic and responsive layout, Sizer elements now have a spot to go into shadow DOM when relevant
  • Kevin - Completed another iteration on Social-Share, removing bindings from Preact component
  • Naina - Completed recording a talk for JS Conference
  • Rebecca - Complete amp-img bug (errors were being thrown from event helper in runtime), Draft PR in progress for next bug

Lessons Learned

  • Caroline - amp-carousel:0.2 does not directly rely on amp-base-carousel
  • Kevin - Empty commits can be used to kickoff failed travis build on github, Learned more about Closure compiler and type annotations
  • Rebecca - More experience with xcode, how to edit host file, how to use travis, how to read pantheon, Learned that you can restart only the broken part of a travis build
All details on GitHub

What's Next

  • All - Fixit week!
  • Alan - Video in Bento, Amp story animation docs
  • Caroline - Prototyping carousel for bento
  • Kevin - Create a design doc for social share to document the various designs and the tradeoffs for them
  • Naina - Recording more talks (including Amp contributor summit talk)
All details on GitHub

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
All details on GitHub

UX 🖥️

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

Other

  • Validating amp-story-animation & docs

Lessons learned

  • return type of internal objects should be a struct
  • static methods inside component functions 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

Infrastructure

Status Update Tue May 26 2020

What was accomplished

  • Deployed Error Monitor UI (in beta)
  • gulp tasks can now programmatically build runtime during tests (#28326)
  • Established grouping & reviewer assignment for Renovate PRs (#28322)
  • Investigated / debugged disconnection failures due to Sauce Labs (#28343)
  • Added performance tests to Travis CI (#28148)
All details on GitHub

What's next

  • Move generation of release binaries to open source via gulp release
  • Automatically create issues for commonly seen runtime errors
  • Add a presubmit check for renovate configuration changes
  • Test / deploy new version of karma-sauce-launcher
All details on GitHub

Runtime

Status Update Tue May 26 2020

Recap

Justin
 * Opened PR for deferring buildCallback
 * Doesn't affect LCP as much as we thought, maybe it'll help FID
 * PR Reviews


Jake
 * Submitted a fix so that we don’t send documentHeight until it is ready. Potentially two bugs with one stone: (b/154603596, b/143078110).
 * In-progress
 * New metrics eer/ser (https://github.com/ampproject/amphtml/pull/28401)
 * Improved e2e viewer tests (https://github.com/ampproject/amphtml/pull/28531).
 * Adding runtime pages to the gulp performance (https://github.com/ampproject/amphtml/pull/28503).
 * Protocol adapters worker-dom implementation (https://github.com/ampproject/worker-dom/pull/850).


Will
 * intersect-resources
 * Candidate fix for idle render merged, pending ads metrics


Learned

  • Use DCL to normalize metrics like LCP
 

All details on GitHub

Next

Justin
 * Finish buildCallback PR
 * Finally write doc about WorkerDOM/amp-bind in same-origin iframe (with sync messaging)
 * Look into removing Owners System, replace with InOb polyfill


Jake
 * IE11 Minimum support explorations
 * Continue many in-progress PRs with the goal of eventually optimizing
 * Load rect
 * Resource loading prioritization


Will
 * intersect-resources
 * Prod rollout and manual QA test plan

All details on GitHub

Stories

Status Update Tue May 26 2020

What was accomplished

  • a11y bugs related to TalkBack
  • Animations for amp-story-reaction
  • Gyroscope experimentation
  • Binary polls
  • Launched API for programmatic control of the amp-story-player
  • Fixed audio bugs
  • Support remote attachments in Safari in the amp-story-player
All details on GitHub

What's next

  • Continue launching APIs for the amp-story-player
  • Continue work on binary poll
  • Documentation pass on analytics
All details on GitHub

Analytics

Status Update Tue May 26 2020

What was accomplished

  • Turned on analytics-chunks experiment in canary.
  • Expanded consent string size limit to 1kb
  • Decided to introduce Consent UI new lightbox mode docs
  • Decided NOT to proceed with the Standalone analytics solution for AMPHTML Ad for now.
  • Decided keep the existing linker coverage. Will NOT auto launch linker to all browsers for now.
All details on GitHub

What's next

  • Consent metadata & Consent Vendor API redesign
  • Consent UI lightbox mode
  • Next step on granular consent support
  • Grouping target elements for CustomEvent & StoryEvent Issue
All details on GitHub

Ads

Status Update Tue May 26 2020

What was accomplished

AMP Monetization - Design review done for the new proposed sticky ads format (SideKick ads) - FIE ads chunking in experiment

Story ads - GDN ads ramping up slowly - Some impact to metrics with latest chrome release

All details on GitHub

What is next

AMP Monetization - Resume no-signing work - Finalize UX decisions and prototype SideKick ads

AMP Ad - Launch removing centering css on amp-ad - Launch chunking on ad component

Story Ads - Reviewing support roadmap with partner ads teams - Increase alpha size to more pubs

All details on GitHub

Performance

Status Update Tue May 26 2020

What was accomplished

  • add debug flag to gulp integration. This will allow developers to add "debugger" statements as well as setting breakpoints as it auto opens devtools during the integration run (only works in non headless mode)
  • Cleaned up FixedLayer issues and ready to merge and start experiment

Lessons Learned

All details on GitHub

What's Next

  • add HTML transformer to integration tests (part of making integration tests pass for --esm)
  • clean up and make AmpCodingConvention more generalized as part of proposal for submission to Closure Compiler team
  • Inline amp-ad config on Google AMP cache
  • Prepare for Performance Team intern!
All details on GitHub

Bento

Status Update Tue May 26 2020

What was accomplished

  • IntersectionObserver polyfill goes live this week. But it can't be yet relied on 100% until inabox launch happens.
  • amp-selector and amp-fit-text are in.
  • fixed long-standing layout bugs for text content and unupgraded elements.
  • layout=responsive support in Bento
  • amp-social-share: working on a better boundary between the component and AMP.
  • Work started on the context propagation design
  • Aspect-ratio CSS: functional in the Chrome Dev. Looking for cross-browser solutions.

Lessons learned

  • At least in case of amp-fit-text, there are significant improvements to the Web Component with the new model both in terms of functionality and UX. So there are many improvement opportunities over the current state.
All details on GitHub

What's next

  • amp-carousel
  • Additional code-style improvements are on the way, such as unquoted props support.
  • Storybook addon for AMP is being released as a separate package.
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

All details on GitHub

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?

All details on GitHub

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

  • amp-story-animation launched
  • 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).
All details on GitHub

What's next

  • Implementation of animations for amp-story-reaction.
  • Launch API for programmatic control of the amp-story-player.
  • Working through embedded components
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.
All details on GitHub

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.

All details on GitHub

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
All details on GitHub

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.
All details on GitHub

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

All details on GitHub

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

Runtime

Status Update Mon Apr 27 2020

Recap

  • Justin

    • Fixed CEv1 in IE 11, again

    • Fixed integration test in IE11, added simple amp-img test

    • Opened PR to use localName/tagName based on whether using uppercase/lowercase

    • Quick Promise.resolve() transform to share instance

    • Banning newer ES features, removingPromise.p.finally use

  • Jake

    • Mauve related

      • Removed force option from toggleLoading. Afterwards: fixed bugs it caused (gh/27508, gh/27905)

      • Removed unnecessary measures from the toggleLoading calls in hide() and the video-player (gh/27730, gh/27654, gh/27760, )

    • Other

      • Implemented draft of protocol adapter support in worker-dom (gh/worker-dom/850)

      • Found/fixed an iOS bug where we were missing a needed measure (gh/27729)

      • amp-script: improved illegal mutation messaging (gh/27834)

      • Added [data-tweetid] to the validator (gh/27787)

  • Will

    • Finished IntersectionObserver test plan, fixed a few more edge cases, and enabled in canary (4/28)

    • Wrapped up some email-related tasks in amp-list

    • Found documentHeight/premature remeasure bug


Learned

  • We need an integration test for documentHeight for email (do we have any for other viewer messages?)

  • Closure's Conformance config won't ban prototype accesses with BANNED_NAME

All details on GitHub

Next

  • Justin

    • Finish connectedCallback PR

      • Reduce dom mutations

      • Defer buildCallback

  • Jake

    • Mauve

      • Fix documentHeight bug

      • Runtime perf test pages

    • Other

      • Protocol adapters

    • Discuss: intern/step

  • Will

    • Try out IntersectionObserver in canary
All details on GitHub

Stories

Status Update Mon Apr 27 2020

What was accomplished

  • Work to support <amp-animation> support within <amp-story>
  • Prototype of polls in stories
  • Work to support player
  • Manual QA test cases to improve reliability
  • Fix for bug where videos don't fall back to other sources if the first source failed to decode
All details on GitHub

What's next

  • Work to fix race conditions that prevent video playback
  • Expose JS APIs to programmatically control player
  • Start work to productionize polls in stories
All details on GitHub

Analytics

Status Update Mon Apr 27 2020

What was accomplished

  • amp-geo
  • Landed preset-us-ca support
  • self hosting amp-geo API supports subdivision
  • Performance improvement
  • Split analytics initialization into chunks. (need to run 'analytics-chunks' experiment with AMPHTML ads first)
  • Added analytics request handler to performance test to find potential delay on pageview delay
  • Created test pages array
  • Consent
  • Fix flaky e2e tests
  • Improved vendor facing docs
  • PRs on passing TCF required gdprApplies variable, and consent string type
  • Allowed fullScreen consent dialog when user open it via the postPromptUI button
All details on GitHub

What's next

  • Plan to launch Linker to all browsers (still under discussion)
  • AMP Consent TCF v2 related features support
  • Test and launch analytics-chunks experiment
  • Visibility trigger to support non-AMP element
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

All details on GitHub

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

Performance

Status Update Mon Apr 27 2020

What was accomplished

  • Mitigated RTV experiment issues
  • Write Mini explainer identifying resources that conflict between module/nomodule written to dist directory

Lessons Learned

All details on GitHub

What's Next

  • Turn on Integration tests for module build (carry over)
  • Update validator to support module/nomodule in origin
  • Start FixedLayer experiment
  • Open PR for https://github.com/ampproject/amphtml/issues/27770
All details on GitHub

Bento

Status Update Mon Apr 27 2020

What was accomplished

  1. IntersectionObserverPolyfill: code complete for AMP/shadow/bento modes. In 0.5% binary experiment.
  2. IntersectionObserverPolyfill for inabox: in review.
  3. Some disruption to the team for UI, Mauve, and animation/streams work streams. Trying to minimize disruption.
  4. Display locking: original trial launch work for SCS in review.
  5. Revisiting amp-social-share component: need to improve the code distribution between the React and Web components.
  6. Working on amp-selector and detached model for React/Web-component mapping.
  7. Performance research on DOM tree parent search for context propagation.

Lessons learned

  1. IntersectionObserverPolyfill: design review to follow.
  2. Storybooks very quickly demonstrates API problems and inconsistencies.
  3. Some major performance changes for DOM tree parent navigation observed comparing to the original measurements several years ago. To be published soon.
All details on GitHub

What's next

  1. IntersectionObserver: code complete and launching started for all modes.
  2. amp-social-share revisit
  3. Display-locking launch
  4. amp-selector
  5. React context support: start development work.
All details on GitHub

Runtime

Status Update Wed Apr 15 2020

What was accomplished

  • First PreactBaseElement was merged!
  • Minimal CEv1 Polyfill launched
  • Work on IntersectionObserver based Resources, now enabled in experimental build
  • Updated enabling development mode for amp-script
  • amp-state can now be the source for an amp-list
  • Using performance.now for metrics deltas
  • DomPurify is now much faster for pages that have multiple amp-mustache templates
  • Caching amp-access evaluations, for faster evaluations
  • Fixed sourcemaps, multiple times.
  • Fixed iOS scrolling issues
  • Removed remeasure from toggleLoading

Lessons learned

  • The venerable 2015 MBP is slowly showing its age…
  • Verify Resource prototypes on real pages
All details on GitHub

What's next

  • Delaying BaseElement construction until connectedCallback
  • Speeding/prioritizing connectedCallback/buildCallback
  • Protocol adapters for remote data
  • InOb verification and fixes
  • More Perf work!
All details on GitHub

User Interface & Accessibility

Status Update Mon Apr 13 2020

What was accomplished

  • Enabled prerendering on amp-social-share
  • Stabilized visual-diff tests:
  • amp-sidebar
  • amp-accordion
  • amp-list[layout=container] P0, rollback, post mortems
  • amp-selector:0.2 in Bento
  • Support for amp-animation in Stories
  • writing base tests to increase confidence
  • implementation in progress
  • Fixed navigator.share causing an exception on user cancel for amp-social-share
  • Fixed amp-social-share:0.2 assertion for type=system
  • amp-list[single-items] accessibility fix for role attribute
  • amp-recaptcha-input[global] attribute support
  • amp-form supporting encoding type attribute for form submission
  • gulp storybook tasks
  • amp-next-page url issue fix

Lessons learned

  • There are different levels of logging based on assertion types i.e. devAssert vs user().warn()
  • Write tests early and often -- when we don't have tests for a feature and other features are written on top of it that don't allow it to write tests, you have to refactor existing features before you can even add tests.
  • Some unit tests unnecessarily manipulate internal component state instead of waiting for lifecycle signals as natural cues (forcing buildCallback instead of waiting for whenBuilt)
All details on GitHub

What's next

  • amp-carousel:0.2 stability related bugs
  • Adding features to <amp-story-animation>: CSS extension support, viewport units and sequencing
  • React training
  • Storybook examples for a component
All details on GitHub

Runtime

Status Update Mon Apr 13 2020

Recap

  • Justin

    • TC39

    • Reviewed with Babel minifier transforms

    • Fixing sourcemaps (again)

    • Opened PR to delay constructing BaseElement construct until connectedCallback

  • Jake

    • optimization: removed remeasure from toggleLoading (gh/27482)

    • refactor: slightly cleaned up toggleLoading flow (gh/27527)

    • more toggleLoading changes in-flight

  • Will

    • IntersectionObserver testing & edge cases

    • Other stuff


Learned

  • Justin needs to get a new computer

All details on GitHub

Next

  • Justin

    • Land delaying BaseElement construction to connectedCallback

    • Make connectedCallback less expensive 

  • Jake

    • Complete inflight changes to toggleLoading

    • Create unit tests for loader.js and amp-loader.js
    • Protocol adapters

    • Performance

      • Skip amp-bind tree walking

      • Reduce cost of reparenting

      • Prioritize layout of in-viewport elements

  • Will

    • Finish testing & enable IntersectionObserver in canary
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)
All details on GitHub

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

Analytics

Status Update Mon Apr 13 2020

What was accomplished

  • Opened PR to for gulp performance task to test locally hosted websites
  • Fixed bug with analytics variable expansion handling null
  • Worked on TCF v2 gdprApplies field for CMPs and publishers in amp-consent
  • Allowed one tracking iframe per AMP document
  • Support US-CA detection in <amp-geo> via preset-us-ca
All details on GitHub

What's next

  • Continue adding support for gdprApplies
  • Land performance task PR
  • Merge inline and vendor config server side
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

All details on GitHub

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

Performance

Status Update Mon Apr 13 2020

What was accomplished

  • Design Doc for additional log/assert removals
  • use new error reporting endpoint for module build errors
  • Updated Google AMP Cache to upgrade amp-viewer-integration load priority
  • Remove ie-media-fix polyfill from ESM build

Lessons Learned

  • Take care of your mental health
All details on GitHub

What's Next

  • postHTML transforms in integration tests (carry over)
  • Start work on AMP optimizer and validator for module build changes. (carry over)
  • Wrap up testing and merge FixedLayer PR
  • Move amp-ad and amp-analytics components lazy loading to cache transform
All details on GitHub

Bento

Status Update Mon Apr 13 2020

What was accomplished

  1. Some disruption for Bento team due to performance work and stories work.
  2. Good progress on amp-selector. In review.
  3. amp-accordion renderSubtree version is in the launch pipeline.
  4. The universal IntersectionObserver in review. IntersectionObserver polyfill improvements are in the review with the w3c owners.
  5. Storybook testing is integrated into Bento.
  6. Slow, but some progress on the overall styling strategy for components, including structural (mandatory) and stylistic (optional) styles.

Lessons learned

  1. The state of stylesheets for components is still very not great on the Web today.
All details on GitHub

What's next

  1. Form integration for amp-selector
  2. React context propagation in DOM
  3. Video system component design/prototyping
  4. Continue progress on IntersectionObserver, amp-selector, renderSubtree launch, etc.
All details on GitHub

Outreach

Status Update Wed Apr 01 2020

What was accomplished

Events & Education

Cancelled all in person events for 2020 due to Covid-19:

  • AMP Conf
  • AMP Roadshows
  • AMP Contributor Summit

Study Jams were supposed to start running at the end of February. Live events have mostly been cancelled worldwide, but some areas (like Turkey) will be trying virtual Study Jams,

Tooling

  • Launched AMP Optimizer 2.0 (blog post)
    • Auto AMP component script import.
    • Auto add any missing mandatory AMP tags.
    • New Markdown support via tag to <amp-img> conversion.
    • CSP tag generation for inline amp-scripts.
    • Built-in HTML minification removing unneeded whitespace (this includes AMP specific optimizations such as removing whitespace from inline JSON and minifying inline amp-scripts using terser).
    • AMP server-side-rendering now supports the intrinsic layout. This means AMP Optimizer can remove the AMP boilerplate for pages using the intrinsic layout resulting in much faster load times.
    • Transformations run 40% faster by switching from parse5 to htmlparser2!
  • Published AMP Eleventy Plugin (no outreach yet)
  • Work on Next.js client-libary (launch postponed due to AMP Optimizer work)
  • New tool to download the AMP runtime for self-hosting

amp.dev

Documentation & Videos

  • Launched new bi-weekly video series: How to AMP (episode 1)
  • Re-written amp-bind docs (samples for all supported APIs)
  • Started work on new guide “how to create interactive AMP pages” covering all aspects of AMP interactivity from build-in basics to amp-script.
All details on GitHub

What's next

Events & Education

Create a strategy for how we can compensate the loss of in-person events with other outreach activities.

Framework & CMS integrations

  • Start work on AMP Start 2.0
    • Modularize templates into a component based approach
    • Publish components as HTML snippets and React components.
  • Promote the AMP Eleventy Plugin
    • Starter kits
    • Blog post
  • Launch Next.js client-libary
  • AMP Optimizer
    • Add support for media, sizes and heights to AMP SSR
    • Module / No-module support
    • Image optimization
    • Runtime self-hosting

amp.dev

  • Maybe: launch new getting started experience on amp.dev
  • Investigate moving from Grow.io to Eleventy
  • Publish translation and setup continuous translation workflow

Documentation & Videos

  • Publish and produce more How to AMP video (ideas & scripts welcome - ask @crystalonscript)
  • Publish “how to create interactive AMP pages” guide
  • Publish more amp-script documentation, guides and samples.
  • Building AMP Camp blog series
  • Work on component reference doc standardization
All details on GitHub

User Interface & Accessibility

Status Update Mon Mar 30 2020

What was accomplished

  • Documenting CSS cases where AMP cannot guarantee that the layout won't shift.
  • Removed layout shift by position prop on <amp-consent>.
  • <amp-app-banner> using AmpDoc API to get <meta> information on shadow roots, etc.
  • Reviewed 3p player component changes
  • Documentation for <amp-sidebar>, new amp.dev example merged
  • <amp-list> single-item a11y fix
  • <amp-recaptcha> fix for changing endpoint for “global” attribute
  • Merged <amp-social-share> for Bento
  • Introduced unit tests for <amp-timeago> in Bento
  • Investigated layout shift in <amp-social-share>
  • Introduced <amp-autocomplete> to the email format
  • Began work on <amp-selector> in Bento

Lessons learned

All details on GitHub

What's next

  • <amp-form> support Content-Type: encoded requests
  • <amp-selector> in Bento
  • Aliased video players: runtime implementation
All details on GitHub

Runtime

Status Update Mon Mar 30 2020

What was accomplished

Lessons learned

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
All details on GitHub

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

Analytics

Status Update Mon Mar 30 2020

What was accomplished

  • Enhanced gulp performance task to intercept and time requests based upon different team needs (also helps with pinpointing regressions)
  • Launch visibility trigger multi-selector capabilities to config size in amp-analytics
  • Decided to chunk the analytics initialization by triggers to reduce long tasks
  • More US-CA support work on server
All details on GitHub

What's next

  • Monitor analytics request delay using performance task on master for noise and evaluate it's effectiveness
  • QuerySelectorAll for visibility trigger
  • TCF v2 gdprApplies field for CMPs and publishers in amp-consent
  • analytics for ad 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

All details on GitHub

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.
All details on GitHub

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 Mon Mar 30 2020

What was accomplished

  1. React-based amp-social-share has been merged.
  2. React-based amp-selector, and possibly amp-fit-text starting.
  3. Design of video ecosystem in React has started

Lessons learned

  1. Draw a more clear boundary between AMP and React. The React components should stand on their own.
  2. How to reconcile mostly-async AMP APIs with React sync patterns is not yet fully flashed out.
All details on GitHub

What's next

  1. Introduce Storybook tools.
  2. Continue work on amp-selector/amp-fit-text.
  3. Continue work on video APIs in React.
  4. Start React context propagation work in AMP Core.
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
All details on GitHub

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

User Interface & Accessibility

Status Update Mon Mar 16 2020

What was accomplished

  • amp-list supporting layout="container"
  • introduce "disable-inline-width" attribute to pair with "sizes" attribute
  • amp-timeago code-complete
  • amp-social-share undergoing code review
  • fixed longstanding bug that fires default high trust on amp-carousel v1 slideChange event
  • design doc for styling in Bento
  • display locking API setting up metrics and Origin Trial
  • blocked PR that sends document innerhtml to third party
  • set amp-consent to position: fixed !important to make sure it never causes reflow
  • meeting with performance teams for a list of components that cause reflow
  • proposal for bot for i2i new extension check lists
  • proposal for prettier on html
  • replacement for gulp serve to integrate with module/no module
  • wfh setup
  • wordpress editor work: masking, cti links
  • AMP release duty
  • working with ads on scroll-to-expand UX

Lessons learned

  • Kris is about to pay $600/mo for internet
All details on GitHub

What's next

  • investigating composite components in Bento (accordion, sidebar, selector, etc.)
  • outlining launch steps for Bento components
  • constant team video chat room open to join and have one-off conversations
  • amp-time-picker component UX
  • work on bot for i2i new extension checklists
  • work on prettier on html
  • good first issues for new team member
  • prepare additional manual test cases for QA
All details on GitHub

Runtime

Status Update Mon Mar 16 2020

What was accomplished

Lessons learned

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
All details on GitHub

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

Analytics

Status Update Mon Mar 16 2020

What was accomplished

  • Benchmark <amp-analytics> performance and pageView delay
  • Use existing performance testing framework to also measure request delay.
  • Explore solutions to reduce analytics related long tasks. (chunk, worker)
All details on GitHub

What's next

  • <amp-consent> gdprApplies field
  • Continue work to reduce analytics related long tasks
  • Reduce <amp-analytics> pageView delay. Some proposals include: include vendor predefined config inline, introduce a lite component for ads.
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.

All details on GitHub

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
All details on GitHub

What's Next

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

Bento

Status Update Mon Mar 16 2020

What was accomplished

  1. React-based amp-social-share in review
  2. Working on React-based design for amp-accordion
  3. Working on React-based design for video players
  4. JSX syntax is enabled
  5. React linting is enabled
All details on GitHub

What's next

  1. Continue work on React components
  2. Fix prop access in React components to drop quotes
  3. Discovery: use storybook for React component testing
  4. Discovery: inter-element context propagation
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
All details on GitHub

Focus areas

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

User Interface & Accessibility

Status Update Mon Mar 02 2020

What was accomplished

  • new UI person 🎉🎉🎉
  • React Training
  • styling in Bento discussion and design document
  • fullscreen action versus fullscreenEnter event -- aliased action for backwards compatibility/interface consistency
  • amp-video-iframe jwplayer integration default (it's easier now)
  • annotated media components with common i-amphtml-media-component class name
  • amp-carousel autoplay bug on amp4ads
  • static configured component transformer -- first step towards declarative video players
  • proposal to use structured data for describing hero videos for a transform

Lessons learned

If there is a certain interface inconsistency, fix it under one cohesive implementation and keep the redundant concept as an alias for backwards compatibility. We have certain things in the codebase where the name changes but the concept stays the same.

All details on GitHub

What's next

  • Launch timeago v2 under experimental
  • amp-list layout=container resolution
  • declarative video players
  • video docking interactivity/nudging between multiple videos
All details on GitHub

Runtime

Status Update Mon Mar 02 2020

What was accomplished

Lessons learned

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
All details on GitHub

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

Analytics

Status Update Mon Mar 02 2020

What was accomplished

  • ANALYTICS_VENDOR_SPLIT Clean up is done. Vendors need to submit .json file instead of .js file in the future
  • Consent String size limit was increased from 150 bytes to 200 bytes. Future increase is still under discussion
  • <amp-geo> falls back to geoApi when geo hot patch is not available. (e.g. self hosting)
  • Visibility trigger improvements for <amp-analytics>: multi-selector, querySelectorAll, and non-amp elements
  • <amp-consent> UX and a11y improvements rolled out
All details on GitHub

What's next

  • Benchmark individual features and heavy operations performance
  • Explore webworker solution for heavy operations
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

All details on GitHub

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.
All details on GitHub

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

Bento

Status Update Mon Mar 02 2020

What was accomplished

  1. React training completed for most of the team.
  2. Two new React components are on the way.
  3. What has started to reconcile AMP/Closure and React styles.

Lessons learned

All details on GitHub

What's next

  1. Finish Closure/React style work to make components idiomatic.
  2. Complete the initial set of React components.
All details on GitHub

User Interface & Accessibility

Status Update Fri Feb 14 2020

What was accomplished

  • Bento amp-timeago, ongoing discussions
  • amp-read-aloud component - design
  • Data-param-* attributes for amp video iframe
  • Amp-inline-gallery in, amp-stream-gallery in
  • Workaround for max age amp-addthis bug
  • amp-video-iframe vendor documents
  • Aliased components transform
  • Docking rectangle refactor
  • amp-next-page—host page visibility and analytics support
  • Unordered gesture swipes bug in prod
  • Advising UX design for stories editor
  • Advised AMP stories team about adaptive streaming and reducing rebuffers
  • Post processing on build output after closure compiler to output smaller code that is functionally equivalent
All details on GitHub

What's next

  • React Training
  • amp-timeago continued progress
  • amp-social-share continued progress
  • Renudging videos
  • consolidating classes for media components so that they can be hidden for display locking
  • video features for Bento
  • validation for amp-next-page
  • open source WP editor repo
All details on GitHub

Viewers

Status Update Thu Feb 13 2020

What was accomplished

  • @newmuis wrote an I2I for the AMP Story Player which is independent from the amp-viewer project
  • It has a narrower scope than the existing player so it was decided to start from scratch.
  • @Enriqe is in progress of implementing the feature.
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
All details on GitHub

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

Runtime

Status Update Mon Feb 03 2020

What was accomplished

Lessons learned

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!
All details on GitHub

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

Analytics

Status Update Mon Feb 03 2020

What was accomplished

  • <amp-consent> a11y redesign implementation
  • <amp-consent>``enterFullScreen API is now only allowed after user interaction
  • <amp-consent> supports new API for CMPs to collect error messages
  • Design proposal to have <amp-geo> detect California in the format of ISO 3166-2 code
All details on GitHub

What's next

  • Fully launch the <amp-consent> UI enhancement including the tasks above (now protected by experimental flag)
  • Patch ISO 3166-2 code to amp-geo-0.1.js
  • Allow <amp-geo> to fallback to fetch geo location from a remote endpoint. (Discussion from #25873)
All details on GitHub

Performance

Status Update Mon Feb 03 2020

Accomplished

  • gulp dist --esm output .mjs instead of .js extension type (doesn't change build only extension type, https://github.com/ampproject/amphtml/pull/26340)
  • Dashboard (https://github.com/ampproject/amphtml/projects/99) for all projects that must be completed by the end of Q2 for all AMP documents to meet performance requirements.
  • Design Review for moving from 50 kb -> 75 kb of allowed CSS.
  • Prototyped removal of DOM Purify for AMP Documents outside of Viewer
  • Opened PR for shadow AMP bug fix where resource is not loading on document visibility change
All details on GitHub

Next

  • I2S CSS Limit Change
  • Continue researching removing DOM Purify where possible
  • TDD for replacing FixedLayer system with cache transform
  • Troubleshoot issues with shadow AMP integration test PR
All details on GitHub

Bento

Status Update Mon Feb 03 2020

What was accomplished

  1. First React component has been merged.
  2. Internal eng review has been done with UI team

Lessons learned

All details on GitHub

What's next

  1. Proceed to the first React component done by UI team.
  2. Start preparing org-wide eng review.
  3. React training upcoming.
All details on GitHub

User Interface & Accessibility

Status Update Fri Jan 31 2020

What was accomplished

  • Open sourced @ampproject/filesize, a library for monitoring file size changes
  • amp-auto-lightbox:
  • Fix to prevent working on unlaid out <amp-img>s
  • Use new mutator API (#26587)
  • Proposal for aliased 3rd party video players, vendor extensions can configured declaratively rather than writing a full implementation.
  • Work on amp-carousel v2 performance
  • Started a playground repo for trying Bento components inside React apps
  • Support for templated separator elements in amp-next-page
  • Investigating the state of AMP websites in 2020
All details on GitHub

What's next

  • Coordinate with Quality Assurance on amp-carousel v2 performance
  • Merge amp-analytics support for amp-next-page
  • Merge support for remote loading of articles in amp-next-page
  • Bento timeago component
  • Take the declarative 3rd party video player proposal to design review
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.

All details on GitHub

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
All details on GitHub

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

Runtime

Status Update Tue Jan 21 2020

What was accomplished

Lessons learned

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

All details on GitHub

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

Performance

Status Update Tue Jan 21 2020

What was accomplished

  • Internal changes for rollout of module/no-module
  • Investigate amp.dev to understand issues with performance when served canonically.
  • Refactoring rollup-plugin-closure-compiler to support source-transforms and chunk-transforms.

Lessons Learned

All details on GitHub

What's Next

  • module/no-module to 1%
  • Update amp-sw build system to rollup
  • Disable FixedLayer on canonically served documents.
All details on GitHub

User Interface & Accessibility

Status Update Fri Jan 17 2020

What was accomplished

  • Plans to launch amp-carousel v2
  • Simplify video docking logic
  • Performance measurement extension
  • amp-next-page infinite loading (+ unload/reload pages from memory)
  • amp-next-page unit tests
  • Investigating metrics for Display Locking on amp-accordion
  • Fixed bug to remask an amp-inputmask input element on form state change
  • Fixed bug to reverify form after textarea value changes on form state change
  • Discussed amp-consent accessibility

Lessons learned

  • Time to interactive (performance metric) is only available as a polyfill so far
All details on GitHub

What's next

  • amp-next-page default separators and more box + transitions (stretch goal)
  • Ongoing Display Locking work
  • React foundations for Bento
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
All details on GitHub

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

Runtime

Status Update Mon Jan 06 2020

What was accomplished

Lessons learned

All details on GitHub

Performance

Status Update Mon Jan 06 2020

What was accomplished

  • Implemented code splitting and bug fixes for rollup-plugin-closure-compiler.

Lessons Learned

  • Desktop Linux Machine is 3.4x faster! than laptop for closure compiler test suite.
All details on GitHub

What's Next

  • Backfill 2 weeks worth of release with mjs files
  • Server side changes to insert module/no-module script tags (carry over from last sprint)
  • Merge performance benchmark task
  • Tackling AMP PWA/Shadow bugs
All details on GitHub

User Interface & Accessibility

Status Update Fri Jan 03 2020

What was accomplished

  • amp-next-page 1.0 design review
  • Sticky, hidden and fixed elements in amp-next-page + history manipulation
  • Light refactor and documentation for amp-next-page
  • Display Locking implementation on amp-accordion, findings, and feedback -- go/display-locking-accordion
  • go/a11y-in-amp-public discussion with AMP AC
  • Inline autocomplete launched
  • amp-img[sizes] ongoing discussion
  • More keyboard support for amp-nested-menu

Lessons learned

  • Scrolling is tricky with visual diffs!
All details on GitHub

What's next

  • amp-next-page infinite page loading + separators/recommendation box
  • amp-img[sizes] attribute naming bikeshed
  • Preact/React fundamentals for Bento
  • Deprecating amp-sidebar 2.0 (merge work from 2.0 into 1.0)
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
All details on GitHub

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

Runtime

Status Update Mon Dec 09 2019

What was accomplished

Lessons learned

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

All details on GitHub

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

Performance

Status Update Mon Dec 09 2019

What was accomplished

  • amp-img component: pass data attributes to inner image tag (PR)
  • Finalize high level roadmap plans for 2020

Lessons Learned

  • Back up your dev environment regularly...in case your computer turns into a paperweight 😅
All details on GitHub

What's Next

  • Server side changes to insert module/no-module script tags
  • Open PR for performance test gulp task to compare local branch vs. prod
  • Fixing PWA / shadow AMP bugs
All details on GitHub

User Interface & Accessibility

Status Update Fri Dec 06 2019

What was accomplished

  • Video Docking: Scroll back up to the original video
  • Visual tests for docking
  • Fixed an issue with fonts
  • Inline autocomplete experimentally launched! 👏👏
  • Changes for inline-gallery in base-carousel
  • [UI] Validator badges design

Lessons learned

  • Video docking is stable now (manual tests)!
  • Learned about a11y and pointer-events: none
  • Should use touch-action / pointer-events instead of gestures.js
  • Visual diff API is easy to use!
  • It is possible to reducing the bundle size by adding code!
All details on GitHub

What's next

  • Document lack of support for docking in the viewer
  • Docking interaction for multiple videos
  • Display locking
  • More inline autocomplete
  • Merging inline gallery + documentation
  • Look into blurry placeholders
  • Unify fonts inside AMP
All details on GitHub

AMP for Email

Status Update Wed Dec 04 2019

Highlights

  • Held email mini-summit at ACS 2019 in NYC
  • Outlook.com launches AMP for Email to developer preview
  • VerizonMedia merged an OSS Java implementation of the AMP validator
  • Gmail rolls out AMP for Email to Android

WG Meeting Notes (9/12, 10/17, 11/8)

  • Working on unified sender registration process (shared form in review)
  • Received feedback on proposed shared HTML/CSS whitelist standards
  • Consensus on standardizing max email size (200KB), max template SSR size, etc. (#4)
  • More discussion on "CORS for email" proposal (#7)
  • New proposal for email sender authentication (ecosystem-friendly replacement for proxy assertion tokens)
  • Discussed AMP validator versioning and mitigating version skew across providers
  • Consensus on allowing limited CSS attribute selectors (e.g. useful for amp-selector)
  • Proposed new component in AMP4EMAIL spec: amp-autocomplete
  • Self-hosting AMP JS and rollout patterns
  • New outreach channels for email senders and ESPs
All details on GitHub

Focus areas

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

User Interface & Accessibility

Status Update Fri Nov 22 2019

What was accomplished

  • Video docking fixes (draft)
  • Looked into optimizing css for documents (adaptive css limit), most documents are including all of the website’s css instead of the css for that document so that optimization is enough
  • Dead CSS elimination once we get a separate binary for development mode
  • Addressed security vulnerabilities on the animations library
  • AMP Validator Chrome Extension status icons design
  • Wordpress Editor UI with Sam
  • Inline autocomplete cleanup and unit tests
  • Investigate a11y bug in amp-carousel 0.1
  • Brainstormed better accessibility in AMP
  • Deprecated amp-user-location
  • PR to inject MultidocManager’s dependencies and reduce amp-next-page’s size
  • PR for the initial implementation of amp-next-page v2
  • Nit type fix on PositionObserver

Lessons learned

  • @alanorozco can paint and DJ
  • Engineers have an artistic side too! 🎨
  • You can have a conditional on a boolean 😮! The more you know!
All details on GitHub

What's next

  • Inline autocomplete visual, e2e, validation tests
  • Display locking
  • Merge PRs for amp-next-page / MultidocManager
  • Take amp-next-page v2 to design review
  • Controls disappearing on the docked video
  • Continue work on the Wordpress Editor UI
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
All details on GitHub

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

Runtime

Status Update Mon Nov 11 2019

What was accomplished

Lessons learned

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

All details on GitHub

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

Performance

Status Update Mon Nov 11 2019

What was accomplished

  • performance WG roadmap planning
  • planning on how to deploy module/no-module to production
  • crossorigin=anonymous experiment should be launched.

Lessons Learned

  • a P0 almost every day is no fun...
All details on GitHub

What's Next

  • add transformer pipeline to typecheck + object destructure transform
  • add transformer pipeline to dev build
  • migrating RTV performance comparison/visualization tool to GCP
All details on GitHub

User Interface & Accessibility

Status Update Fri Nov 08 2019

What was accomplished

  • Manual document visibility management for amp-next-page (fixes amp-pixel)
  • Fixed amp-mow-player
  • Fix for social sharing buttons
  • Multiple fixes, refactor and cleanup for amp-carousel
  • Tracking amp-nested-menu and amp-mega-menu launches
  • Refactored error handling for amp-list load-more
  • Server side rendering on auto-complete code complete
  • Inline autocomplete refactor and accessibility audit
  • Adding autocomplete to the amp for email spec
  • Fix amp-carousel bug where keys are interacting with the email client
  • P0 amp-form submission redirect was broken with SSR
  • 🎉Zewen joined, will be looking into UX for amp-carousel, page transitions and amp-next-page

Lessons learned

  • Unexplained bad code can become worse code
  • If you do something hacky, say it’s hacky (comment)
  • P0s are scary 😱
All details on GitHub

What's next

  • Bug bash for amp-next-page <> amp-analytics
  • Fix URLs not reverting when scrolling back on amp-next-page
  • Fix arrow-key handling on amp-carousel 0.2
  • amp-carousel bug bash
  • Tests for amp-autocomplete inline
  • Security review for amp-autocomplete (for email)
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
All details on GitHub

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

Runtime

Status Update Mon Oct 28 2019

What was accomplished

  • Custom Elements v1 shipped
  • With IE11 cherry-pick
  • CL out for non-polyfill in supported browsers
  • Resources now invalidates children of Scroll boxes
  • Goal after of Layers failure
  • CL for removing query params before navigate (ITP 2.3)
  • CLs for Action Trust
  • Actions should propagate the trust they receive
  • Breaking async cycles

Lessons learned

  • IE11's HTMLElement class does not extend from Function
  • So, HTMLElement.call doesn't exist
  • Errors in cross-origin scripts aren't reported, still.
All details on GitHub

What's next

  • @choumx away at summit & training
  • @jridgewell on release duty
  • Adding crossorigin=anonymous to AMP scripts
All details on GitHub

Caching

Status Update Mon Oct 28 2019

What was accomplished?

  • Removed error categories in AMP Validator, and rev’d to Node 12.
  • Above caused some incompatibility issues, which have now been resolved.
  • Added SameSite=none to AMP CID cookie.
All details on GitHub

Ads

Status Update Mon Oct 28 2019

What was accomplished

AMPHTML ads - Continuing bundle size reduction work and experiments.

Story ads - Helping onboard several new publishers and advertisers for programmatic beta. - Exploring alternative monetization techniques.

All details on GitHub

What is next

AMPHTML ads - Continuing bundle size reduction - Ongoing work to bring greater external transparency for day to day work.

All details on GitHub

Performance

Status Update Mon Oct 28 2019

What was accomplished

  • CEV1 Polyfill Shipped
  • Message extraction bugfix / infra.
  • Design Document for Merics Collection
  • Replacement for bundlesize (3x Faster, 7x less Dependencies)

Lessons Learned

  • Build files transferred between Travis runs are visible on logs but they list is collapsed, so look hard for them.
All details on GitHub

What's Next

  • Turn on message extraction.
  • Investigate removing info/fine calls (for production builds).
  • Performance changes for WorkerDOM Node.cloneNode(deep?).
All details on GitHub

User Interface & Accessibility

Status Update Fri Oct 25 2019

What was accomplished

  • built a workaround for amp-live-list on Google AMP cache (approach not taken)
  • Validation & documentation for mega menu
  • Clear some launch blockers for nested menu
  • inline-autocomplete
  • design review and implementation
  • initial bug bash
  • fixing bugs for amp-form in AMP Email
  • maintenance around extensions generator
  • give ownership to outreach/ui wg
  • core video files ownership to ui wg
  • 3p video components on review (amp-empower, amp-redbull-player)

Lessons learned

  • If you think you have fix for validation/cache, it could be for just one level of caching
  • If engineering cost becomes too high, we can make requirements more flexible
All details on GitHub

What's next

  • Start hiring process for ui wg
  • Get mega menu ready for launch
  • Revisit launch requirements for sidebar v2 + nested menu, validation & docs document recommendation for video player creation
  • if video is docked and ad is playing, change controls with button to go back to inline
  • Support SSR on amp-autocomplete
  • Inline autocomplete continued implementation
  • autocomplete in AMP for Email security proposal
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
All details on GitHub

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

Runtime

Status Update Mon Oct 14 2019

What was accomplished

  • AMP Contributor Summit

Lessons learned

  • ACS Debrief
  • Let’s improve documentation
All details on GitHub

What's next

  • 📧Email
  • Recursive XHR issue
  • Unified sender registration
  • SSR-dependent “documentHeight” message
  • 🍱React-based AMP components
  • Launch plan
  • ⚙Runtime
  • CSI migration design
All details on GitHub

Performance

Status Update Mon Oct 14 2019

What was accomplished

  • Erwin Presented live coding demo in AMPCS day 0
  • Alan presented "intro to amp-script" in AMPCS day 0
  • Alan/Kris presented "future of amp-script" AMPCS day 1
  • Justin presented "Bento an update" on AMPCS day 2
  • backfilled most days for performance metrics lost

Lessons Learned

  • Have alerting ahead of time for policies that have an expiration date
  • External contributors wanted a clearer explanation of our Priority labels and what they mean
All details on GitHub

What's Next

  • Turning on log message extraction.
  • Performance changes for WorkerDOM Node.cloneNode(deep?).
  • Fix type errors and add type checking for JsonCast Errors (amppr/24453 to be followed up).
  • Launch and gather metrics for single pass experiment.
All details on GitHub

Caching

Status Update Mon Sep 30 2019

What was accomplished?

  • Prep for SXG Contributor Summit Talk next week
All details on GitHub

Ads

Status Update Mon Sep 30 2019

What was accomplished

AMPHTML ads - inabox-lite: experiment & test caught 2 issues. Both fixed and deployed in canary. - More e2e tests.

Story ads - Creative preview tool now is publicly available - Some more refactoring work WIP

All details on GitHub

What is next

AMPHTML ads - Launch inabox lite - Fixit week

All details on GitHub

Performance

Status Update Mon Sep 30 2019

What was accomplished

  • Custom Elements V1 polyfill shipping as RTV Experiment.
  • WorkerDOM 0.20.0 released fixing regressions to ReflectedProperties.
  • Launched and gathered metrics module/no-module.
  • Replace @babel/preset-env with new custom module output plugin.
All details on GitHub

What's Next

  • Turning on log message extraction.
  • Performance changes for WorkerDOM Node.cloneNode(deep?).
  • Prepare talks for AMP Contributor Summit.
  • Launch and gather metrics for single pass experiment.
  • Research, create, and implement metrics surrounding lazy loading of resources
  • Fix type errors and add type checking for JsonCast Errors (amppr/24453 to be followed up).
All details on GitHub

User Interface & Accessibility

Status Update Fri Sep 27 2019

What was accomplished

  • mega menu: building up a prototype / demo, figuring out a11y strategy
  • tested voice over (MacOS, NVDA), still need to test on JAWS
  • feedback from @dvoytenko on sidebar
  • API, history questions, will move forward with simplest solution for now
  • drill down component API more clear
  • parallax PR is getting ready, behind experiment flag for both desktop and mobile
  • PR for some parallax changes to amp-orientation-observer
  • amp-bind for audio and video
  • 2020 planning
  • fixing carousel 0.1 bug on ios13, investigate cherry pick
  • OWNERS changes for all UI components to the wg-ui-and-a11y alias.
  • Prepare a11y presentation for Contributor Summit
  • inline autocomplete:
  • define MVP requirements
  • investigate pulling in 3p library (tributejs) versus building from scratch

Lessons learned

  • aria-haspopup="true" is only for menus, not all screen readers support aria-haspopup="dialog" etc
  • test screen readers with both tab navigation and by lists, headings, etc.
  • interesting screen usage survery results
All details on GitHub

What's next

  • continue refining mega menu and schedule a11y audit
  • investigate amp-next-page bugs
  • amp-stream-gallery
All details on GitHub

Runtime

Status Update Wed Sep 25 2019

What was accomplished

  • Opt in for individual AMP experiments now uses LocalStorage instead of cookies.
  • Tons o' work on amp-bind
  • Perf improvements
  • amp-script launched!
  • Inline scripts support
  • Canvas support
  • LocalStorage support
  • AMP setState support
  • 1-pass build work
  • Concatenate and prune intermediate module dependencies into a single final JS file
  • Fix sourcemaps
  • Fixit week:
  • Faster ads/analytics configuration parsing via JSON.parse
  • amp-list DOM diffing instead of innerHTML
  • Bento
  • Exploring using React internally to simplify components
  • Exploring how to wrap React in AMP and "Bento" modes
  • Layers was disabled and removed
All details on GitHub

What's next

  • AMP Contributor Summit!
  • Continuing Bento explorations
  • Better support for AMP Emails
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
All details on GitHub

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

Ads

Status Update Tue Sep 17 2019

What was accomplished

AMPHTML ads - All 3 major services (viewport, resources, viewer) had their lite implementation for inabox. Which reduced inabox runtime size by 26.3% - Some code cleanup work done after the refactoring. - Setup inabox-lite experiments - amp-ad-exit e2e test WIP

Story ads - Creative preview tool improvement

All details on GitHub

What is next

AMPHTML ads - Launch inabox lite

Story ads - Make the preview tool publicly available

All details on GitHub

Performance

Status Update Tue Sep 17 2019

What was accomplished

  • Logging message extraction bugfixes.
  • WorkerDOM 0.19.0 released including AMP.get/setState().
  • Disabled Custom Elements V1 polyfill percentage experiment.
  • Successful Prototype of Volta to replace nvm on developer machines.

Lessons Learned

  • Don't read experiments during module initialization.
  • First Input Delay (micro -> macro task) has negligible changes except for direct canonical visits.
  • Less logic in bash, the better your life will be. (@erwinmombay)
All details on GitHub

What's Next

  • Turning on log message extraction.
  • Performance changes for WorkerDOM Node.cloneNode(deep?).
  • Custom Elements V1 polyfill shipping as RTV Experiment.
  • Replace @babel/preset-env with new custom module output plugin.
  • Deploy current version 1909141411050 as a custom version marked version 1909141411051 (1 suffix) to be used as the esm/sp/mp version locking directories (cr/269518997)
  • Fix type errors and add type checking for JsonCast Errors (amppr/24453 to be followed up)
All details on GitHub

Runtime

Status Update Mon Sep 16 2019

What was accomplished

All details on GitHub

Caching

Status Update Mon Sep 16 2019

What was accomplished?

  • Convert amppkg from dep to go mod
  • Validator verifies that template=”” matches a template id on the page
  • Beginning work on ACME cert renewal in amppkg
  • Welcome Allan Banaag to https://github.com/ampproject/wg-caching
  • <style amp-custom-length-check> special error in AMP Validator

This update includes several previous weeks.

All details on GitHub

Runtime

Status Update Tue Sep 03 2019

What was accomplished

  • [WIP] React-based AMP components
  • amp-script: amp-state [WIP], improved docs
  • Fixed DOM clobbering of AMP globals
All details on GitHub

What's next

  • React-based AMP components
  • amp-script + amp-state
All details on GitHub

Ads

Status Update Fri Aug 30 2019

What was accomplished

AMPHTML ads - Resources service refactoring done (https://github.com/ampproject/amphtml/issues/23311) - Viewport service refactoring done (https://github.com/ampproject/amphtml/issues/23679) - Launched inabox-css-cleanup

Story ads - Code refactoring done - e2e test done

All details on GitHub

What is next

AMPHTML ads - Setup inabox-lite experiments - Refactoring clean ups

Story ads - Creative preview tool improvement

All details on GitHub

Runtime

Status Update Mon Aug 19 2019

What was accomplished

  • Fix-it
  • Launch amp-script
  • jsonConfiguration()
  • amp-list: DOM diffing and error UI

Lessons learned

  • Code branching on const private props are not DCE’d
/** @const */
this.nope_ = false;

if (this.nope_) {
  foo(); // Still bundled.
}
All details on GitHub

What's next

  • amp-script + amp-state
All details on GitHub

Analytics

Status Update Mon Aug 19 2019

What was accomplished

  • Add PAGE_VIEW_ID_64 support
  • Add AD_START AD_END events in video analytics
  • Analytics Linker: No longer decorate internal navigation
  • Load analytics vendor's config lazily (currently running experiment)
  • Resolves NAV_TIMING macro earlier depending on the performance timing signal
All details on GitHub

What's next

  • <amp-experiment> 1.0 implementation review
  • Launch the improvement to load analytics vendor's config
  • Launch & Document nested macro feature
All details on GitHub

Ads

Status Update Mon Aug 19 2019

What was accomplished

AMPHTML ads - Fixit week: closed 14 issues . Unskipped / fixed many tests. Fixed some tests isolation problems. And proposed more TODOs. - Created many manual test examples to cover all AMPHTML ad supported extensions (https://github.com/ampproject/amphtml/issues/23629) - e2e tests (https://github.com/ampproject/amphtml/issues/24038) - visual tests - Resources service refactoring WIP (https://github.com/ampproject/amphtml/issues/23311) - Viewport service refactoring WIP (https://github.com/ampproject/amphtml/issues/23679)

Story ads - Code refactoring WIP - e2e test WIP - Ad choices support done - Debugged and fixed an end to end story ads serving issue with GAM & DV360.

All details on GitHub

What is next

AMPHTML ads - More tests! - Finish Resources service refactoring - Finish Viewport service refactoring

Story ads - Finish Code refactoring - Finish e2e test - Custom CTA button text

All details on GitHub

AMP for Email

Status Update Wed Aug 14 2019

Highlights

  • Planning in-person meeting at ACS 2019 in NYC
  • Microsoft and VerizonMedia implementations still in progress

WG Meeting Notes (6/14, 7/12, 8/9)

  • Expanded wg-amp4email GitHub membership
  • Progress on alignment across provider-specific HTML/CSS whitelists and AMP4EMAIL spec
  • Consensus on deprecating proxy assertion tokens to avoid senders potentially only supporting large providers
  • Documented AMP viewer implementation guidelines
  • Consensus on approach for shared sender registration/whitelisting (with long-term goal of not having a sender whitelist at all)
  • Discussions on a new CORS mechanism specifically for AMP4EMAIL (#7)
  • Discussions on standardizing AMP MIME part expiry, max size, and max number of AMP elements (#4)
All details on GitHub

Focus areas

  • Adapting the AMP4EMAIL spec to avoid potential ecosystem fragmentation

/cc @jasti

All details on GitHub

Performance

Status Update Fri Aug 09 2019

What was accomplished

  • 12 issues resolved for amp-sw
  • Release of WorkerDOM 0.17.0

Lessons Learned

  • Testing coverage for amp-sw is inadequate, more tests are good.
All details on GitHub

What's Next

  • Bug fixit week for Shadow AMP, Scheduling, WorkerDOM.
  • Kris in Australia starting Friday.
All details on GitHub

Runtime

Status Update Mon Jul 22 2019

What was accomplished

  • amp-script: Local storage, better reference docs
  • worker-dom: Unwrap author script, upgrade TS, bug fixes and code clean up
  • 1-pass: Source map compat for intermediate bundles
  • AMP4EMAIL: Investigate mustache rules at runtime
  • amp-bind: Fix bug in canary
  • @jridgewell on release duty

Lessons learned

  • Read APIs carefully for DOM traversal edge cases
All details on GitHub

What's next

  • Launch amp-script
  • amp-script: Actions/events as component interface
  • Bento: Start design and prototyping for service decoupling
  • AMP4EMAIL: Error UI for amp-list and DOM diffing
All details on GitHub

Ads

Status Update Mon Jul 22 2019

What was accomplished

AMPHTML ads - Experiment for fie-css-cleanup WIP. (https://github.com/ampproject/amphtml/pull/23401) - Wrote inabox integration guideline. (https://github.com/ampproject/amphtml/pull/23272) - Resources service refactoring WIP (https://github.com/ampproject/amphtml/issues/23311) - Added deprecation warning for amp-youtube (https://github.com/ampproject/amphtml/issues/21340) - Added integration test for FIE rendering (https://github.com/ampproject/amphtml/pull/23438)

Story ads - Story ads preview tool basic functionality ready. - Ad choices support WIP

All details on GitHub

What is next

AMPHTML ads - Resources service refactoring - More visual tests

Story ads - Custom CTA button text - Ad choices support

All details on GitHub

Performance

Status Update Mon Jul 22 2019

What was accomplished

  • Unique Identifier per amp-sw version included in source.
  • amp-performance-visualization confidence graphs.
  • Sourcemap combining library for single-pass compilation.
  • Closure Compiler multi-pass module-compatible builds. (~10-11% reduction now).
All details on GitHub

What's Next

  • Open Source @ampproject/resorcery. (sourcemap combiner)
  • Single location for all documents created for wg-performance.
  • Enable experiment for module-compatible builds.
  • @kristoferbaxter Out for most of next sprint.
All details on GitHub

Viewers

Status Update Thu Jul 18 2019

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)
All details on GitHub

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

Runtime

Status Update Mon Jul 08 2019

What was accomplished

  • amp-script: Inline scripts, sandbox=allow-forms
  • 1-pass: Concat intermediate bundles + custom DCE with Babel
  • Draft design for cdn.ampproject.org as a public suffix
  • worker-dom: CanvasPattern and drawImage
  • Retriaged runtime GH issues

Lessons learned

All details on GitHub

What's next

  • amp-script: Finish URL variable whitelisting, add actions/events, add examples to amp.dev
  • 1-pass: Find way to fix broken source maps
  • AMP4EMAIL: Misc. feature work
All details on GitHub

Stories

Status Update Mon Jul 08 2019

What was accomplished

  • Vertical rendering for bots
  • Live stories:
  • Allow inserting new pages at any position
  • Documentation draft
  • Analytics:
  • Adding configuration options for analytics in stories (e.g. duplicate pages) out for review
  • Story analytics variables refactoring
  • Design for video performance metrics
All details on GitHub

What's next

  • Delete pages from a live story
  • Progress bar improvements
  • Video playback reliability on three panels desktop version
  • Opening remote URLs in page attachments security discussions
  • Continuing work on affiliate links
  • Finish design for video performance metrics
  • Design for:
  • minimum/maximum aspect ratios
  • embedding STAMPs in other pages
  • Reactions
All details on GitHub

Analytics

Status Update Mon Jul 08 2019

What was accomplished

Issue triaging - Triaged 120 issues. Attached component labels. Closed 16 obsolete ones. Prioritized ~20 for fixit week.

Bug Fixes - Investigated a regression caused by [PR] (https://github.com/ampproject/amphtml/pull/22812). Cherrypicked a revert PR to inabox canary.

amp-experiment v2 - support selecting multiple elements PR pending

All details on GitHub

What is next

  • Lazily load analytics vendor config
All details on GitHub

Ads

Status Update Mon Jul 08 2019

What was accomplished

Issue triaging & clean ups - Triaged 190+ open issues under Category: Ads. Attached "component" labels. Closed 50+ obsolete ones. Prioritized ~20 for fixit week. - Removed 13 obsolete experiment flags

AMPHTML ads - Ran experiment for inabox-css-cleanup. Results are neutral. - Helping SoNet and BulbIt for AMPHTML ads integration

Story ads - DV360 integration

All details on GitHub

What is next

AMPHTML ads - Documentation for inabox - More visual tests for inabox - Refactor Viewport service and remove it from inabox runtime. That will give us another 10% of saving.

Story ads - DV360 integration - Ad choices support

All details on GitHub

Performance

Status Update Mon Jul 08 2019

What was accomplished

  • Multi Pass compilation integration with Babel.
  • Initial Results for Priority Hints Experiment. (@prateekbh is sharing with wg-performance)
  • Document for how to preload amp pages while retaining of amp-analytics usage. (@prateekbh is sharing with wg-performance)

Lessons Learned

  • Testing micro and macro task integration is interesting, and more difficult than expected.
All details on GitHub

What's Next

  • Review PR for unique identifier for every amp-sw version.
  • Complete Tests for micro -> macro tasks.
  • Continued work on amp-performance visualization's graphs.
  • Sourcemap combining library for single-pass compilation, plan to Open Source under @ampproject/resorcery.
  • Single location for all documents created for wg-performance.
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%
All details on GitHub

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

Runtime

Status Update Mon Jun 24 2019

What was accomplished

  • PR for AMP experiments on localStorage vs. cookies
  • amp-bind + amp-list: Perf optimizations, bug fix
  • Runtime bugs: Layers perf issue, toggleLoading infinite loop, doubly-offset fixed elements
  • amp-script: Upgrade worker-dom, strip forms & URL vars
  • worker-dom: CanvasGrid
  • Early experiments for "IntersectionObserver for resource scheduling"

Lessons learned

All details on GitHub

What's next

  • Retriage GitHub issues
  • amp-script: Opt-in for forms and URL vars, inline script
  • Investigate Cache rewriting for AMP experiments
  • AMP4EMAIL: Investigate runtime sanitization for template rules
  • Design doc for Layers
  • @jridgewell helping on 1-pass CC
All details on GitHub

Caching

Status Update Mon Jun 24 2019

What was accomplished?

  • Released amppkg v2.
  • Fixed etag issue with AMP Packager’s certificates.
  • Meta tag fix to transformers in AMP Cache, cease moving them all to head.
All details on GitHub

Stories

Status Update Mon Jun 24 2019

What was accomplished

  • Live story validation merged
  • Eng design decision for opening remote URLs in page attachments
  • New story-last-page-visible trigger
  • 0.1 deprecated
  • Vertical rendering for bots
  • Alt text for videos with text baked in
  • Started work on affiliate links
  • Fixed prerendering bug where story was not built due to height
All details on GitHub

What's next

  • Adding configuration options for analytics in stories (e.g. duplicate pages)
  • Start looking into progress bar changes
  • Opening remote URLs in page attachments
  • Investigating prerendering
  • Optimizations to vertical rendering for bots
  • Continuing work on affiliate links
  • Work on video metrics
  • Design for minimum/maximum aspect ratios
  • Design for embedding STAMPs in other pages
All details on GitHub

Analytics

Status Update Mon Jun 24 2019

What was accomplished

New Features - <amp-experiment> support mutating class attribute PR - Introduce requestOrigin to <amp-analytics> requests config fields. Issue - Introduce $EQUALS macro support in <amp-analytics> Issue - Convert all Analytics vendor config from js file to json file. This is part of the effort to lazily load analytics vendor configs. - Change Analytics Linker's default behavior to decorate all subdomains - Introduce $COOKIE macro support in <amp-analytics> Issue - Allow setting custom cookie expiration time when setting cookie with <amp-analytics>'s cookie config Issue

Bug Fixes - Fix regression where Analytics Linker decorate fragment url - Fix a race condition when resolving performanceTiming.loadEventEnd [PR] (https://github.com/ampproject/amphtml/pull/22812) - Fix race condition where video-percentage-played doesn't trigger Issue - Fix nested macro expansion bug Issue

All details on GitHub

What is next

  • <amp-experiment> v2 to support selecting multiple elements
  • <amp-experiment> v2 to support mutating style and src attribute
  • Lazily load analytics vendor config
All details on GitHub

Ads

Status Update Fri Jun 21 2019

What was accomplished

inabox lite - Conducted a thorough code analysis of inabox runtime. Made a plan for binary reduction / bundling. https://github.com/ampproject/amphtml/issues/22867 - Merged a couple of PRs which reduced 8% of the inabox runtime size

Story ads - DV360 integration mostly done

All details on GitHub

What is next

inabox lite - More visual tests for inabox - Refactor Viewport service and remove it from inabox runtime. That will give us another 10% of saving.

Story ads - DV360 integration - Ad choices support

Issue triaging

All details on GitHub

Runtime

Status Update Mon Jun 10 2019

What was accomplished

  • Bug bashing
  • Consensus on threat model and security reqs for amp-script

Lessons learned

  • If gentle pings don't work, schedule a meeting 😄
All details on GitHub

What's next

  • Continue debugging Layers performance regression
  • Plan for deprecating cookie usage on AMP Cache
  • Revise amp-script security features to be less stringent
  • Review runtime survey feedback
All details on GitHub

Caching

Status Update Mon Jun 10 2019

What was accomplished?

  • Restore dns-prefetch cache transformers; broken recently.
  • Major changes to Email Validator to better match Gmail filtering rules.
  • Javascript fix to implement the 1000 byte inline CSS limit.
  • Fixed inner != outer issue in amppackager.
  • WIP improving/defining amppkg release process
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
All details on GitHub

What's next

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

Caching

Status Update Tue May 28 2019

What was accomplished?

  • Basic image preloading in amppkg
All details on GitHub

AMP for Email

Status Update Wed May 15 2019

Highlights

WG Meeting Notes (5/10)

  • Shared goal: AMP4EMAIL spec is the source of truth for rendering compatibility in email providers
  • Corollary: Shared sender tooling that works across providers
  • Corollary: Migrating provider-specific whitelists (HTML/CSS) to AMP4EMAIL spec
  • Implementation details of provider adoption e.g. integrating a production-grade AMP validator
  • @ampproject/wg-caching is investigating open-sourcing internal C++ validator
  • Discussed 3P authentication with proxy assertion tokens
  • Discussed wg-amp4email GitHub membership
All details on GitHub

Focus areas

  • Cross-provider compatibility per AMP4EMAIL spec (above)
  • Allowing more components in AMP4EMAIL e.g. amp-animation, amp-analytics

/cc @jasti

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)
All details on GitHub

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

Analytics

Status Update Mon May 13 2019

What was accomplished

Fixit week - Added doc for Linker wildcard feature - Added amp-analytics integration tests for PWA - Fixing nest macro bug in var - Writing cookies to eTLD+1 to be consistent with CLIENT_ID - WIP amp-call-tracking bug

amp-experiment v2 - Introducing mutation limit and config size limit

All details on GitHub

What is next

amp-experiment v2 - Working towards GA launch with Optimizely

Linker - Enable Linker for eTLD+1 by default

All details on GitHub

Ads

Status Update Mon May 13 2019

What was accomplished

Fixit week - Fixed an AMPHTML creative CSS issue

amp-consent phase 2 - forcePromptOnNext API WIP - make consent state available as a URL macro WIP

inabox lite - performance impact evaluation for lazy loading services via HTTP preload

All details on GitHub

What is next

Story ads - DV360 integration

amp-consent phase 2 - support CMP integration

inabox lite

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
All details on GitHub

What's next

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

Analytics

Status Update Fri Apr 26 2019

What was accomplished

amp-experiment v2 - Integrated with Action Network, had demo in AMP Conf

All details on GitHub

What is next

amp-experiment v2 - Working towards GA launch with Optimizely

ITP2.2 - Evaluate impact

Bugs - Fix nested macro bug #20816 - amp-call-tracking in AdWords #20551

All details on GitHub

Ads

Status Update Fri Apr 26 2019

What was accomplished

Story ads - DV360 integration WIP

amp-recaptcha - Fully launched

amp-link-rewriter - Fully merged

Inabox in mApp - Made amp-mraid a valid AMP component. (Temporarily solution)

All details on GitHub

What is next

AMPHTML ads - Plan for better animation support in AMP ads

Story ads - DV360 integration

Code health - Fixit week

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
All details on GitHub

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
All details on GitHub

What's next

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

Analytics

Status Update Fri Mar 15 2019

What was accomplished

amp-experiment v2 - Fixed a render-delaying service regression #21193

amp-analytics - a CSP friendly way for user to opt-out tracking WIP

Linker - Allow LINKER_PARAM to be used outside WIP

All details on GitHub

What is next

amp-experiment v2 - Version bump - Implement config parser - Security review

Linker - Allow LINKER_PARAM to be used outside cookie writer

amp-analytics - a CSP friendly way for user to opt-out tracking

All details on GitHub

Ads

Status Update Fri Mar 15 2019

What was accomplished

AMPHTML ads - preparing for AMPHTML ads developer workshop

Story ads - DV360 integration WIP

Affiliate links - amp-link-rewrite PR working in progress

amp-recaptcha - original trial started

amp-inabox - prototype for bento + amp-analytics WIP

All details on GitHub

What is next

AMPHTML ads - AMPHTML ads developer workshop

amp-inabox - prototype for bento + amp-analytics

Story ads - DV360 integration

Affiliate links - amp-link-rewrite implementation

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
All details on GitHub

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

Analytics

Status Update Fri Mar 01 2019

What was accomplished

amp-experiment v2 - bench mark for mutation operations. decided on mutation limit.

Linker - Support wildcard in destination domain setting

All details on GitHub

What is next

amp-experiment v2 - Version bump - Implement config parser - Fix Render-delaying services - Security review

Linker - Allow LINKER_PARAM to be used outside cookie writer

amp-analytics - lazy load vendor config design - a CSP friendly way for user to opt-out tracking

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)
All details on GitHub

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

Analytics

Status Update Fri Feb 15 2019

What was accomplished

amp-experiment v2 - finalized JSON config spec

Linker - Bug: gclid not propagated when OGT is used on AMP

All details on GitHub

What is next

amp-experiment v2 - Create Benchmarks, and find Limitation Numbers

Linker - support wildcard domain matching

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
All details on GitHub

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

Analytics

Status Update Fri Feb 01 2019

What was accomplished

ConfigRewriter - Allow configRewriter to do iframePing (for Floodlight)

amp-experiment v2 - design review - addressing feedback from design review

Linker - Bug: gclid not propagated when OGT is used on AMP

amp-analytics - Decided to support visibility tracking for non AMP elements. - bug: Issue using amp-analytics with Shadow DOM

All details on GitHub

What is next

amp-experiment v2 - finalize spec

amp-call-tracking - bug: incorrect response from AdWords

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
All details on GitHub

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

Caching

Status Update Tue Jan 22 2019

What was accomplished

  • AMP actions validator rules now available.
  • Correct handling of document fragments in the cache. #19688
  • Transformed AMP SXG now include
  • version of transformers used
  • original CSS string fragments
  • protect against data:... in CSS
  • css escaping logic
  • Validation of transformer cdn and version
All details on GitHub

What's next

  • Transformed AMP SXG to
  • strip comments from script tags
  • Validator to enable/disable tagspec based on type identifiers.
All details on GitHub

Analytics

Status Update Fri Jan 18 2019

What was accomplished

amp-analytics - varGroups for configRewriter is done

All details on GitHub

What is next

amp-experiment v2 - design review

Linker - Bug: gclid not propagated when OGT is used on AMP

ConfigRewriter - Allow configRewriter to do iframePing (for Floodlight)

amp-analytics - bug: Issue using amp-analytics with Shadow DOM

amp-call-tracking - bug: incorrect response from AdWords

All details on GitHub