{"action":"created","comment":{"url":"https://api.github.com/repos/sbt/website/pulls/comments/94262240","pull_request_review_id":14793207,"id":94262240,"diff_hunk":"@@ -0,0 +1,324 @@\n+---\n+out: Task-Graph.html\n+---\n+\n+  [Basic-Def]: Basic-Def.html\n+  [Scopes]: Scopes.html\n+  [Make]: https://en.wikipedia.org/wiki/Make_(software)\n+  [Ant]: http://ant.apache.org/\n+  [Rake]: https://ruby.github.io/rake/\n+\n+Task graph\n+----------\n+\n+This page explains `build.sbt` definition in more detail.\n+It assumes you've read [.sbt build definition][Basic-Def] and\n+[scopes][Scopes].\n+\n+### What's the point of the build.sbt DSL?\n+\n+As we saw before, a [build definition][Basic-Def] consists of subprojects\n+with a map called `settings` describing the subproject.\n+There's more to the story.\n+\n+What the `Setting` sequence encodes is tasks and the dependencies among them,\n+similar to [Make][Make] (1976), [Ant][Ant] (2000), and [Rake][Rake] (2003).\n+\n+#### Intro to Make\n+\n+The basic Makefile syntax looks like the following:\n+\n+```\n+target: dependencies\n+[tab] system command1\n+[tab] system command2\n+```\n+\n+Given a target (the default target is named `all`),\n+\n+1. Make checks if the target's dependencies have been built, and builds any of the dependencies that hasn't been built yet.\n+2. Make runs the system commands in order.\n+\n+Let's take a look at a `Makefile`:\n+\n+```\n+CC=g++\n+CFLAGS=-Wall\n+\n+all: hello\n+\n+hello: main.o hello.o\n+    \\$(CC) main.o hello.o -o hello\n+\n+%.o: %.cpp\n+    \\$(CC) \\$(CFLAGS) -c \\$< -o \\$@\n+```\n+\n+Running `make`, it will by default pick the target named `all`.\n+The target lists `hello` as its dependency, which hasn't been built yet, so Make will build `hello`.\n+\n+Next, Make checks if the `hello` target's dependencies have been built yet.\n+`hello` lists two targets: `main.o` and `hello.o`.\n+Once those targets are created using the last pattern matching rule,\n+only then the system command is executed to link `main.o` and `hello.o` to `hello`.\n+\n+If you're just running `make`, you can focus on what you want as the target,\n+and the exact timing and commands necessary to build the intermediate products are figured out by Make.\n+We can think of this as dependency-oriented programming, or flow-based programming.\n+Make is actually considered a hybrid system because while the DSL describes the task dependencies, the actions are delegated to system commands.\n+\n+#### Rake\n+\n+This hybridity is continued for Make successors such as Ant, Rake, and sbt.\n+Take a look at the basic syntax for Rakefile:\n+\n+```ruby\n+task name: [:prereq1, :prereq2] do |t|\n+  # actions (may reference prereq as t.name etc)\n+end\n+```\n+\n+The breakthrough made with Rake was that it used a programming language to\n+describe the actions instead of the system commands.\n+\n+#### Benefits of hybrid flow-based programming\n+\n+Rather than thinking `settings` as a key-value map,\n+a better analogy would be to think of it as a DAG (directed acyclic graph)","path":"src/reference/00-Getting-Started/07A-Task-Graph.md","position":87,"original_position":87,"commit_id":"4c358f028b7b2503ca4b82920f2125b5eabb28ec","original_commit_id":"4c358f028b7b2503ca4b82920f2125b5eabb28ec","user":{"login":"philwills","id":68329,"avatar_url":"https://avatars.githubusercontent.com/u/68329?v=3","gravatar_id":"","url":"https://api.github.com/users/philwills","html_url":"https://github.com/philwills","followers_url":"https://api.github.com/users/philwills/followers","following_url":"https://api.github.com/users/philwills/following{/other_user}","gists_url":"https://api.github.com/users/philwills/gists{/gist_id}","starred_url":"https://api.github.com/users/philwills/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philwills/subscriptions","organizations_url":"https://api.github.com/users/philwills/orgs","repos_url":"https://api.github.com/users/philwills/repos","events_url":"https://api.github.com/users/philwills/events{/privacy}","received_events_url":"https://api.github.com/users/philwills/received_events","type":"User","site_admin":false},"body":"I like the convention of introducing an acronym, by using the full name, followed by the acronym in brackets, rather than vice versa. I think it's less off putting if you're not familiar with the acronym. ","created_at":"2016-12-30T22:35:46Z","updated_at":"2016-12-30T22:51:31Z","html_url":"https://github.com/sbt/website/pull/306#discussion_r94262240","pull_request_url":"https://api.github.com/repos/sbt/website/pulls/306","_links":{"self":{"href":"https://api.github.com/repos/sbt/website/pulls/comments/94262240"},"html":{"href":"https://github.com/sbt/website/pull/306#discussion_r94262240"},"pull_request":{"href":"https://api.github.com/repos/sbt/website/pulls/306"}}},"pull_request":{"url":"https://api.github.com/repos/sbt/website/pulls/306","id":99728099,"html_url":"https://github.com/sbt/website/pull/306","diff_url":"https://github.com/sbt/website/pull/306.diff","patch_url":"https://github.com/sbt/website/pull/306.patch","issue_url":"https://api.github.com/repos/sbt/website/issues/306","number":306,"state":"open","locked":false,"title":"Update sbt Getting Started guide","user":{"login":"eed3si9n","id":184683,"avatar_url":"https://avatars.githubusercontent.com/u/184683?v=3","gravatar_id":"","url":"https://api.github.com/users/eed3si9n","html_url":"https://github.com/eed3si9n","followers_url":"https://api.github.com/users/eed3si9n/followers","following_url":"https://api.github.com/users/eed3si9n/following{/other_user}","gists_url":"https://api.github.com/users/eed3si9n/gists{/gist_id}","starred_url":"https://api.github.com/users/eed3si9n/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eed3si9n/subscriptions","organizations_url":"https://api.github.com/users/eed3si9n/orgs","repos_url":"https://api.github.com/users/eed3si9n/repos","events_url":"https://api.github.com/users/eed3si9n/events{/privacy}","received_events_url":"https://api.github.com/users/eed3si9n/received_events","type":"User","site_admin":false},"body":"This is a proposal to update the Getting Started guide a bit.\r\nI've tried to remove obsolete information and things that mostly sbt core devs care about (over-emphasis on immutability and the return types of DSL expressions); and to update some terminology (sbt shell as opposed to \"the interactive mode\").\r\n\r\nI've also added a new page that tries to explain WHY we need build.sbt not just *how* and *what*: https://github.com/sbt/website/blob/3b99844c8e975093c32f3c12417f4dbaaebe8b56/src/reference/00-Getting-Started/07A-Task-Graph.md\r\n\r\nLet me know if I'm moving towards the right direction.\r\n\r\n/cc @dwijnand, @pfn, @heathermiller, @tpolecat, @lihaoyi","created_at":"2016-12-30T07:22:31Z","updated_at":"2016-12-30T22:51:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"70521d8a87deb2d0080cae480475e607315ef8f8","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/sbt/website/pulls/306/commits","review_comments_url":"https://api.github.com/repos/sbt/website/pulls/306/comments","review_comment_url":"https://api.github.com/repos/sbt/website/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sbt/website/issues/306/comments","statuses_url":"https://api.github.com/repos/sbt/website/statuses/4c358f028b7b2503ca4b82920f2125b5eabb28ec","head":{"label":"sbt:wip/docs","ref":"wip/docs","sha":"4c358f028b7b2503ca4b82920f2125b5eabb28ec","user":{"login":"sbt","id":1158012,"avatar_url":"https://avatars.githubusercontent.com/u/1158012?v=3","gravatar_id":"","url":"https://api.github.com/users/sbt","html_url":"https://github.com/sbt","followers_url":"https://api.github.com/users/sbt/followers","following_url":"https://api.github.com/users/sbt/following{/other_user}","gists_url":"https://api.github.com/users/sbt/gists{/gist_id}","starred_url":"https://api.github.com/users/sbt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbt/subscriptions","organizations_url":"https://api.github.com/users/sbt/orgs","repos_url":"https://api.github.com/users/sbt/repos","events_url":"https://api.github.com/users/sbt/events{/privacy}","received_events_url":"https://api.github.com/users/sbt/received_events","type":"Organization","site_admin":false},"repo":{"id":19356551,"name":"website","full_name":"sbt/website","owner":{"login":"sbt","id":1158012,"avatar_url":"https://avatars.githubusercontent.com/u/1158012?v=3","gravatar_id":"","url":"https://api.github.com/users/sbt","html_url":"https://github.com/sbt","followers_url":"https://api.github.com/users/sbt/followers","following_url":"https://api.github.com/users/sbt/following{/other_user}","gists_url":"https://api.github.com/users/sbt/gists{/gist_id}","starred_url":"https://api.github.com/users/sbt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbt/subscriptions","organizations_url":"https://api.github.com/users/sbt/orgs","repos_url":"https://api.github.com/users/sbt/repos","events_url":"https://api.github.com/users/sbt/events{/privacy}","received_events_url":"https://api.github.com/users/sbt/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sbt/website","description":"The source for scala-sbt.org","fork":false,"url":"https://api.github.com/repos/sbt/website","forks_url":"https://api.github.com/repos/sbt/website/forks","keys_url":"https://api.github.com/repos/sbt/website/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sbt/website/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sbt/website/teams","hooks_url":"https://api.github.com/repos/sbt/website/hooks","issue_events_url":"https://api.github.com/repos/sbt/website/issues/events{/number}","events_url":"https://api.github.com/repos/sbt/website/events","assignees_url":"https://api.github.com/repos/sbt/website/assignees{/user}","branches_url":"https://api.github.com/repos/sbt/website/branches{/branch}","tags_url":"https://api.github.com/repos/sbt/website/tags","blobs_url":"https://api.github.com/repos/sbt/website/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sbt/website/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sbt/website/git/refs{/sha}","trees_url":"https://api.github.com/repos/sbt/website/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sbt/website/statuses/{sha}","languages_url":"https://api.github.com/repos/sbt/website/languages","stargazers_url":"https://api.github.com/repos/sbt/website/stargazers","contributors_url":"https://api.github.com/repos/sbt/website/contributors","subscribers_url":"https://api.github.com/repos/sbt/website/subscribers","subscription_url":"https://api.github.com/repos/sbt/website/subscription","commits_url":"https://api.github.com/repos/sbt/website/commits{/sha}","git_commits_url":"https://api.github.com/repos/sbt/website/git/commits{/sha}","comments_url":"https://api.github.com/repos/sbt/website/comments{/number}","issue_comment_url":"https://api.github.com/repos/sbt/website/issues/comments{/number}","contents_url":"https://api.github.com/repos/sbt/website/contents/{+path}","compare_url":"https://api.github.com/repos/sbt/website/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sbt/website/merges","archive_url":"https://api.github.com/repos/sbt/website/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sbt/website/downloads","issues_url":"https://api.github.com/repos/sbt/website/issues{/number}","pulls_url":"https://api.github.com/repos/sbt/website/pulls{/number}","milestones_url":"https://api.github.com/repos/sbt/website/milestones{/number}","notifications_url":"https://api.github.com/repos/sbt/website/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sbt/website/labels{/name}","releases_url":"https://api.github.com/repos/sbt/website/releases{/id}","deployments_url":"https://api.github.com/repos/sbt/website/deployments","created_at":"2014-05-01T20:17:33Z","updated_at":"2016-12-06T01:30:58Z","pushed_at":"2016-12-30T11:36:06Z","git_url":"git://github.com/sbt/website.git","ssh_url":"git@github.com:sbt/website.git","clone_url":"https://github.com/sbt/website.git","svn_url":"https://github.com/sbt/website","homepage":"http://www.scala-sbt.org/","size":5283,"stargazers_count":28,"watchers_count":28,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":126,"mirror_url":null,"open_issues_count":38,"forks":126,"open_issues":38,"watchers":28,"default_branch":"master"}},"base":{"label":"sbt:master","ref":"master","sha":"c30a4356599e72b5f67d274ba699e75ff603478b","user":{"login":"sbt","id":1158012,"avatar_url":"https://avatars.githubusercontent.com/u/1158012?v=3","gravatar_id":"","url":"https://api.github.com/users/sbt","html_url":"https://github.com/sbt","followers_url":"https://api.github.com/users/sbt/followers","following_url":"https://api.github.com/users/sbt/following{/other_user}","gists_url":"https://api.github.com/users/sbt/gists{/gist_id}","starred_url":"https://api.github.com/users/sbt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbt/subscriptions","organizations_url":"https://api.github.com/users/sbt/orgs","repos_url":"https://api.github.com/users/sbt/repos","events_url":"https://api.github.com/users/sbt/events{/privacy}","received_events_url":"https://api.github.com/users/sbt/received_events","type":"Organization","site_admin":false},"repo":{"id":19356551,"name":"website","full_name":"sbt/website","owner":{"login":"sbt","id":1158012,"avatar_url":"https://avatars.githubusercontent.com/u/1158012?v=3","gravatar_id":"","url":"https://api.github.com/users/sbt","html_url":"https://github.com/sbt","followers_url":"https://api.github.com/users/sbt/followers","following_url":"https://api.github.com/users/sbt/following{/other_user}","gists_url":"https://api.github.com/users/sbt/gists{/gist_id}","starred_url":"https://api.github.com/users/sbt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbt/subscriptions","organizations_url":"https://api.github.com/users/sbt/orgs","repos_url":"https://api.github.com/users/sbt/repos","events_url":"https://api.github.com/users/sbt/events{/privacy}","received_events_url":"https://api.github.com/users/sbt/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sbt/website","description":"The source for scala-sbt.org","fork":false,"url":"https://api.github.com/repos/sbt/website","forks_url":"https://api.github.com/repos/sbt/website/forks","keys_url":"https://api.github.com/repos/sbt/website/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sbt/website/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sbt/website/teams","hooks_url":"https://api.github.com/repos/sbt/website/hooks","issue_events_url":"https://api.github.com/repos/sbt/website/issues/events{/number}","events_url":"https://api.github.com/repos/sbt/website/events","assignees_url":"https://api.github.com/repos/sbt/website/assignees{/user}","branches_url":"https://api.github.com/repos/sbt/website/branches{/branch}","tags_url":"https://api.github.com/repos/sbt/website/tags","blobs_url":"https://api.github.com/repos/sbt/website/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sbt/website/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sbt/website/git/refs{/sha}","trees_url":"https://api.github.com/repos/sbt/website/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sbt/website/statuses/{sha}","languages_url":"https://api.github.com/repos/sbt/website/languages","stargazers_url":"https://api.github.com/repos/sbt/website/stargazers","contributors_url":"https://api.github.com/repos/sbt/website/contributors","subscribers_url":"https://api.github.com/repos/sbt/website/subscribers","subscription_url":"https://api.github.com/repos/sbt/website/subscription","commits_url":"https://api.github.com/repos/sbt/website/commits{/sha}","git_commits_url":"https://api.github.com/repos/sbt/website/git/commits{/sha}","comments_url":"https://api.github.com/repos/sbt/website/comments{/number}","issue_comment_url":"https://api.github.com/repos/sbt/website/issues/comments{/number}","contents_url":"https://api.github.com/repos/sbt/website/contents/{+path}","compare_url":"https://api.github.com/repos/sbt/website/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sbt/website/merges","archive_url":"https://api.github.com/repos/sbt/website/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sbt/website/downloads","issues_url":"https://api.github.com/repos/sbt/website/issues{/number}","pulls_url":"https://api.github.com/repos/sbt/website/pulls{/number}","milestones_url":"https://api.github.com/repos/sbt/website/milestones{/number}","notifications_url":"https://api.github.com/repos/sbt/website/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sbt/website/labels{/name}","releases_url":"https://api.github.com/repos/sbt/website/releases{/id}","deployments_url":"https://api.github.com/repos/sbt/website/deployments","created_at":"2014-05-01T20:17:33Z","updated_at":"2016-12-06T01:30:58Z","pushed_at":"2016-12-30T11:36:06Z","git_url":"git://github.com/sbt/website.git","ssh_url":"git@github.com:sbt/website.git","clone_url":"https://github.com/sbt/website.git","svn_url":"https://github.com/sbt/website","homepage":"http://www.scala-sbt.org/","size":5283,"stargazers_count":28,"watchers_count":28,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":126,"mirror_url":null,"open_issues_count":38,"forks":126,"open_issues":38,"watchers":28,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sbt/website/pulls/306"},"html":{"href":"https://github.com/sbt/website/pull/306"},"issue":{"href":"https://api.github.com/repos/sbt/website/issues/306"},"comments":{"href":"https://api.github.com/repos/sbt/website/issues/306/comments"},"review_comments":{"href":"https://api.github.com/repos/sbt/website/pulls/306/comments"},"review_comment":{"href":"https://api.github.com/repos/sbt/website/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sbt/website/pulls/306/commits"},"statuses":{"href":"https://api.github.com/repos/sbt/website/statuses/4c358f028b7b2503ca4b82920f2125b5eabb28ec"}}}}
{"actor":{"display_login":"philwills"}}