{"action":"created","comment":{"url":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/comments/235638515","pull_request_review_id":177545864,"id":235638515,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNTYzODUxNQ==","diff_hunk":"@@ -0,0 +1,205 @@\n+---\n+title: \"Coming soon: tibble 2.0.0\"\n+slug: tibble-2.0.0-pre-announce\n+description: >\n+    The upcoming tibble 2.0.0 release has internal changes relevant to package developers who depend on tibble.\n+date: 2018-11-21\n+author: Kirill Müller, Jenny Bryan\n+photo:\n+  url: https://unsplash.com/photos/yYawh30qf28\n+  author: Gabriel Porras\n+categories: [package]\n+---\n+\n+\n+```{r setup, include = FALSE}\n+knitr::opts_chunk$set(collapse = TRUE, comment = \"#>\", error = TRUE)\n+```\n+\n+Version 2.0.0 of the [tibble package](https://tibble.tidyverse.org) is almost ready for release. Tibbles are a modern reimagining of the data frame, keeping what time has shown to be effective, and throwing out what is not, with nicer default output too! Grab the development version with:\n+\n+```{r eval = FALSE}\n+devtools::install_github(\"tidyverse/tibble\")\n+```\n+\n+We're making a pre-release announcement, because some changes require the attention of maintainers of packages that import or otherwise depend on tibble.\n+This post describes how to adapt to the next version of tibble and is also an invitation for maintainers to provide feedback before v2.0.0 is finalized and submitted to CRAN (TODO: WHERE? HOW?).\n+This blog post is aimed at package developers and those who maintain \"production\" scripts or apps. A high-level overview of new user-facing features will come in a separate blog post.\n+\n+## Reverse dependency checks\n+\n+We ran `R CMD check` for over 3000 CRAN and Bioconductor packages that depend directly or indirectly on the tibble package and compared results obtained with the CRAN versus development version of tibble.\n+We notified the maintainers of TODO: FILL IN A NUMBER? affected packages and aim for a CRAN release before Christmas, so the dust has settled in time for [rstudio::conf](https://www.rstudio.com/conference/).\n+\n+We made pull requests to implement the necessary changes in several of the most heavily downloaded packages. Based on this experience, this post highlights the problems downstream maintainers are most likely to see and how to solve them. Most fixes should be quite simple.\n+\n+For the full list of changes, features, and bug fixes, please see the [release notes](https://github.com/tidyverse/tibble/tree/master/NEWS.md).\n+\n+## Tibble construction and validation\n+\n+End users should use the `tibble()` function to construct tibbles.\n+It checks the input for consistency and makes sure that the returned tibble is valid.\n+\n+Package developers, however, can also consider the low-level `new_tibble()` constructor. Use `new_tibble()` to quickly construct a tibble from a list if you are very sure that the input is well-formed (i.e., a list of vectors of equal length).\n+This function also supports the construction of subclasses of tibble through the `class` argument.\n+\n+In the development version of tibble, the `new_tibble()` constructor is a more faithful implementation of the [design advice for S3 classes given in Advanced R](https://adv-r.hadley.nz/s3.html#s3-classes).\n+Specifically:\n+\n+- `new_tibble()` is very fast again and does very little checking itself.\n+- The new `validate_tibble()` function is responsible for validating the structure of a tibble.\n+\n+This means that the `nrow` argument to `new_tibble()` is now mandatory.\n+We are aware that this might be the single most disruptive change, but we think that any guesswork here would be detrimental to stability (especially in corner cases) and that this particular problem is very easy to fix.\n+The `nrow` argument already existed in tibble 1.4.2, so code that uses it requires no change and should continue to work.","path":"content/articles/2018-11-tibble-2.0.0-pre-announce.Rmd","position":54,"original_position":54,"commit_id":"d8a902090a52b5f214a13ceabef30847c957a1d6","original_commit_id":"d8a902090a52b5f214a13ceabef30847c957a1d6","user":{"login":"krlmlr","id":1741643,"node_id":"MDQ6VXNlcjE3NDE2NDM=","avatar_url":"https://avatars0.githubusercontent.com/u/1741643?v=4","gravatar_id":"","url":"https://api.github.com/users/krlmlr","html_url":"https://github.com/krlmlr","followers_url":"https://api.github.com/users/krlmlr/followers","following_url":"https://api.github.com/users/krlmlr/following{/other_user}","gists_url":"https://api.github.com/users/krlmlr/gists{/gist_id}","starred_url":"https://api.github.com/users/krlmlr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krlmlr/subscriptions","organizations_url":"https://api.github.com/users/krlmlr/orgs","repos_url":"https://api.github.com/users/krlmlr/repos","events_url":"https://api.github.com/users/krlmlr/events{/privacy}","received_events_url":"https://api.github.com/users/krlmlr/received_events","type":"User","site_admin":false},"body":"```suggestion\r\nThe `nrow` argument already existed in tibble 1.4.2, so code that uses it requires no change and should continue to work.\r\nThis means you can update your package independently of the tibble 2.0.0 release and do not need a versioned dependency on tibble.\r\n```","created_at":"2018-11-22T08:39:55Z","updated_at":"2018-11-22T08:59:52Z","html_url":"https://github.com/krlmlr/tidyverse.org/pull/2#discussion_r235638515","pull_request_url":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/2","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/comments/235638515"},"html":{"href":"https://github.com/krlmlr/tidyverse.org/pull/2#discussion_r235638515"},"pull_request":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/2","id":232834184,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMyODM0MTg0","html_url":"https://github.com/krlmlr/tidyverse.org/pull/2","diff_url":"https://github.com/krlmlr/tidyverse.org/pull/2.diff","patch_url":"https://github.com/krlmlr/tidyverse.org/pull/2.patch","issue_url":"https://api.github.com/repos/krlmlr/tidyverse.org/issues/2","number":2,"state":"open","locked":false,"title":"Edits to tibble pre-announcement blog post","user":{"login":"jennybc","id":599454,"node_id":"MDQ6VXNlcjU5OTQ1NA==","avatar_url":"https://avatars3.githubusercontent.com/u/599454?v=4","gravatar_id":"","url":"https://api.github.com/users/jennybc","html_url":"https://github.com/jennybc","followers_url":"https://api.github.com/users/jennybc/followers","following_url":"https://api.github.com/users/jennybc/following{/other_user}","gists_url":"https://api.github.com/users/jennybc/gists{/gist_id}","starred_url":"https://api.github.com/users/jennybc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jennybc/subscriptions","organizations_url":"https://api.github.com/users/jennybc/orgs","repos_url":"https://api.github.com/users/jennybc/repos","events_url":"https://api.github.com/users/jennybc/events{/privacy}","received_events_url":"https://api.github.com/users/jennybc/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-11-22T01:08:39Z","updated_at":"2018-11-22T08:59:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4f6fa04dc9636e7471f1ab119bb79240dcf59d5a","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/2/commits","review_comments_url":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/2/comments","review_comment_url":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/comments{/number}","comments_url":"https://api.github.com/repos/krlmlr/tidyverse.org/issues/2/comments","statuses_url":"https://api.github.com/repos/krlmlr/tidyverse.org/statuses/d8a902090a52b5f214a13ceabef30847c957a1d6","head":{"label":"tidyverse:f-tibble-2.0.0-announce","ref":"f-tibble-2.0.0-announce","sha":"d8a902090a52b5f214a13ceabef30847c957a1d6","user":{"login":"tidyverse","id":22032646,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyMDMyNjQ2","avatar_url":"https://avatars2.githubusercontent.com/u/22032646?v=4","gravatar_id":"","url":"https://api.github.com/users/tidyverse","html_url":"https://github.com/tidyverse","followers_url":"https://api.github.com/users/tidyverse/followers","following_url":"https://api.github.com/users/tidyverse/following{/other_user}","gists_url":"https://api.github.com/users/tidyverse/gists{/gist_id}","starred_url":"https://api.github.com/users/tidyverse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tidyverse/subscriptions","organizations_url":"https://api.github.com/users/tidyverse/orgs","repos_url":"https://api.github.com/users/tidyverse/repos","events_url":"https://api.github.com/users/tidyverse/events{/privacy}","received_events_url":"https://api.github.com/users/tidyverse/received_events","type":"Organization","site_admin":false},"repo":{"id":98533697,"node_id":"MDEwOlJlcG9zaXRvcnk5ODUzMzY5Nw==","name":"tidyverse.org","full_name":"tidyverse/tidyverse.org","private":false,"owner":{"login":"tidyverse","id":22032646,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyMDMyNjQ2","avatar_url":"https://avatars2.githubusercontent.com/u/22032646?v=4","gravatar_id":"","url":"https://api.github.com/users/tidyverse","html_url":"https://github.com/tidyverse","followers_url":"https://api.github.com/users/tidyverse/followers","following_url":"https://api.github.com/users/tidyverse/following{/other_user}","gists_url":"https://api.github.com/users/tidyverse/gists{/gist_id}","starred_url":"https://api.github.com/users/tidyverse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tidyverse/subscriptions","organizations_url":"https://api.github.com/users/tidyverse/orgs","repos_url":"https://api.github.com/users/tidyverse/repos","events_url":"https://api.github.com/users/tidyverse/events{/privacy}","received_events_url":"https://api.github.com/users/tidyverse/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/tidyverse/tidyverse.org","description":"Source of tidyverse.org","fork":false,"url":"https://api.github.com/repos/tidyverse/tidyverse.org","forks_url":"https://api.github.com/repos/tidyverse/tidyverse.org/forks","keys_url":"https://api.github.com/repos/tidyverse/tidyverse.org/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tidyverse/tidyverse.org/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tidyverse/tidyverse.org/teams","hooks_url":"https://api.github.com/repos/tidyverse/tidyverse.org/hooks","issue_events_url":"https://api.github.com/repos/tidyverse/tidyverse.org/issues/events{/number}","events_url":"https://api.github.com/repos/tidyverse/tidyverse.org/events","assignees_url":"https://api.github.com/repos/tidyverse/tidyverse.org/assignees{/user}","branches_url":"https://api.github.com/repos/tidyverse/tidyverse.org/branches{/branch}","tags_url":"https://api.github.com/repos/tidyverse/tidyverse.org/tags","blobs_url":"https://api.github.com/repos/tidyverse/tidyverse.org/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tidyverse/tidyverse.org/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tidyverse/tidyverse.org/git/refs{/sha}","trees_url":"https://api.github.com/repos/tidyverse/tidyverse.org/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tidyverse/tidyverse.org/statuses/{sha}","languages_url":"https://api.github.com/repos/tidyverse/tidyverse.org/languages","stargazers_url":"https://api.github.com/repos/tidyverse/tidyverse.org/stargazers","contributors_url":"https://api.github.com/repos/tidyverse/tidyverse.org/contributors","subscribers_url":"https://api.github.com/repos/tidyverse/tidyverse.org/subscribers","subscription_url":"https://api.github.com/repos/tidyverse/tidyverse.org/subscription","commits_url":"https://api.github.com/repos/tidyverse/tidyverse.org/commits{/sha}","git_commits_url":"https://api.github.com/repos/tidyverse/tidyverse.org/git/commits{/sha}","comments_url":"https://api.github.com/repos/tidyverse/tidyverse.org/comments{/number}","issue_comment_url":"https://api.github.com/repos/tidyverse/tidyverse.org/issues/comments{/number}","contents_url":"https://api.github.com/repos/tidyverse/tidyverse.org/contents/{+path}","compare_url":"https://api.github.com/repos/tidyverse/tidyverse.org/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tidyverse/tidyverse.org/merges","archive_url":"https://api.github.com/repos/tidyverse/tidyverse.org/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tidyverse/tidyverse.org/downloads","issues_url":"https://api.github.com/repos/tidyverse/tidyverse.org/issues{/number}","pulls_url":"https://api.github.com/repos/tidyverse/tidyverse.org/pulls{/number}","milestones_url":"https://api.github.com/repos/tidyverse/tidyverse.org/milestones{/number}","notifications_url":"https://api.github.com/repos/tidyverse/tidyverse.org/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tidyverse/tidyverse.org/labels{/name}","releases_url":"https://api.github.com/repos/tidyverse/tidyverse.org/releases{/id}","deployments_url":"https://api.github.com/repos/tidyverse/tidyverse.org/deployments","created_at":"2017-07-27T12:34:02Z","updated_at":"2018-11-17T12:40:31Z","pushed_at":"2018-11-22T05:39:05Z","git_url":"git://github.com/tidyverse/tidyverse.org.git","ssh_url":"git@github.com:tidyverse/tidyverse.org.git","clone_url":"https://github.com/tidyverse/tidyverse.org.git","svn_url":"https://github.com/tidyverse/tidyverse.org","homepage":"https://tidyverse.org","size":30703,"stargazers_count":43,"watchers_count":43,"language":"HTML","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":64,"mirror_url":null,"archived":false,"open_issues_count":39,"license":{"key":"cc-by-sa-4.0","name":"Creative Commons Attribution Share Alike 4.0 International","spdx_id":"CC-BY-SA-4.0","url":"https://api.github.com/licenses/cc-by-sa-4.0","node_id":"MDc6TGljZW5zZTI2"},"forks":64,"open_issues":39,"watchers":43,"default_branch":"master"}},"base":{"label":"krlmlr:f-tibble-2.0.0-announce","ref":"f-tibble-2.0.0-announce","sha":"2d35e57f81ada28193edb76542ffcf8dd9f5cce8","user":{"login":"krlmlr","id":1741643,"node_id":"MDQ6VXNlcjE3NDE2NDM=","avatar_url":"https://avatars0.githubusercontent.com/u/1741643?v=4","gravatar_id":"","url":"https://api.github.com/users/krlmlr","html_url":"https://github.com/krlmlr","followers_url":"https://api.github.com/users/krlmlr/followers","following_url":"https://api.github.com/users/krlmlr/following{/other_user}","gists_url":"https://api.github.com/users/krlmlr/gists{/gist_id}","starred_url":"https://api.github.com/users/krlmlr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krlmlr/subscriptions","organizations_url":"https://api.github.com/users/krlmlr/orgs","repos_url":"https://api.github.com/users/krlmlr/repos","events_url":"https://api.github.com/users/krlmlr/events{/privacy}","received_events_url":"https://api.github.com/users/krlmlr/received_events","type":"User","site_admin":false},"repo":{"id":115709275,"node_id":"MDEwOlJlcG9zaXRvcnkxMTU3MDkyNzU=","name":"tidyverse.org","full_name":"krlmlr/tidyverse.org","private":false,"owner":{"login":"krlmlr","id":1741643,"node_id":"MDQ6VXNlcjE3NDE2NDM=","avatar_url":"https://avatars0.githubusercontent.com/u/1741643?v=4","gravatar_id":"","url":"https://api.github.com/users/krlmlr","html_url":"https://github.com/krlmlr","followers_url":"https://api.github.com/users/krlmlr/followers","following_url":"https://api.github.com/users/krlmlr/following{/other_user}","gists_url":"https://api.github.com/users/krlmlr/gists{/gist_id}","starred_url":"https://api.github.com/users/krlmlr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krlmlr/subscriptions","organizations_url":"https://api.github.com/users/krlmlr/orgs","repos_url":"https://api.github.com/users/krlmlr/repos","events_url":"https://api.github.com/users/krlmlr/events{/privacy}","received_events_url":"https://api.github.com/users/krlmlr/received_events","type":"User","site_admin":false},"html_url":"https://github.com/krlmlr/tidyverse.org","description":"Source of tidyverse.org","fork":true,"url":"https://api.github.com/repos/krlmlr/tidyverse.org","forks_url":"https://api.github.com/repos/krlmlr/tidyverse.org/forks","keys_url":"https://api.github.com/repos/krlmlr/tidyverse.org/keys{/key_id}","collaborators_url":"https://api.github.com/repos/krlmlr/tidyverse.org/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/krlmlr/tidyverse.org/teams","hooks_url":"https://api.github.com/repos/krlmlr/tidyverse.org/hooks","issue_events_url":"https://api.github.com/repos/krlmlr/tidyverse.org/issues/events{/number}","events_url":"https://api.github.com/repos/krlmlr/tidyverse.org/events","assignees_url":"https://api.github.com/repos/krlmlr/tidyverse.org/assignees{/user}","branches_url":"https://api.github.com/repos/krlmlr/tidyverse.org/branches{/branch}","tags_url":"https://api.github.com/repos/krlmlr/tidyverse.org/tags","blobs_url":"https://api.github.com/repos/krlmlr/tidyverse.org/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/krlmlr/tidyverse.org/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/krlmlr/tidyverse.org/git/refs{/sha}","trees_url":"https://api.github.com/repos/krlmlr/tidyverse.org/git/trees{/sha}","statuses_url":"https://api.github.com/repos/krlmlr/tidyverse.org/statuses/{sha}","languages_url":"https://api.github.com/repos/krlmlr/tidyverse.org/languages","stargazers_url":"https://api.github.com/repos/krlmlr/tidyverse.org/stargazers","contributors_url":"https://api.github.com/repos/krlmlr/tidyverse.org/contributors","subscribers_url":"https://api.github.com/repos/krlmlr/tidyverse.org/subscribers","subscription_url":"https://api.github.com/repos/krlmlr/tidyverse.org/subscription","commits_url":"https://api.github.com/repos/krlmlr/tidyverse.org/commits{/sha}","git_commits_url":"https://api.github.com/repos/krlmlr/tidyverse.org/git/commits{/sha}","comments_url":"https://api.github.com/repos/krlmlr/tidyverse.org/comments{/number}","issue_comment_url":"https://api.github.com/repos/krlmlr/tidyverse.org/issues/comments{/number}","contents_url":"https://api.github.com/repos/krlmlr/tidyverse.org/contents/{+path}","compare_url":"https://api.github.com/repos/krlmlr/tidyverse.org/compare/{base}...{head}","merges_url":"https://api.github.com/repos/krlmlr/tidyverse.org/merges","archive_url":"https://api.github.com/repos/krlmlr/tidyverse.org/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/krlmlr/tidyverse.org/downloads","issues_url":"https://api.github.com/repos/krlmlr/tidyverse.org/issues{/number}","pulls_url":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls{/number}","milestones_url":"https://api.github.com/repos/krlmlr/tidyverse.org/milestones{/number}","notifications_url":"https://api.github.com/repos/krlmlr/tidyverse.org/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/krlmlr/tidyverse.org/labels{/name}","releases_url":"https://api.github.com/repos/krlmlr/tidyverse.org/releases{/id}","deployments_url":"https://api.github.com/repos/krlmlr/tidyverse.org/deployments","created_at":"2017-12-29T09:37:23Z","updated_at":"2018-05-26T16:30:29Z","pushed_at":"2018-11-22T05:39:06Z","git_url":"git://github.com/krlmlr/tidyverse.org.git","ssh_url":"git@github.com:krlmlr/tidyverse.org.git","clone_url":"https://github.com/krlmlr/tidyverse.org.git","svn_url":"https://github.com/krlmlr/tidyverse.org","homepage":"https://tidyverse.org","size":30354,"stargazers_count":1,"watchers_count":1,"language":"HTML","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"cc-by-sa-4.0","name":"Creative Commons Attribution Share Alike 4.0 International","spdx_id":"CC-BY-SA-4.0","url":"https://api.github.com/licenses/cc-by-sa-4.0","node_id":"MDc6TGljZW5zZTI2"},"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/2"},"html":{"href":"https://github.com/krlmlr/tidyverse.org/pull/2"},"issue":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/issues/2"},"comments":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/krlmlr/tidyverse.org/statuses/d8a902090a52b5f214a13ceabef30847c957a1d6"}},"author_association":"NONE"}}
{"actor":{"display_login":"krlmlr"}}