{"action":"created","comment":{"url":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/comments/28609004","id":28609004,"diff_hunk":"@@ -0,0 +1,546 @@\n+---\n+layout: default\n+project: playframework\n+title: Play Framework\n+chapter: true\n+---\n+\n+![play_full_color](images/play.png)\n+\n+# Play Framework\n+\n+###Abstract\n+This chapter describes and explains various views and perspectives of the Play Framework that together aim at providing a broad architectural overview of the system and its context. \n+The stakeholder and context view show that there are a number of very prominent stakeholders involved in the project and that the framework itself does not have many dependencies. \n+Play is in a transition to a more modular design that improves scalability and speed, while trying to maintain backwards compatibility. \n+In a view on reactivity and concurrency it is explained that Play aims at evolving to a reactive and entirely stateless web applications framework and this is partly achieved by moving the execution of HTTP requests to an event driven system. \n+Finally an overview of Play's past and future is provided from which can be concluded that these transitions are in line with proposed development roadmaps.\n+\n+**Table of Contents**\n+\n+- [Play Framework](#play-framework)\n+\t- [What is Play?](#what-is-play)\n+\t- [How to Play?](#how-to-play)\n+\t\t- [Features](#features)\n+\t\t- [Who is helping?](#who-is-helping)\n+\t\t- [What is next for me?](#what-is-next-for-me)\n+\t- [How to contribute?](#how-to-contribute)\n+\t\t- [Workflow](#workflow)\n+\t\t- [Who is merging?](#who-is-merging)\n+\t- [Who is playing?](#who-is-playing)\n+\t\t- [Stakeholders](#stakeholders)\n+\t\t- [Context View](#context-view)\n+\t- [Future[Play]](#futureplay)\n+\t\t- [Reactive](#reactive)\t\t\n+\t\t- [Evolution Perspective](#evolution-perspective)\n+\t- [Conclusion](#conclusion)\n+\n+## What is Play?\n+\n+You want to develop your next big web application? \n+Or your team asked if they please could use Scala, or Play?\n+This chapter explains what the Play Framework is,\n+what it is made of, how you can use it, how you can contribute to it, and who else is involved.\n+\n+[Play Framework](https://playframework.com/) is a web application framework for both Java and Scala.\n+Play provides you the tools to quickly and easily develop scalable, modern and fast web applications.\n+Web application frameworks come a \n+[dime](https://github.com/showcases/web-application-frameworks) \n+[a](http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks) \n+[dozen](http://www.bestwebframeworks.com/).\n+On the other hand, only a few frameworks for [type safe](https://en.wikipedia.org/wiki/Type_safety) languages like Java and Scala exist.\n+Play allows you to implement your application in Scala or Java, or both if you prefer.\n+You can utilise the power of a powerful compiler with good support from a company and a large community.\n+\n+From our experiences we found that Play should be your number one choice in a number of cases. \n+First of all, you can step right in if your development team is used to Java or Scala.\n+Play offers your team the confidence that type safe languages bring.\n+It allows large teams to work together creating large, multi-modular applications, \n+while ensuring compatibility of concurrent changes through type checking.\n+If your team wants to learn Scala, Play is the way to go: since it supports Java too,\n+you can easily convert later on, beginning your Scala journey with a small step.\n+When handling large amounts of streaming data Play has [got you covered](https://www.playframework.com/documentation/latest/Iteratees).\n+When building a real-time application (for example a chat app) Play [integrates](https://www.playframework.com/documentation/latest/ScalaAkka) nicely with [Akka](http://akka.io/)'s Actor system.\n+\n+In the following chapter we will give some background to Play: features, architecture, how you can contribute, and the stakeholders that influence its development.\n+\n+## How to Play?\n+The [documentation](https://playframework.com/documentation/latest) provides a good starting point when you want to create your first application.\n+But besides how to use Play, what features does it offer?\n+And how are these features realised?\n+\n+### Features\n+Web application frameworks generally provide a HTTP server, request parsing utilities, a way to deliver responses, caches, database access layers, templating libraries, and \n+localisation.\n+Play offers these things as well.\n+\n+The features of Play are divided over several modules.\n+All HTTP features are located in the play-server and Netty modules for example.\n+View templating is brought out of the project, in the form of [Twirl](https://github.com/playframework/twirl).\n+Some features are not modularised and live in the play-core module.\n+These include routing, MVC logic, form validation, localisation, and several utilities.\n+\n+![](images/module-diagram/modules-main.png)\n+\n+The diagram above shows most of the modules and their dependencies. \n+The test modules and Java-specific modules are excluded to provide a clearer view, but can be found in the [full diagram](images/module-diagram/modules-full.png). \n+Much of the functionality is contained in the main Play module, central in the diagram. \n+This main module depends only on these high level modules, required for basic operation:\n+\n+- [Play Iteratees](https://www.playframework.com/documentation/latest/Iteratees), contains monadic structures for generating and consuming lazy streams\n+- [Play JSON](https://www.playframework.com/documentation/latest/ScalaJson), contains JSON parsing and modification functionality\n+- Play Netty Utils, contains HTTP utilities (e.g. Cookie parsing)\n+- Build Link, contains Java interfaces to support building user code with different Scala versions than used for Play's build\n+\n+The many other modules that extend a minimal Play application. \n+For example:\n+[Caching](https://www.playframework.com/documentation/latest/ScalaCache), \n+[JDBC Databases](https://www.playframework.com/documentation/latest/ScalaDatabase), \n+different HTTP back-ends (Netty or [Akka](https://www.playframework.com/documentation/2.4.x/AkkaHttpServer)), \n+[request filtering](https://www.playframework.com/documentation/latest/ScalaHttpFilters) (Gzip, CSRF), \n+[WebServices](https://www.playframework.com/documentation/latest/ScalaWS) (contains tools for outbound connections, OAuth and OpenId).\n+\n+Modularisation is important when building applications that scale.\n+Separate teams can work on their own module, bundling functionality and reducing coupling.\n+Also, application modules can be deployed separately, this allows teams to leverage horizontal scalability. \n+Unused modules can be disabled, lowering resource usage. \n+Furthermore Scala [compilation speeds are improved](https://www.playframework.com/documentation/latest/CompilationSpeed) when creating smaller modules, for several reasons, including the parallelisation and limiting the amount of compilation steps.\n+\n+The developers of Play focussed a lot on modularising Play in the past and continue to do so today. \n+To visualise this, the following [interactive graph](http://hermanbanken.github.io/play-metrics/modules.html) shows the size in LOC of each module as a different slice of the total code base. \n+The overlaying text is dynamic and shows the commits in the currently hovered over changes.\n+\n+[![Modules over time](images/modules-over-time.png)](http://hermanbanken.github.io/play-metrics/modules.html)\n+\n+First of all we can see that lots of modules were added over time. \n+Also existing modules disappeared, as was the case with Twirl and [Anorm](https://www.playframework.com/documentation/2.1.0/ScalaAnorm). \n+The main trend is adding modules instead of extending existing modules, and sometimes modules are split into smaller sub-modules.\n+Altogether the developers have done a great job keeping modules small and focussed.\n+\n+### Who's helping?\n+As any developer will know, the best tool for learning is looking up your questions on [Stack Overflow](http://www.stackoverflow.com).\n+For well adopted frameworks, Stack Overflow provides answers for almost all questions raised by programmers.\n+\n+We found that there is a relative constant activity on Stack Overflow regarding the Play Framework.\n+We compared the activity for Play to the activity for Spring MVC. \n+Spring MVC is a Java web application framework on top of [Spring](http://nl.wikipedia.org/wiki/Spring_Framework), which exists since 2002.","path":"chapters/playframework/index.md","position":126,"original_position":126,"commit_id":"698eb493b50e67ab6c30908abb3b52199fc994d1","original_commit_id":"698eb493b50e67ab6c30908abb3b52199fc994d1","user":{"login":"rogierslag","id":2778689,"avatar_url":"https://avatars.githubusercontent.com/u/2778689?v=3","gravatar_id":"","url":"https://api.github.com/users/rogierslag","html_url":"https://github.com/rogierslag","followers_url":"https://api.github.com/users/rogierslag/followers","following_url":"https://api.github.com/users/rogierslag/following{/other_user}","gists_url":"https://api.github.com/users/rogierslag/gists{/gist_id}","starred_url":"https://api.github.com/users/rogierslag/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rogierslag/subscriptions","organizations_url":"https://api.github.com/users/rogierslag/orgs","repos_url":"https://api.github.com/users/rogierslag/repos","events_url":"https://api.github.com/users/rogierslag/events{/privacy}","received_events_url":"https://api.github.com/users/rogierslag/received_events","type":"User","site_admin":false},"body":"link to english wikipedia would be better","created_at":"2015-04-17T16:30:22Z","updated_at":"2015-04-17T16:30:22Z","html_url":"https://github.com/delftswa/delftswa.github.io/pull/4#discussion_r28609004","pull_request_url":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/comments/28609004"},"html":{"href":"https://github.com/delftswa/delftswa.github.io/pull/4#discussion_r28609004"},"pull_request":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/4","id":33558009,"html_url":"https://github.com/delftswa/delftswa.github.io/pull/4","diff_url":"https://github.com/delftswa/delftswa.github.io/pull/4.diff","patch_url":"https://github.com/delftswa/delftswa.github.io/pull/4.patch","issue_url":"https://api.github.com/repos/delftswa/delftswa.github.io/issues/4","number":4,"state":"open","locked":false,"title":"Add Play Framework chapter","user":{"login":"hermanbanken","id":791189,"avatar_url":"https://avatars.githubusercontent.com/u/791189?v=3","gravatar_id":"","url":"https://api.github.com/users/hermanbanken","html_url":"https://github.com/hermanbanken","followers_url":"https://api.github.com/users/hermanbanken/followers","following_url":"https://api.github.com/users/hermanbanken/following{/other_user}","gists_url":"https://api.github.com/users/hermanbanken/gists{/gist_id}","starred_url":"https://api.github.com/users/hermanbanken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hermanbanken/subscriptions","organizations_url":"https://api.github.com/users/hermanbanken/orgs","repos_url":"https://api.github.com/users/hermanbanken/repos","events_url":"https://api.github.com/users/hermanbanken/events{/privacy}","received_events_url":"https://api.github.com/users/hermanbanken/received_events","type":"User","site_admin":false},"body":"This PR adds the Play Framework chapter.\r\n\r\nI have kept the history, filtered for those files that are now in this branch. The `root` commit from michael could not (easily) be removed.\r\n\r\n@rogierslag I noticed that I needed to rewrite some code blocks for Jekyll to syntax highlight them. Especially multi-line code blocks with triple back-ticks seem not to work.","created_at":"2015-04-17T16:00:57Z","updated_at":"2015-04-17T16:30:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"79a9e1bcb49593605e4c75ae864c69a7c40dc5c6","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/4/commits","review_comments_url":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/4/comments","review_comment_url":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/delftswa/delftswa.github.io/issues/4/comments","statuses_url":"https://api.github.com/repos/delftswa/delftswa.github.io/statuses/698eb493b50e67ab6c30908abb3b52199fc994d1","head":{"label":"hermanbanken:master","ref":"master","sha":"698eb493b50e67ab6c30908abb3b52199fc994d1","user":{"login":"hermanbanken","id":791189,"avatar_url":"https://avatars.githubusercontent.com/u/791189?v=3","gravatar_id":"","url":"https://api.github.com/users/hermanbanken","html_url":"https://github.com/hermanbanken","followers_url":"https://api.github.com/users/hermanbanken/followers","following_url":"https://api.github.com/users/hermanbanken/following{/other_user}","gists_url":"https://api.github.com/users/hermanbanken/gists{/gist_id}","starred_url":"https://api.github.com/users/hermanbanken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hermanbanken/subscriptions","organizations_url":"https://api.github.com/users/hermanbanken/orgs","repos_url":"https://api.github.com/users/hermanbanken/repos","events_url":"https://api.github.com/users/hermanbanken/events{/privacy}","received_events_url":"https://api.github.com/users/hermanbanken/received_events","type":"User","site_admin":false},"repo":{"id":34123252,"name":"delftswa.github.io","full_name":"hermanbanken/delftswa.github.io","owner":{"login":"hermanbanken","id":791189,"avatar_url":"https://avatars.githubusercontent.com/u/791189?v=3","gravatar_id":"","url":"https://api.github.com/users/hermanbanken","html_url":"https://github.com/hermanbanken","followers_url":"https://api.github.com/users/hermanbanken/followers","following_url":"https://api.github.com/users/hermanbanken/following{/other_user}","gists_url":"https://api.github.com/users/hermanbanken/gists{/gist_id}","starred_url":"https://api.github.com/users/hermanbanken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hermanbanken/subscriptions","organizations_url":"https://api.github.com/users/hermanbanken/orgs","repos_url":"https://api.github.com/users/hermanbanken/repos","events_url":"https://api.github.com/users/hermanbanken/events{/privacy}","received_events_url":"https://api.github.com/users/hermanbanken/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/hermanbanken/delftswa.github.io","description":"The final site for the chapters of the students of IN4315 of Delft University of Technology","fork":true,"url":"https://api.github.com/repos/hermanbanken/delftswa.github.io","forks_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/forks","keys_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/teams","hooks_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/hooks","issue_events_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/events","assignees_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/tags","blobs_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/languages","stargazers_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/stargazers","contributors_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/contributors","subscribers_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/subscribers","subscription_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/subscription","commits_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/merges","archive_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/downloads","issues_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/labels{/name}","releases_url":"https://api.github.com/repos/hermanbanken/delftswa.github.io/releases{/id}","created_at":"2015-04-17T15:08:27Z","updated_at":"2015-04-17T15:57:52Z","pushed_at":"2015-04-17T15:57:52Z","git_url":"git://github.com/hermanbanken/delftswa.github.io.git","ssh_url":"git@github.com:hermanbanken/delftswa.github.io.git","clone_url":"https://github.com/hermanbanken/delftswa.github.io.git","svn_url":"https://github.com/hermanbanken/delftswa.github.io","homepage":"http://delftswa.github.io","size":0,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"delftswa:master","ref":"master","sha":"821fe719a30d4cef8f7f886d3d9ee5dddbc171c6","user":{"login":"delftswa","id":4194953,"avatar_url":"https://avatars.githubusercontent.com/u/4194953?v=3","gravatar_id":"","url":"https://api.github.com/users/delftswa","html_url":"https://github.com/delftswa","followers_url":"https://api.github.com/users/delftswa/followers","following_url":"https://api.github.com/users/delftswa/following{/other_user}","gists_url":"https://api.github.com/users/delftswa/gists{/gist_id}","starred_url":"https://api.github.com/users/delftswa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/delftswa/subscriptions","organizations_url":"https://api.github.com/users/delftswa/orgs","repos_url":"https://api.github.com/users/delftswa/repos","events_url":"https://api.github.com/users/delftswa/events{/privacy}","received_events_url":"https://api.github.com/users/delftswa/received_events","type":"Organization","site_admin":false},"repo":{"id":33928133,"name":"delftswa.github.io","full_name":"delftswa/delftswa.github.io","owner":{"login":"delftswa","id":4194953,"avatar_url":"https://avatars.githubusercontent.com/u/4194953?v=3","gravatar_id":"","url":"https://api.github.com/users/delftswa","html_url":"https://github.com/delftswa","followers_url":"https://api.github.com/users/delftswa/followers","following_url":"https://api.github.com/users/delftswa/following{/other_user}","gists_url":"https://api.github.com/users/delftswa/gists{/gist_id}","starred_url":"https://api.github.com/users/delftswa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/delftswa/subscriptions","organizations_url":"https://api.github.com/users/delftswa/orgs","repos_url":"https://api.github.com/users/delftswa/repos","events_url":"https://api.github.com/users/delftswa/events{/privacy}","received_events_url":"https://api.github.com/users/delftswa/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/delftswa/delftswa.github.io","description":"The final site for the chapters of the students of IN4315 of Delft University of Technology","fork":false,"url":"https://api.github.com/repos/delftswa/delftswa.github.io","forks_url":"https://api.github.com/repos/delftswa/delftswa.github.io/forks","keys_url":"https://api.github.com/repos/delftswa/delftswa.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/delftswa/delftswa.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/delftswa/delftswa.github.io/teams","hooks_url":"https://api.github.com/repos/delftswa/delftswa.github.io/hooks","issue_events_url":"https://api.github.com/repos/delftswa/delftswa.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/delftswa/delftswa.github.io/events","assignees_url":"https://api.github.com/repos/delftswa/delftswa.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/delftswa/delftswa.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/delftswa/delftswa.github.io/tags","blobs_url":"https://api.github.com/repos/delftswa/delftswa.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/delftswa/delftswa.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/delftswa/delftswa.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/delftswa/delftswa.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/delftswa/delftswa.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/delftswa/delftswa.github.io/languages","stargazers_url":"https://api.github.com/repos/delftswa/delftswa.github.io/stargazers","contributors_url":"https://api.github.com/repos/delftswa/delftswa.github.io/contributors","subscribers_url":"https://api.github.com/repos/delftswa/delftswa.github.io/subscribers","subscription_url":"https://api.github.com/repos/delftswa/delftswa.github.io/subscription","commits_url":"https://api.github.com/repos/delftswa/delftswa.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/delftswa/delftswa.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/delftswa/delftswa.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/delftswa/delftswa.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/delftswa/delftswa.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/delftswa/delftswa.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/delftswa/delftswa.github.io/merges","archive_url":"https://api.github.com/repos/delftswa/delftswa.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/delftswa/delftswa.github.io/downloads","issues_url":"https://api.github.com/repos/delftswa/delftswa.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/delftswa/delftswa.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/delftswa/delftswa.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/delftswa/delftswa.github.io/labels{/name}","releases_url":"https://api.github.com/repos/delftswa/delftswa.github.io/releases{/id}","created_at":"2015-04-14T11:35:58Z","updated_at":"2015-04-17T16:25:49Z","pushed_at":"2015-04-17T16:25:48Z","git_url":"git://github.com/delftswa/delftswa.github.io.git","ssh_url":"git@github.com:delftswa/delftswa.github.io.git","clone_url":"https://github.com/delftswa/delftswa.github.io.git","svn_url":"https://github.com/delftswa/delftswa.github.io","homepage":"http://delftswa.github.io","size":0,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":1,"mirror_url":null,"open_issues_count":3,"forks":1,"open_issues":3,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/4"},"html":{"href":"https://github.com/delftswa/delftswa.github.io/pull/4"},"issue":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/issues/4"},"comments":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/delftswa/delftswa.github.io/statuses/698eb493b50e67ab6c30908abb3b52199fc994d1"}}}}