Google AMP, and the website obesity problem Published the 2018-08-06 If you didn't live in a cave for the past few years, you may have heard about the Google AMP project. ## But what is it? The official [AMP project website](https://www.ampproject.org) advertises Google AMP as an "Open source initiative to make the web better for all". > The AMP Project is an open-source initiative aiming to make the web better for > all. The project enables the creation of websites and ads that are > consistently fast, beautiful and high-performing across devices and > distribution platforms. But if you search a bit on some tech websites about this project, it looks like everyone is freaking out against this project. ![This screenshot is the Hacker News research page, and it shows a lot of negative content around AMP](/image/hnresearch) *A small search on Hacker News, most websites clearly shows disinterest up to disgust towards this project.* ## But... What *exactly* is Google AMP? Basically, it's a set of restrictions which you must follow to be able to build an AMP-compliant page. - Only 1 external CSS source, every other CSS definition must be done in-page. - Only Google AMP as a source of javascript libraries (You can find the list of libraries [here](https://github.com/ampproject/amphtml/tree/master/src)). - A custom set of new HTML tags, and a ban on a few other HTML tags, considered too heavy, like `` or ``. Also, AMP gives a "cache" system, which is Google itself, for your pages, meaning the end reader will directly load a page from Google and not your server, meaning that in some cases, the loading speed may be better. There is a bit more to know, but that's the base things to know! Now that we know what is AMP, we can see a few advantages, like content load restrictions, which will force developers to not include ads and such, so why exactly is everyone freaking about that? There are a few regularly cited major issues with AMP: - Every page is loaded on a subdomain of Google (`https://www.google.com/amp/`), which mean that any passive user count isn't working. - To access the original version, the user is forced to remove either the `.amp` or `?amp=1` clause at the end of the AMP URL, there's no button or shortcut. - Every external resource must be loaded from a Google server endpoint (`https://cdn.ampproject.org/`), which brings some concerns for privacy. - Despite Google saying otherwise, most GoogleAMP-ready links are pushed to the top of the results, even if they aren't the most fit for the original search. - The fact that Google have such great control over Internet puts a lot of questions on "how much" is Google AMP really free. ## So. Which problems is Google AMP trying to solve, exactly? The main problems that we encounter on Internet are about load speed and page size. - Advertisement 3rd-party contents rendering page browsing painful. - Tracking systems and heavy resources slowing down page loading. - Heavy media resources taking too long to load. Those problems are so common nowadays that they were the source of a few talks and papers: - Talk about "The website obesity crisis": http://idlewords.com/talks/website_obesity.htm - Neustadt: "Against an increasingly user-hostile web": https://www.neustadt.fr/essays/against-a-user-hostile-web/ But some developers also took the time to produce humour out of it, and I think you already know those websites: - [Motherfucking Website](http://motherfuckingwebsite.com/) - [Better Motherfucking Website](http://bettermotherfuckingwebsite.com/) - [The Best Motherfucking Website](https://thebestmotherfucking.website/) ## But why are those problems even existing? The main culprits are companies and businesses wanting to milk the most out of their users. Advertisement and third-party trackers are a very common source of load which can be found of most major websites. Another heavy source of load is front-end developers wanting to use *the latest tools* to build a given website, even if it doesn't fit the website's goals. We get it, you're proud of showing that you're using the latest ReactJS/Redux/Axios setup, with a preloader, hot page swapping etc. but except if you made a web-based software (in which case, congrats on using an inadequate platform for running a software), I don't think incoming users will care about this marvel of technology. ### First culprit: Companies and businesses As stated before, it's not uncommon to see third-party resources for pretty much everything, ranging from ad services to trackers like Google Analytics. Most of those resources are plain useless (like advertisement systems) and were only chosen to try to get "a bit more" of each user's visit, without considering this user. Others can have some uses, but doesn't give anything to the user. Simply put, they slow down the user for the sake of tracking. As a demo, I want to put on the line two major news websites, Le Monde, a french news outlet, and The Washington Post, an english news outlet. Those two websites have as a main and common goal to display news articles to users. ### Le Monde > This website was already used by Neustadt in the paper cited above, "Against > an increasingly user-hostile web". Even if this website is less scary than The Washington Post, it still packs quite some load and constantly re-requests the same resource if you don't move on the page. This resource is lightweight (approximately 1kb), but is still a regularly loaded resource. If you forget this tab, you can imagine how much traffic will pass through. The video below demonstrates going to a Le Monde's article without any ad-blocker, restriction extension or cache. video:le-monde ### The Washington Post This website is even heavier than the one before, loading 5 to 6 ad blocks on each page, not counting the many scripts and images. The video below demonstrates going to a The Washington Post's article without any ad-blocker, restriction extension or cache. video:twp ### The aftermath Now, it's clear that those websites are not any kind of fancy shop or gallery, but news websites. Then I want to ask: what the fuck is any of those links giving to the user? A news outlet reader wants to *read* the news, and not wait for 10 minutes to access a page. You should take into consideration that both pages were loaded using a 200kB/s Internet speed, the average speed in France. I'll let you imagine how much time it'd take on a mobile phone. Also, the fact that TWP, which clearly gives no fuck about its end reader, was the one to advertise pushing AMP forward for the readers' sake ([source](https://www.washingtonpost.com/pr/wp/2015/10/07/the-washington-post-joins-googles-accelerated-mobile-pages-amp-initiative/)) is really humourous, or quite ironic, I don't know which is the saddest option. ### Second culprit: developers Another big trend we're currently experiencing is web developers wanting to make websites with as many new technologies as possible. We're seeing a trend in which a tool is not chosen for what it can do best but because it's hyped, new and shiny. > Two good reads on the subject are: > > - [Dear developer, the web isn't about you](https://sonniesedge.co.uk/talks/dear-developer) > - [Hype-driven development](https://medium.com/@ozgurgul/hype-driven-development-2196a8bf73fa) Instead of caring about the end users, it seems like every developer only wants to feel at ease, using any tool to leverage their work and even if using some can be beneficial, only relying on such tools will build a weak and unreliable web, and a user-hostile environment. I'd even compare such "stacks" to CMSs, allowing to build some websites in a short time, but most of the websites built with such tools aren't correctly built or optimized. ### About those "stacks" Now I want to ask any frontend web developer: "Have you forgotten the KISS principles? Or rather, do you even know what it means?". I didn't, but I'm fairly confident on the fact that most answers I'll get will be in the negative. A huge problem we're experiencing in the current front-end world, and more precisely with Javascript, is a dependency-hell phenomenon. Sure, you can build a functioning website in 30 minutes throwing every fucking npm package and just patchworking around to connect them together, but did you think about the final result? Do you think that anyone would want such a huge, heavy and deprecation-filled website in the long term? ## My conclusion on that I don't think that AMP is a good tool. Or, I don't think that AMP was created to answer the right problem. - The main goal that AMP is trying to reach is a good point. - The way they're trying to reach it is poorly done. - The fact that they *actually* need to reach this goal is scary. To conclude, I'll invite you to read a few interesting reads I've found during my web-browsing session on AMP. - For the "open web" threat,[Google AMP is not a good thing](https://danielmiessler.com/blog/google-amp-not-good-thing/) - "The web is not Google, and should not be just Google": [AMP letter](http://ampletter.org/) - ["Ask HN: What are we doing about Facebook, Google, and the closed Internet ?"](https://news.ycombinator.com/item?id=14516538) - [Talk by Peter Sunde, the ThePirateBay's founder](https://thenextweb.com/eu/2017/06/09/pirate-bay-founder-weve-lost-the-internet-its-all-about-damage-control-now/#.tnw_dfW3dKq2) - ["Please make Google AMP optional"](https://www.alexkras.com/please-make-google-amp-optional/) - ["The web looks like shit"](https://theoutline.com/post/1165/the-web-looks-like-shit)