{"action":"created","comment":{"url":"https://api.github.com/repos/google/WebFundamentals/pulls/comments/215320755","pull_request_review_id":152554110,"id":215320755,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNTMyMDc1NQ==","diff_hunk":"@@ -0,0 +1,298 @@\n+project_path: /web/_project.yaml\n+book_path: /web/updates/_book.yaml\n+description: Learn how browser turn your code into functional website from high-level architecture to the specifics of the rendering pipeline.\n+\n+{# wf_published_on: 2018-09-05 #}\n+{# wf_updated_on: 2018-09-05 #}\n+{# wf_featured_image: /web/updates/images/inside-browser/cover.png #}\n+{# wf_featured_snippet: Learn how browser turn your code into functional website from high-level architecture to the specifics of the rendering pipeline. In part 1, we’ll take a look at core computing terminology and Chrome’s multi-process architecture. #}\n+{# wf_blink_components: N/A #}\n+\n+<style>\n+  figcaption {\n+    font-size:0.9em;\n+  }\n+</style>\n+\n+# Inside look at modern web browser (part 1) {: .page-title }\n+\n+## CPU, GPU, Memory, and multi-process architecture\n+\n+{% include \"web/_shared/contributors/kosamari.html\" %}\n+\n+In this 4-part blog series, we’ll look inside the Chrome browser from high-level architecture to \n+the specifics of the rendering pipeline. If you ever wondered how the browser turns your code into \n+a functional website, or you are unsure why a specific technique is suggested for performance \n+improvements, this series is for you. \n+\n+As part 1 of this series, we’ll take a look at core computing terminology and Chrome’s \n+multi-process architecture. \n+\n+Note: If you are familiar with the idea of CPU/GPU and process/thread you may skip to \n+[Browser Architecture](#browser-architectur).\n+\n+## At the core of the computer are the CPU and GPU\n+\n+In order to understand the environment that the browser is running, we need to understand a few \n+computer parts and what they do.\n+\n+### CPU\n+\n+<figure class=\"attempt-right\">\n+  <img src=\"../../images/inside-browser/CPU.png\" alt=\"CPU\">\n+  </a>\n+  <figcaption>\n+    Figure 1: 4 CPU cores as office worker sitting at each desk handling tasks as they come in\n+  </figcaption>\n+</figure>\n+\n+First is the **C**entral **P**rocessing **U**nit - or **CPU**. The CPU can be considered your \n+computer’s brain. A CPU core, pictured here as an office worker, can handle many different tasks \n+one by one as they come in. It can handle everything from math to art while knowing how to reply \n+to a customer call. In the past most CPUs were a single chip. A core is like another CPU living in \n+the same chip. In modern hardware, you often get more than one core, giving more computing power \n+to your phones and laptops.\n+\n+<div class=\"clearfix\"></div>\n+\n+### GPU\n+\n+<figure class=\"attempt-right\">\n+  <img src=\"../../images/inside-browser/GPU.png\" alt=\"GPU\">\n+  </a>\n+  <figcaption>\n+    Figure 2: Many GPU cores with wrench suggesting they handle a limited task\n+  </figcaption>\n+</figure>\n+\n+**G**raphics **P**rocessing **U**nit - or **GPU** is another part of the computer. Unlike CPU, \n+GPU is good at handling simple tasks but across multiple cores at the same time. As the name \n+suggests, it was first developed to handle graphics. This is why in the context of graphics \n+\"using GPU\" or \"GPU-backed\" is associated with fast rendering and smooth interaction. \n+In recent years, with GPU-accelerated computing, more and more computation is becoming possible on \n+GPU alone.\n+\n+<div class=\"clearfix\"></div>\n+\n+When you start an application on your computer or phone, the CPU and GPU are the ones powering \n+the application. Usually, applications run on the CPU and GPU using mechanisms provided by the \n+Operating System.\n+\n+<figure>\n+  <img src=\"../../images/inside-browser/hw-os-app.png\" alt=\"Hadware, OS, Application\">\n+  </a>\n+  <figcaption>\n+   Figure 3: Three layers of computer architecture. Machine Hardware at the bottom, Operating \n+   System in the middle, and Application on top.\n+</i>\n+  </figcaption>\n+</figure>\n+\n+## Executing program on Process and Thread\n+\n+<figure class=\"attempt-right\">\n+  <img src=\"../../images/inside-browser/process-thread.png\" alt=\"process and threads\">\n+  <figcaption>\n+   Figure 4: Process as a bounding box, threads as abstract fish swimming inside of a process\n+  </figcaption>\n+</figure>\n+\n+Another concept to grasp before diving into browser architecture is Process and Thread. \n+A process can be described as an application’s executing program. A thread is the one that lives \n+inside of process and executes any part of its process program. \n+\n+When you start an application, a process is created. The program might create thread(s) to help it \n+do work, but that's optional. The Operating System gives the process a \"slab\" of memory to work \n+with and all application state is kept in that private memory space. When you close the \n+application, the process also goes away and the Operating System frees up the memory.\n+<div class=\"clearfix\"></div>\n+\n+<figure>\n+  <img src=\"../../images/inside-browser/memory.svg\" alt=\"process and memory\">\n+  <figcaption>\n+   Figure 5: Diagram of a process using memory space and storing application data\n+  </figcaption>\n+</figure>\n+\n+A process can ask the Operating System to spin up another process to run different tasks. When this \n+happens, different parts of the memory are allocated for the new process. If two processes need to \n+talk, they can do so by using **I**nter **P**rocess **C**ommunication (**IPC**). Many applications \n+are designed to work this way so that if a worker process get unresponsive, it can be restarted \n+without stopping other processes which are running different parts of the application.\n+\n+<figure>\n+  <img src=\"../../images/inside-browser/workerprocess.svg\" alt=\"worker process and IPC\">\n+  <figcaption>\n+   Figure 6: Diagram of separate processes communicating over IPC\n+  </figcaption>\n+</figure>\n+\n+\n+## Browser Architecture {: #browser-architecture }\n+\n+So how is a web browser built using processes and threads? Well, it could be one process with many \n+different threads or many different processes with a few threads communicating over IPC. \n+<figure>\n+  <img src=\"../../images/inside-browser/browser-arch.png\" alt=\"browser architecture\">\n+  <figcaption>\n+   Figure 7: Different browser architectures in process/thread diagram\n+  </figcaption>\n+</figure>\n+\n+The important thing to note here is that these different architectures are implementation details. \n+There is no standard specification on how one might build a web browser. One browser’s approach may \n+be completely different from another. \n+\n+For the sake of this blog series, we are going to use Chrome’s recent architecture described in the \n+diagram below.\n+\n+At the top is the browser process coordinating with other processes that take care of different \n+parts of the application. For the renderer process, multiple processes are created and assigned to \n+each tab. Until very recently, Chrome gave each tab a process when it could; now it tries to give \n+each site its own process, including iframes (see [Site Isolation](#site-isolation)).\n+\n+<figure>\n+  <img src=\"../../images/inside-browser/browser-arch2.png\" alt=\"browser architecture\">\n+  <figcaption>\n+   Figure 8: Diagram of Chrome’s multi-process architecture. Multiple layers are shown under \n+   Renderer Process to represent Chrome running multiple Renderer Processes for each tab.\n+  </figcaption>\n+</figure>\n+\n+## Which process controls what?\n+The following table describes each Chrome process and what it controls:\n+\n+<table>\n+  <tr>\n+    <th>Process</th>\n+    <th>What it controls</th>\n+  </tr>\n+  <tr>\n+    <td>Browser</td>\n+    <td>\n+      Controls \"chrome\" part of the application including address bar, bookmarks, back and \n+      forward buttons. <br>Also handles the invisible, privileged parts of a web browser such as \n+      network requests and file access.\n+    </td>\n+  </tr>\n+  <tr>\n+    <td>Renderer</td>\n+    <td>Controls anything inside of the tab where a website is displayed.</td>\n+  </tr>\n+  <tr>\n+    <td>Plugin</td>\n+    <td>Controls any plugins used by the website, for example, flash.</td>\n+  </tr>\n+  <tr>\n+    <td>GPU</td>\n+    <td>\n+      Handles GPU tasks in isolation from other processes. It is separated into different process \n+      because GPUs handles requests from multiple apps and draw them in the same surface.\n+    </td>\n+  </tr>\n+</table>\n+\n+<figure>\n+  <img src=\"/web/updates/images/inside-browser/browserui.png\" alt=\"Chrome processes\">\n+  <figcaption>\n+   Figure 9: Different processes pointing to different parts of browser UI\n+  </figcaption>\n+</figure>\n+\n+There are even more processes like the Extension process and utility processes. If you want to see \n+how many processes are running in your Chrome, click the options menu icon︙at the top right \n+corner, select More Tools, then select Task Manager. This opens up a window with a list of \n+processes that are currently running and how much CPU/Memory they are using.\n+\n+## The benefit of Multi-Process Architecture in Chrome","path":"src/content/en/updates/2018/09/inside-browser-part1.md","position":207,"original_position":207,"commit_id":"0fe1101eb7852c281d8a331730807979aad4da1e","original_commit_id":"0fe1101eb7852c281d8a331730807979aad4da1e","user":{"login":"petele","id":718038,"node_id":"MDQ6VXNlcjcxODAzOA==","avatar_url":"https://avatars3.githubusercontent.com/u/718038?v=4","gravatar_id":"","url":"https://api.github.com/users/petele","html_url":"https://github.com/petele","followers_url":"https://api.github.com/users/petele/followers","following_url":"https://api.github.com/users/petele/following{/other_user}","gists_url":"https://api.github.com/users/petele/gists{/gist_id}","starred_url":"https://api.github.com/users/petele/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/petele/subscriptions","organizations_url":"https://api.github.com/users/petele/orgs","repos_url":"https://api.github.com/users/petele/repos","events_url":"https://api.github.com/users/petele/events{/privacy}","received_events_url":"https://api.github.com/users/petele/received_events","type":"User","site_admin":false},"body":"Should this all be lower case?","created_at":"2018-09-05T15:34:04Z","updated_at":"2018-09-05T15:39:31Z","html_url":"https://github.com/google/WebFundamentals/pull/6579#discussion_r215320755","pull_request_url":"https://api.github.com/repos/google/WebFundamentals/pulls/6579","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/google/WebFundamentals/pulls/comments/215320755"},"html":{"href":"https://github.com/google/WebFundamentals/pull/6579#discussion_r215320755"},"pull_request":{"href":"https://api.github.com/repos/google/WebFundamentals/pulls/6579"}}},"pull_request":{"url":"https://api.github.com/repos/google/WebFundamentals/pulls/6579","id":213237245,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzMjM3MjQ1","html_url":"https://github.com/google/WebFundamentals/pull/6579","diff_url":"https://github.com/google/WebFundamentals/pull/6579.diff","patch_url":"https://github.com/google/WebFundamentals/pull/6579.patch","issue_url":"https://api.github.com/repos/google/WebFundamentals/issues/6579","number":6579,"state":"open","locked":false,"title":"Add Inside look at modern web browser part 1","user":{"login":"kosamari","id":4581495,"node_id":"MDQ6VXNlcjQ1ODE0OTU=","avatar_url":"https://avatars0.githubusercontent.com/u/4581495?v=4","gravatar_id":"","url":"https://api.github.com/users/kosamari","html_url":"https://github.com/kosamari","followers_url":"https://api.github.com/users/kosamari/followers","following_url":"https://api.github.com/users/kosamari/following{/other_user}","gists_url":"https://api.github.com/users/kosamari/gists{/gist_id}","starred_url":"https://api.github.com/users/kosamari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kosamari/subscriptions","organizations_url":"https://api.github.com/users/kosamari/orgs","repos_url":"https://api.github.com/users/kosamari/repos","events_url":"https://api.github.com/users/kosamari/events{/privacy}","received_events_url":"https://api.github.com/users/kosamari/received_events","type":"User","site_admin":false},"body":"Adding new /update post\r\n\r\n**Target Live Date:** 2018-09-05\r\n\r\n- [x] This has been reviewed and approved by @Meggin and others in separate google doc\r\n- [x] I have run `npm test` locally and all tests pass.\r\n- [x] I have added the appropriate `type-something` label.\r\n- [x] I've staged the site and manually verified that my content displays correctly.\r\n\r\n**CC:** @petele\r\n","created_at":"2018-09-05T10:04:07Z","updated_at":"2018-09-05T15:39:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"15d2782a3325b3b538115dd88690a375faa886b0","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":129674476,"node_id":"MDU6TGFiZWwxMjk2NzQ0NzY=","url":"https://api.github.com/repos/google/WebFundamentals/labels/cla:%20yes","name":"cla: yes","color":"188038","default":false},{"id":258447235,"node_id":"MDU6TGFiZWwyNTg0NDcyMzU=","url":"https://api.github.com/repos/google/WebFundamentals/labels/type-Content","name":"type-Content","color":"3f51b5","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/google/WebFundamentals/pulls/6579/commits","review_comments_url":"https://api.github.com/repos/google/WebFundamentals/pulls/6579/comments","review_comment_url":"https://api.github.com/repos/google/WebFundamentals/pulls/comments{/number}","comments_url":"https://api.github.com/repos/google/WebFundamentals/issues/6579/comments","statuses_url":"https://api.github.com/repos/google/WebFundamentals/statuses/0fe1101eb7852c281d8a331730807979aad4da1e","head":{"label":"google:inside-browser-1","ref":"inside-browser-1","sha":"0fe1101eb7852c281d8a331730807979aad4da1e","user":{"login":"google","id":1342004,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDIwMDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1342004?v=4","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"repo":{"id":19249835,"node_id":"MDEwOlJlcG9zaXRvcnkxOTI0OTgzNQ==","name":"WebFundamentals","full_name":"google/WebFundamentals","owner":{"login":"google","id":1342004,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDIwMDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1342004?v=4","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/google/WebFundamentals","description":"Best practices for modern web development","fork":false,"url":"https://api.github.com/repos/google/WebFundamentals","forks_url":"https://api.github.com/repos/google/WebFundamentals/forks","keys_url":"https://api.github.com/repos/google/WebFundamentals/keys{/key_id}","collaborators_url":"https://api.github.com/repos/google/WebFundamentals/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/google/WebFundamentals/teams","hooks_url":"https://api.github.com/repos/google/WebFundamentals/hooks","issue_events_url":"https://api.github.com/repos/google/WebFundamentals/issues/events{/number}","events_url":"https://api.github.com/repos/google/WebFundamentals/events","assignees_url":"https://api.github.com/repos/google/WebFundamentals/assignees{/user}","branches_url":"https://api.github.com/repos/google/WebFundamentals/branches{/branch}","tags_url":"https://api.github.com/repos/google/WebFundamentals/tags","blobs_url":"https://api.github.com/repos/google/WebFundamentals/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/google/WebFundamentals/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/google/WebFundamentals/git/refs{/sha}","trees_url":"https://api.github.com/repos/google/WebFundamentals/git/trees{/sha}","statuses_url":"https://api.github.com/repos/google/WebFundamentals/statuses/{sha}","languages_url":"https://api.github.com/repos/google/WebFundamentals/languages","stargazers_url":"https://api.github.com/repos/google/WebFundamentals/stargazers","contributors_url":"https://api.github.com/repos/google/WebFundamentals/contributors","subscribers_url":"https://api.github.com/repos/google/WebFundamentals/subscribers","subscription_url":"https://api.github.com/repos/google/WebFundamentals/subscription","commits_url":"https://api.github.com/repos/google/WebFundamentals/commits{/sha}","git_commits_url":"https://api.github.com/repos/google/WebFundamentals/git/commits{/sha}","comments_url":"https://api.github.com/repos/google/WebFundamentals/comments{/number}","issue_comment_url":"https://api.github.com/repos/google/WebFundamentals/issues/comments{/number}","contents_url":"https://api.github.com/repos/google/WebFundamentals/contents/{+path}","compare_url":"https://api.github.com/repos/google/WebFundamentals/compare/{base}...{head}","merges_url":"https://api.github.com/repos/google/WebFundamentals/merges","archive_url":"https://api.github.com/repos/google/WebFundamentals/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/google/WebFundamentals/downloads","issues_url":"https://api.github.com/repos/google/WebFundamentals/issues{/number}","pulls_url":"https://api.github.com/repos/google/WebFundamentals/pulls{/number}","milestones_url":"https://api.github.com/repos/google/WebFundamentals/milestones{/number}","notifications_url":"https://api.github.com/repos/google/WebFundamentals/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/google/WebFundamentals/labels{/name}","releases_url":"https://api.github.com/repos/google/WebFundamentals/releases{/id}","deployments_url":"https://api.github.com/repos/google/WebFundamentals/deployments","created_at":"2014-04-28T18:45:45Z","updated_at":"2018-09-05T15:08:42Z","pushed_at":"2018-09-05T10:54:26Z","git_url":"git://github.com/google/WebFundamentals.git","ssh_url":"git@github.com:google/WebFundamentals.git","clone_url":"https://github.com/google/WebFundamentals.git","svn_url":"https://github.com/google/WebFundamentals","homepage":"https://developers.google.com/web/fundamentals","size":1588817,"stargazers_count":9451,"watchers_count":9451,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1856,"mirror_url":null,"archived":false,"open_issues_count":359,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":1856,"open_issues":359,"watchers":9451,"default_branch":"master"}},"base":{"label":"google:master","ref":"master","sha":"601a172347a04fcf88c60349f0932fbae2e0f0e4","user":{"login":"google","id":1342004,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDIwMDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1342004?v=4","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"repo":{"id":19249835,"node_id":"MDEwOlJlcG9zaXRvcnkxOTI0OTgzNQ==","name":"WebFundamentals","full_name":"google/WebFundamentals","owner":{"login":"google","id":1342004,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDIwMDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1342004?v=4","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/google/WebFundamentals","description":"Best practices for modern web development","fork":false,"url":"https://api.github.com/repos/google/WebFundamentals","forks_url":"https://api.github.com/repos/google/WebFundamentals/forks","keys_url":"https://api.github.com/repos/google/WebFundamentals/keys{/key_id}","collaborators_url":"https://api.github.com/repos/google/WebFundamentals/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/google/WebFundamentals/teams","hooks_url":"https://api.github.com/repos/google/WebFundamentals/hooks","issue_events_url":"https://api.github.com/repos/google/WebFundamentals/issues/events{/number}","events_url":"https://api.github.com/repos/google/WebFundamentals/events","assignees_url":"https://api.github.com/repos/google/WebFundamentals/assignees{/user}","branches_url":"https://api.github.com/repos/google/WebFundamentals/branches{/branch}","tags_url":"https://api.github.com/repos/google/WebFundamentals/tags","blobs_url":"https://api.github.com/repos/google/WebFundamentals/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/google/WebFundamentals/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/google/WebFundamentals/git/refs{/sha}","trees_url":"https://api.github.com/repos/google/WebFundamentals/git/trees{/sha}","statuses_url":"https://api.github.com/repos/google/WebFundamentals/statuses/{sha}","languages_url":"https://api.github.com/repos/google/WebFundamentals/languages","stargazers_url":"https://api.github.com/repos/google/WebFundamentals/stargazers","contributors_url":"https://api.github.com/repos/google/WebFundamentals/contributors","subscribers_url":"https://api.github.com/repos/google/WebFundamentals/subscribers","subscription_url":"https://api.github.com/repos/google/WebFundamentals/subscription","commits_url":"https://api.github.com/repos/google/WebFundamentals/commits{/sha}","git_commits_url":"https://api.github.com/repos/google/WebFundamentals/git/commits{/sha}","comments_url":"https://api.github.com/repos/google/WebFundamentals/comments{/number}","issue_comment_url":"https://api.github.com/repos/google/WebFundamentals/issues/comments{/number}","contents_url":"https://api.github.com/repos/google/WebFundamentals/contents/{+path}","compare_url":"https://api.github.com/repos/google/WebFundamentals/compare/{base}...{head}","merges_url":"https://api.github.com/repos/google/WebFundamentals/merges","archive_url":"https://api.github.com/repos/google/WebFundamentals/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/google/WebFundamentals/downloads","issues_url":"https://api.github.com/repos/google/WebFundamentals/issues{/number}","pulls_url":"https://api.github.com/repos/google/WebFundamentals/pulls{/number}","milestones_url":"https://api.github.com/repos/google/WebFundamentals/milestones{/number}","notifications_url":"https://api.github.com/repos/google/WebFundamentals/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/google/WebFundamentals/labels{/name}","releases_url":"https://api.github.com/repos/google/WebFundamentals/releases{/id}","deployments_url":"https://api.github.com/repos/google/WebFundamentals/deployments","created_at":"2014-04-28T18:45:45Z","updated_at":"2018-09-05T15:08:42Z","pushed_at":"2018-09-05T10:54:26Z","git_url":"git://github.com/google/WebFundamentals.git","ssh_url":"git@github.com:google/WebFundamentals.git","clone_url":"https://github.com/google/WebFundamentals.git","svn_url":"https://github.com/google/WebFundamentals","homepage":"https://developers.google.com/web/fundamentals","size":1588817,"stargazers_count":9451,"watchers_count":9451,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1856,"mirror_url":null,"archived":false,"open_issues_count":359,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":1856,"open_issues":359,"watchers":9451,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/google/WebFundamentals/pulls/6579"},"html":{"href":"https://github.com/google/WebFundamentals/pull/6579"},"issue":{"href":"https://api.github.com/repos/google/WebFundamentals/issues/6579"},"comments":{"href":"https://api.github.com/repos/google/WebFundamentals/issues/6579/comments"},"review_comments":{"href":"https://api.github.com/repos/google/WebFundamentals/pulls/6579/comments"},"review_comment":{"href":"https://api.github.com/repos/google/WebFundamentals/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/google/WebFundamentals/pulls/6579/commits"},"statuses":{"href":"https://api.github.com/repos/google/WebFundamentals/statuses/0fe1101eb7852c281d8a331730807979aad4da1e"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"petele"}}