In AMP we trust
AMP Conf was one of those deep dive events, with two days dedicated to one single technology: AMP.
Except AMP isn’t really one technology, is it? And therein lies the confusion. This was at the heart of the panel I was on. When we talk about AMP, we could be talking about one of three things:
- The AMP format. A bunch of web components. For instance, instead of using an
imgelement on an AMP page, you use anamp-imgelement instead. - The AMP rules. There’s one JavaScript file, hosted on Google’s servers, that turns those web components from
spans into working elements. No other JavaScript is allowed. All your styles must be in astyleelement instead of an external file, and there’s a limit on what you can do with those styles. - The AMP cache. The source of most confusion—and even downright enmity—this is what’s behind the fact that when you launch an AMP result from Google search, you don’t go to another website. You see Google’s cached copy of the page instead of the original.
The first piece of AMP—the format—is kind of like a collection of marginal gains. Where the img element might have some performance issues, the amp-img element optimises for perceived performance. But if you just used the AMP web components, it wouldn’t be enough to make your site blazingly fast.
The second part of AMP—the rules—is where the speed gains start to really show. You can’t have an external style sheet, and crucially, you can’t have any third-party scripts other than the AMP script itself. This is key to making AMP pages super fast. It’s not so much about what AMP does; it’s more about what it doesn’t allow. If you never used a single AMP component, but stuck to AMP’s rules disallowing external styles and scripts, you could easily make a page that’s even faster than what AMP can do.
At AMP Conf, Natalia pointed out that The Guardian’s non-AMP pages beat out the AMP pages for performance. So why even have AMP pages? Well, that’s down to the third, most contentious, part of the AMP puzzle.
The AMP cache turns the user experience of visiting an AMP page from fast to instant. While you’re still on the search results page, Google will pre-render an AMP page in the background. Not pre-fetch, pre-render. That’s why it opens so damn fast. It’s also what causes the most confusion for end users.
From my unscientific polling, the behaviour of AMP results confuses the hell out of people. The fact that the page opens instantly isn’t the problem—far from it. It’s the fact that you don’t actually go to an another page. Technically, you’re still on Google. An analogous mental model would be an RSS reader, or an email client: you don’t go to an item or an email; you view it in situ.
Well, that mental model would be fine if it were consistent. But in Google search, only some results will behave that way (the AMP pages) and others will behave just like regular links to other websites. No wonder people are confused! Some search results take them away and some search results keep them on Google …even though the page looks like a different website.
The price that we pay for the instantly-opening AMP pages from the Google cache is the URL. Because we’re looking at Google’s pre-rendered copy instead of the original URL, the address bar is not pointing to the site the browser claims to be showing. Everything in the body of the browser looks like an article from The Guardian, but if I look at the URL (which is what security people have been telling us for years is important to avoid being phished), then I’ll see a domain that is not The Guardian’s.
But wait! Couldn’t Google pre-render the page at its original URL?
Yes, they could. But they won’t.
This was a point that Paul kept coming back to: trust. There’s no way that Google can trust that someone else’s URL will play by the AMP rules (no external scripts, only loading embedded content via web components, limited styles, etc.). They can only trust the copies that they themselves are serving up from their cache.
By the way, there was a joint AMP/search panel at AMP Conf with representatives from both teams. As you can imagine, there were many questions for the search team, most of which were Glomar’d. But one thing that the search people said time and again was that Google was not hosting our AMP pages. Now I don’t don’t know if they were trying to make some fine-grained semantic distinction there, but that’s an outright falsehood. If I click on a link, and the URL I get taken to is a Google property, then I am looking at a page hosted by Google. Yes, it might be a copy of a document that started life somewhere else, but if Google are serving something from their cache, they are hosting it.
This is one of the reasons why AMP feels like such a bait’n’switch to me. When it first came along, it felt like a direct competitor to Facebook’s Instant Articles and Apple News. But the big difference, we were told, was that you get to host your own content. That appealed to me much more than having Facebook or Apple host the articles. But now it turns out that Google do host the articles.
This will be the point at which Googlers will say no, no, no, you can totally host your own AMP pages …but you won’t get the benefits of pre-rendering. But without the pre-rendering, what’s the point of even having AMP pages?
Well, there is one non-cache reason to use AMP and it’s a political reason. Beleaguered developers working for publishers of big bloated web pages have a hard time arguing with their boss when they’re told to add another crappy JavaScript tracking script or bloated library to their pages. But when they’re making AMP pages, they can easily refuse, pointing out that the AMP rules don’t allow it. Google plays the bad cop for us, and it’s a very valuable role. Sarah pointed this out on the panel we were on, and she was spot on.
Alright, but what about The Guardian? They’ve already got fast pages, but they still have to create separate AMP pages if they want to get the pre-rendering benefits when they show up in Google search results. Sorry, says Google, but it’s the only way we can trust that the pre-rendered page will be truly fast.
So here’s the impasse we’re at. Google have provided a list of best practices for making fast web pages, but the only way they can truly verify that a page is sticking to those best practices is by hosting their own copy, URLs be damned.
This was the crux of Paul’s argument when he was on the Shop Talk Show podcast (it’s a really good episode—I was genuinely reassured to hear that Paul is not gung-ho about drinking the AMP Kool Aid; he has genuine concerns about the potential downsides for the web).
Initially, I accepted this argument that Google just can’t trust the rest of the web. But the more I talked to people at AMP Conf—and I had some really, really good discussions with people away from the stage—the more I began to question it.
Here’s the thing: the regular Google search can’t guarantee that any web page is actually 100% the right result to return for a search. Instead there’s a lot of fuzziness involved: based on the content, the markup, and the number of trusted sources linking to this, it looks like it should be a good result. In other words, Google search trusts websites to—by and large—do the right thing. Sometimes websites abuse that trust and try to game the system with sneaky tricks. Google responds with penalties when that happens.
Why can’t it be the same for AMP pages? Let me host my own AMP pages (maybe even host my own AMP script) and then when the Googlebot crawls those pages—the same as it crawls any other pages—that’s when it can verify that the AMP page is abiding by the rules. If I do something sneaky and trick Google into flagging a page as fast when it actually isn’t, then take my pre-rendering reward away from me.
To be fair, Google has very, very strict rules about what and how to pre-render the AMP results it’s caching. I can see how allowing even the potential for a false positive would have a negative impact on the user experience of Google search. But c’mon, there are already false positives in regular search results—fake news, spam blogs. Googlers are smart people. They can solve—or at least mitigate—these problems.
Google says it can’t trust our self-hosted AMP pages enough to pre-render them. But they ask for a lot of trust from us. We’re supposed to trust Google to cache and host copies of our pages. We’re supposed to trust Google to provide some mechanism to users to get at the original canonical URL. I’d like to see trust work both ways.
Responses
Julien Genestoux
Pretty happy with @adactio ‘s suummary of #AMP #conf. adactio.com/journal/12011
Responsive Design
“I’d like to see trust work both ways.” Some thoughts from @adactio on AMP: adactio.com/journal/12011
Chris Micek
In AMP we trust adactio.com/journal/12011
Christofer Vilander
Really interesting post by @adactio on his thoughts about AMP. adactio.com/journal/12011
John Wilander
“AMP feels like such a bait’n’switch to me.” adactio.com/journal/12011
Kevin Marks
Jeremy is spot on here - Google crawl already runs js and times pages, so validating AMP should be easy http://adactio.com/journal/12011 #indieweb
Kevin Marks
Jeremy is spot on here - Google crawl already runs js and times pages, so validating AMP should be easy adactio.com/journal/12011 #indieweb
john holt ripley
“The price that we pay for the instantly-opening AMP pages from the Google cache is the URL.”adactio.com/journal/12011
Dan Williams 🇪🇺
Feel like I better grasp what AMP is now adactio.com/journal/12011
Mark Hurrell
Jason Karns
“In AMP we trust” adactio.com/journal/12011
responsivedesign.is
Rob Weir
This is a fantastic read on AMP from @adactio adactio.com/journal/12011 It echoes a couple of concerns that I have about the protocol 1/
Rob Weir
anyhow go read the link, here it is again: adactio.com/journal/12011 8/8
Melanie Seibert
Nice explanation of AMP here. adactio.com/journal/12011
Marc Drummond
BrightonSEO
In AMP we trust buff.ly/2ngvypv @adactio write up of the AMP Conf
Edward Hart
This is a really smart piece from @adactio on AMP: adactio.com/journal/12011
tams sokari
Adactio: Journal—In AMP we trust adactio.com/journal/12011
Dorin Moise
.@adactio is spot on about AMP: trust has to work both ways “In AMP we trust” adactio.com/journal/12011 cc @pbakaus
Refresh Detroit
In AMP we trust adactio.com/journal/12011
kelvin newman
In AMP we trust buff.ly/2ngtY7c @adactio write up of the AMP Conf
Jason Grigsby, ☁4
In AMP we trust by @adactio articulates well many of the concerns I share. adactio.com/journal/12011
kay ☕
nice summary and explanations on AMP / In AMP we trust adactio.com/journal/12011
Ginpei
“Not pre-fetch, pre-render.” Wow / Adactio: Journal—In AMP we trust adactio.com/journal/12011
Jason Darwin
In AMP we trust — some interesting notes from a panel participant at Google’s recent AMP conf: adactio.com/journal/12011
john
Google says it can’t trust our self-hosted AMP pages enough to pre-render them. But they ask for a lot of trust from us. We’re supposed to trust Google to cache and host copies of our pages. We’re supposed to trust Google to provide some mechanism to users to get at the original canonical URL. I’d like to see trust work both ways.
Source: Adactio: Journal—In AMP we trust
Reading above my pay grade again.
More about Google’s AMP stuff here: Google AMP is good for mobile web users – but what about publishers? | Media | The Guardian
One of the things it does is present your content quickly without all the javascript that slows pages down, but it also seems to hijack the ULR and give the material a google one.
Given Schools should teach pupils how to spot ‘fake news’ – BBC News, it might make understanding and evaluating content even harder.
Share this:prescod
Your article states that the Google Search Engine could pre-render content without proxying it through their URL. How?
Programming Links
In AMP we trust #web #dev adactio.com/journal/12011
デカルト🌸閉→さっちゃん☆
Adactio: Journal—In AMP we trust adactio.com/journal/12011
A Book Apart
Breaking down AMP—the format, rules, and cache—from @adactio. bit.ly/2ngKOla
E4H
In AMP we trust by @adactio ow.ly/whpZ30a3xAB
Top Left Brick
Jeremy Keith on the (one-way) trust that Google AMP pages demand: adactio.com/journal/12011
HJ Chen
A really well-considered critique of AMP by @adactio #webdev adactio.com/journal/12011
Christopher Schmitt
In AMP we trust by @adactio adactio.com/journal/12011
Jonathan Schofield
“Couldn’t Google pre-render the page at its original URL? Yes, they could. But they won’t.”—@adactio on Google AMP adactio.com/journal/12011
John Clegg
In AMP we trust adactio.com/journal/12011 via @instapaper