Closed bretsw closed 2 years ago
:wave: @bretsw @jrosen48! Any update since your meeting? Thank you!
@maelle, we're moving forward slowly but surely. @jrosen48 and I have scheduled regular meetings to work on the updates together.
Thank you for the updates! Do not hesitate to ask for help if needed.
:wave: @bretsw @jrosen48! Any new update on your progress?
We're getting there! Fixed all the VCR and testing issues and have updated quite a bit of the requested explanations. Still a little bit to do, but we're making significant progress.
Awesome, thanks for the update!
@maelle, thank you for continuing to check in, and thank you for bearing with us!
:wave: @bretsw @jrosen48! Any new update on your progress? :smile_cat:
@maelle, we are so close to being done!!! All the code has been updated. We just have a few more place to refine explanations in the introductory text. I'm hoping to submit our response to reviewers in the next couple of days.
@maelle, @llrs, and @marionlouveaux, thank you for you patience. Despite our silence, @jrosen48 and I have been hard at work this fall making the requested updates. We are ready for you to take a look, whenever it is convenient for you all (acknowledging that it has taken us a very long time on our end). Thank you for your comments and suggestions; {tidytags} is a much better package now because of them.
I'll leave our complete response in the next comment.
Thank you for this feedback. In response, we have noted that the first three key tasks (previously pain points) are required, while the fourth key task is optional and required only for geocoding. We are amenable to adding titles and an index; can you help us to understand what you mean by these? We think there is a title for the “Getting started with tidytags” vignette and there are also section headings for the vignette.
Thank you for pointing out this oversight. We mistakenly did not list all four of the key tasks (previously pain points), instead listing only three. We have corrected this in the vignette. Also, as noted here in and in our response to the above feedback, we have renamed the “pain points” key tasks to more accurately describe their nature.
However, most of the code chunks of the vignette are not run (as reported by BiocCheck):
Thank you for pointing this out. We acknowledge this but note that this is a function of the nature of this vignette on getting started with the package. We also note that there are extensive tests that ensure that the functionality of the package is sound, and so did not yet make any changes in response to this feedback.
The vignette does compile on real data, it has just been precomputed following this guide: https://ropensci.org/blog/2019/12/08/precompute-vignettes/. This means that we do not have to wait for a lengthy compilation each time we rebuild the website.
Thank you for this feedback. Indeed, the process for obtaining a key for the Google Sheets API had changed. We have a) updated this section of the Getting Started vignette and b) added screenshots to facilitate the process of creating and storing (within R/RStudio) this key.
Thank you for pointing this out. As noted above, we have labeled this as optional and required only for geocoding.
Thank you for pointing this out. This is likely because some users have deleted their accounts or tweets in the period in between us creating this vignette and your access to the data. We have added the following note to the vignette:
“Note that this number of rows is at the point at which we collected the data; the number may differ when you carry out this same search.”
example_domains <- get_url_domain(example_urls)
Thank you for pointing this out. We have added this note to the vignette: “Please note that these two packages are required to use this function (but they are not installed automatically when {tidytags} is installed.”
rlang::is_installed(longurl) or requireNamespace("longurl", quietly = TRUE)
).Thank you for this suggestion. We have made an addition above where the function requiring {longurl} is used to test whether it can be loaded (and to share with users how to install the package if it is not).
Thank you for pointing this out. We should have clarified that our use of Google Sheets is unidirectional: We use TAGS to access data, but process the data in R, but do not plan for users of the package to update the TAGS sheet with the processed data. We added a note to the vignette describing this and noting that users could push data to the Google Sheet or store it as a CSV (among other options).
add_users_data
, I think it is not needed.Thank you for pointing this out; we have removed the name of the function from the description.
We have added a brief comment to the documentation for the following functions: read_tags(), pull_tweet_data(), lookup_many_tweets(), geocode_tags(), get_upstream_tweets(), add_users_data()
This is the comment we added:
Thank you for pointing this out. We have added a BugReports field to the DESCRIPTION.
Thank you for pointing this out. We have made several changes to address this comment. First, we have changed some of the language we use to justify the need for the package to not overstate the degree to which the package is accessible to novices (though, as we note next, we think the package is fundamentally accessible to relative newcomers to R). Second, we have added extensive documentation-many of these additions in response to reviewer feedback-especially in the ‘Getting started with tidytags’ vignette as well as in the paper accompanying the package. Lastly, while we have made the two aforementioned changes and thank the reviewers for these suggestions that have improved our package, we note that we still think the package can be used by those relatively new to R in a way that is easier than other extant approaches for accessing Twitter data.
We have added DOI URLs for each reference in our .bib file.
"
on the yaml heading of paper.md that prevented viewing the paper.Thank you for catching this typo. We have corrected it.
domain4
not equal to "npr.org", on the browser I get asked for cookie consent on the browser, when run locally, outside testthat or vcr, I get the url of choice.npr.org.This a persistent bug in {vcr} that turned out to be tricky to resolve (see https://github.com/ropensci/vcr/issues/220). We have removed the two skipped tests that depended on this.
We have updated all tests, and all are currently passing locally and in GitHub CI.
We have not seen an error like this on our end.
This is specifically related to the error in 1.16, a persistent bug in {vcr} that turned out to be tricky to resolve (see https://github.com/ropensci/vcr/issues/220). We have removed the two skipped tests that depended on this.
We have added name and ORCID to DESCRIPTION file (https://github.com/llrs).
At the time of our revisions (November 2021), {rtweet} has not yet been updated; it is still version 0.7.0.
Please see our response to comment 1.9.
From a more technical point of view, I have some comments about the code and the package:
Thank you for catching this. We have corrected all lines longer than 80 characters and checked with goodpractice::goodpractice().
We have removed gargle from the Imports list. The gargle package is mentioned in the “Getting started with tidytags” vignette, but the package is not called anywhere in tidytags. However, because readr is used extensively throughout the testthat scripts, so we have moved readr to the Suggests list.
get_char_tweet_ids
function could be improved, with only one argument if it is a data.frame then extract the status_id and get the ID via id_str. If it is an url you can just extract the last numbers with gsub("https?\\://twitter.com\\/.+/statuses/", "", df$status_url)
, no need to modify the data.frame and then extract the vector again.Thank you for this suggestion. We have updated the get_char_tweet_ids() function and shortened the code significantly.
process_tweets
you can simplify the is_self_reply to ifelse(.data$is_reply & .data$user_id == .data$reply_to_user_id, TRUE, FALSE)
.Thank you for this suggestion. We have updated the function accordingly.
get_upstream_replies
the examples are not informative, as there are no replies to get data from on the example dataset. You make multiple calls to pull_tweet_data
, some of them might be unnecessary. The process_tweets
can be called just once at the end instead of multiple times and on each loop run. This should speed up the process. Also, if there are at most 90000 tweets taken from each run, then you can estimate the number of iterations needed and inform the user. This might make the wait easier. Perhaps it would be better to use lookup_many tweets
as it does a similar process. However, users might hit the rate limit and I don't see any information being passed to the user regarding this.Thank you for pointing out this oversight. We have updated the example for get_upstream_replies()
to include replies in the example dataset. We also updated the name of this function to get_upstream_tweets()
to more accurately describe the returned data (i.e., not all the tweets retrieved from “upstream” the reply thread will also be replies; some will just be regular tweets).
We also changed the function so that process_tweets()
is not called at all.
To make the code more readable, we created an internal function flag_unknown_upstream()
and added tests.
Finally, we added a note in the function documentation that it is impossible to know in advance how far “upstream” you can trace back a reply thread, and that running get_upstream_tweets()
might take a while.
create_edgelist
, it calls process_tweets
and also get_replies
, get_retweets
, get_quotes
, get_mentions
which they call process_tweets
too. Perhaps some internal functions could be created to avoid calling process_tweets multiple times on the same data.We have changed the names of these functions so that they do not mask functions imported from {rtweet}. For instance, get_replies()
is now create_replies_edgelist()
.
Rather than creating an internal function, we simply removed the redundant process_tweets()
that occurred within create_edgelist()
. We do need to keep process_tweets()
within the create_
functions because they can serve as standalone functions, not just internal functions for the more expansive create_edgelist()
.
In addition, we have updated create_edgelist()
altogether to accept an input parameter of type
. See comments 2.9 and 2.47 for more details.
Thank you for pointing this out. We have made several revisions to the Overview section of the README to better introduce the roles of TAGS, rtweet, and opencage. The section now reads as follows:
The purpose of {tidytags} is to make the collection of Twitter data more accessible and robust. {tidytags} retrieves tweet data collected by a Twitter Archiving Google Sheet (TAGS), gets additional metadata from Twitter via the {rtweet} package, and from OpenCage using the opencage package, and provides additional functions to facilitate a systematic yet flexible analyses of data from Twitter. TAGS is based on Google spreadsheets. A TAGS tracker continuously collects tweets from Twitter, based on predefined search criteria and collection frequency.
In short, {tidytags} first uses TAGS to easily collect tweet ID numbers and then uses the R package {rtweet} to re-query the Twitter API to collect additional metadata.
{tidytags} also introduces functions developed to facilitate systematic yet flexible analyses of data from Twitter. It also interfaces with several other packages, including the opencage package, to geocode the locations of Twitter users based on their biographies.
Two vignettes illustrate the setup and use of the package:
Thank you for catching this; we have added examples to lookup_many_tweets(). Note that we have not included an example of a dataset of more than 90,000 tweets because this would be prohibitively large.
BugReports
Thank you, we have added this to the DESCRIPTION.
See our response to comments 1.16-1.19. We have updated all tests and found that all are passing for us locally and in GitHub CI.
We have added name and ORCID to DESCRIPTION file (https://github.com/marionlouveaux).
Thank you for this feedback. We received similar feedback about the setup from the other reviewer, as well, and have made some changes to the setup, namely, emphasizing what is strictly necessary to do and what is optional for particular functionality (see Reviewer 1, Comment and Response 1). Also, as noted in a response to a comment below (18), we have added a checklist to facilitate the process of getting started with the package.
Thank you for pointing this out. We have added information from the paper to the Overview section of the README (as also noted in response to comment 1).
We have removed these four specialized functions. Instead, we created a new function filter_by_tweet_type()
with input parameter type
that can be set to reply, retweet, quote, or mention. We then updated create_edgelist()
to call filter_by_tweet_type()
, meaning that create_edgelist()
accepts an input parameter type
that can be set to reply, retweet, quote, or mention, but type
defaults to “all”.
See our response to comments 1.16-1.19 and 2.4. We have updated all tests and found that all are passing for us locally and in GitHub CI.
Local installation took several minutes (approx. 3 to 5 minutes) because there is many dependencies. On my machine, it had to install 35 packages
3 dependencies: ‘cli’, ‘lubridate’, ‘pillar’
Thank you for this suggestion - we have made this addition.
See our response to comments 1.16-1.19, 2.4, and 2.10. We have updated all tests and found that all are passing for us locally and in GitHub CI.
An HTTP request has been made that vcr does not know how to handle: POST https://api.twitter.com/1.1/statuses/lookup.json?id=...............
See our response to comments 1.16-1.19, 2.4, 2.10, and 2.14. We have updated all tests and found that all are passing for us locally and in GitHub CI.
We are not sure why this request is throwing and error for you. As a note, the string following “lookup.json?id=...” contains the tweet IDs, not API keys.
Test files with long code lines
Thank you for checking this. We have corrected all long code lines. (See comment 1.24)
We have updated the subtitle of the package to be “Importing and Analyzing Twitter Data Collected with Twitter Archiving Google Sheets”.
Thank you for these suggestions. We have made extensive changes to the ‘Overview’ section of the README in response to this comment and other comments requesting additional detail about the package. Also, we note these changes in our response to comment 1 (above).
"To use tidytags at its full capacity, you should have the following things set up:
Thank you for this suggestion. We have added this to the README:
To use tidytags at its full capacity, you should have the following things set up:
Thank you for catching this typo. We have corrected it.
Thank you for catching these typos. We have corrected them.
We have added a brief demonstration of the two core tidytags functions, get_tags()
and pull_tweet_data()
. Beyond these two functions, we point users to our detailed vignettes.
It also encourages to add a paragraph about how to cite the package, which is also missing. I tried citation(package = "tidytags").
Thank you for catching this. We have added a properly formatted CITATION file.
It gives a warning because there is no date field in description.
We are likely just going to have to live with this warning for now, until the CRAN version of tidytags is released. I looked into this extensively, but this comment seems to sum up the prevailing sentiment on not dealing with this warning: https://github.com/r-lib/usethis/issues/806
In the end, the RopenSci development guide also suggests to organize the badges on the README in a table, when you have many badges, which, in my opinion, is the case here.
We have reorganized the badges into a table, following the example of the {drake} package (https://docs.ropensci.org/drake/).
Thank you for catching this typo. We have corrected it.
Thank you, we have added this sentence under the “Usage” header in the README.
Thank you for this suggestion. We have updated our language to match your suggestion.
We addressed similar concerns in response to comment 1.25. We have removed {covr}, {gargle}, {roxygen2}, {tidyverse}, {usethis}, and {webmockr} from DESCRIPTION.
Thank you for catching these typos. We have corrected them.
We addressed a similar concern in our response to comment 1.29. We have changed the names of these functions so that they do not mask functions imported from {rtweet}. For instance, get_replies()
is now create_replies_edgelist()
.
Typo in “See Also Compare to other tidtags functions such as get_replies(), get_retweets(), get_quotes(), and create_edgelist().”
Thank you, we have corrected this typo.
Thank you for catching this. We have expanded the imported example to the full dataset, not just 10 rows. These examples now return edgelists with content.
We addressed a similar concern in our response to comment 1.29 and 2.27. We have changed the names of these functions so that they do not mask functions imported from {rtweet}. For instance, get_replies()
is now create_replies_edgelist()
.
See our comments on 1.28. We have removed the call to process_tweets()
in order to speed up the function.
Thank you for catching this; we have added examples to lookup_many_tweets(). Note that we have not included an example of a dataset of more than 90,000 tweets because this would be prohibitively large.
Documentation of pull_tweet_data: I would add an intermediate line to avoid repetition of code in the examples like the example below:
example_url <- "18clYlQeJOc6W5QRuSlJ6_v3snqKJImFhU42bRkM_OX8"
tags_content <- read_tags(example_url)
pull_tweet_data(tags_content[1:10, ])
Thank you for this suggestion for cleaning up the code in this example. We have made the suggested change.
We have added comments to and simplified the pull_tweet_data()
examples.
We left a comment in the example explaining why sometimes fewer rows than expected are returned: “Specifying the parameter n clarifies how many statuses to look up, but the returned values may be less than n because some statuses may have been deleted or made protected since the TAGS tracker originally recorded them.”
Thank you for pointing out the distinction between “tweet” and “status”. We do want to follow the language of the Twitter API and {rtweet}, so we have updated our language to use “statuses” rather than “tweets” in most cases.
Thank you for this suggestion. We have bolded key terms in both vignettes.
Thank you. We have added this to the list in this paragraph and have also added this checklist to the README.
We have made this change.
We have made this change.
We apologize for this confusion; as noted in our response to Reviewer #1, the Google Sheets authentication process has changed. We have a) updated this section of the Getting Started vignette and b) added screenshots to facilitate the process of creating and storing (within R/RStudio) this key.
Related to comment #39 above, we have made changes to this section to address this issue.
Thank you for this suggestion. For each of the pain points, we have added code that users can run to ensure that they have set up the components required to use the package successfully.
Thank you, we have created a hyperlink to this reference.
Thank you for catching this confusing language. We have made the suggested change.
Thank you for pointing this out. The vignette does compile on real data, but it is precomputed following the guide here (https://ropensci.org/blog/2019/12/08/precompute-vignettes/) because it takes a long time to compute. We have added this language to the vignette:
When this vignette was run on
r format(Sys.Date(), "%b %d %y")
, the TAGS tracker had collected...
We have added a full workflow for the package’s functions to the README. We think this will significantly help users to understand how the package’s functions work together; thank you for this suggestion.
Thank you. We have removed .DS_Store and applied usethis::git_vaccinate().
As noted in response to comment 2.9, we have completely revamped create_edgelist()
to accept an input parameter of type
, and these old functions have been removed.
We have added a new function, lookup_many_users()
as well as added testing coverage. We then updated the add_users_data()
function accordingly.
Thank you for this feedback. We considered and discussed extensively whether to add additional checks for input data type and whether keys exist. We agree that this would be informative for users. But, we think the changes that we made in response to comment 45 (above) serve as an alternative way to achieve the same goal and so have decided to not add further input data checks or checks for the existence of the keys at this time.
Thank you for catching this. We have added this line as suggested.
Hi @bretsw I've read the response but I probably won't have time to look into the package and replies with detail until a couple of weeks from now.
@maelle Can we use the @ropensci-review-bot
bot now on this issue? Just to check the package online and not only on my machine (I might forget some of the checks)
Thank you, @llrs, for taking a look so quickly at our response. I completely understand needing a few weeks to really get into it. Take your time! Thank you for your patience.
@llrs: @maelle is taking a well-deserved break, but i'll call the bot checks for you
@ropensci-review-bot check package
Thanks, about to send the query.
git hash: b82142db
Important: All failing checks above must be addressed prior to proceeding
Package License: MIT + file LICENSE
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
The package has: - code in R (100% in 6 files) and - 2 authors - 2 vignettes - no internal data file - 9 imported packages - 12 exported functions (median 17 lines of code) - 16 non-exported functions in R (median 20 lines of code) --- Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used: - `loc` = "Lines of Code" - `fn` = "function" - `exp`/`not_exp` = exported / not exported The final measure (`fn_call_network_size`) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile. |measure | value| percentile|noteworthy | |:------------------------|-------:|----------:|:----------| |files_R | 6| 35.8| | |files_vignettes | 2| 83.0| | |files_tests | 28| 97.1| | |loc_R | 320| 30.3| | |loc_vignettes | 280| 76.9| | |loc_tests | 1054848| 100.0|TRUE | |num_vignettes | 2| 87.5| | |n_fns_r | 28| 29.3| | |n_fns_r_exported | 12| 48.2| | |n_fns_r_not_exported | 16| 24.5| | |n_fns_per_file_r | 2| 34.4| | |num_params_per_fn | 2| 10.7| | |loc_per_fn_r | 18| 68.0| | |loc_per_fn_r_exp | 18| 43.5| | |loc_per_fn_r_not_exp | 20| 77.1| | |rel_whitespace_R | 14| 28.6| | |rel_whitespace_vignettes | 71| 94.2| | |rel_whitespace_tests | 0| 86.9| | |doclines_per_fn_exp | 32| 37.8| | |doclines_per_fn_not_exp | 0| 0.0|TRUE | |fn_call_network_size | 18| 36.9| | ---
Click to see the interactive network visualisation of calls between objects in package
goodpractice
and other checks#### 3a. Continuous Integration Badges [![https\:\/\/github](https://github.com/ropensci/software-review/issues/382">
I've removed the .DS_Store files (and added this to .gitignore). I've fixed the lines longer than 80 characters. I've added the 'codemeta.json' file.
Should be ready for @ropensci-review-bot check package again.
@ropensci-review-bot check package
Thanks, about to send the query.
Error (500). The editorcheck service is currently unavailable
git hash: 943a3522
Package License: MIT + file LICENSE
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
The package has: - code in R (100% in 6 files) and - 2 authors - 2 vignettes - no internal data file - 8 imported packages - 12 exported functions (median 17 lines of code) - 16 non-exported functions in R (median 20 lines of code) --- Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used: - `loc` = "Lines of Code" - `fn` = "function" - `exp`/`not_exp` = exported / not exported The final measure (`fn_call_network_size`) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile. |measure | value| percentile|noteworthy | |:------------------------|-------:|----------:|:----------| |files_R | 6| 40.3| | |files_vignettes | 2| 85.7| | |files_tests | 28| 97.7| | |loc_R | 323| 34.5| | |loc_vignettes | 280| 61.3| | |loc_tests | 1054848| 100.0|TRUE | |num_vignettes | 2| 89.2| | |n_fns_r | 28| 38.0| | |n_fns_r_exported | 12| 51.3| | |n_fns_r_not_exported | 16| 34.3| | |n_fns_per_file_r | 2| 41.9| | |num_params_per_fn | 2| 11.9| | |loc_per_fn_r | 18| 54.7| | |loc_per_fn_r_exp | 18| 42.0| | |loc_per_fn_r_not_exp | 20| 63.0| | |rel_whitespace_R | 14| 32.6| | |rel_whitespace_vignettes | 71| 84.3| | |rel_whitespace_tests | 0| 69.2| | |doclines_per_fn_exp | 32| 38.2| | |doclines_per_fn_not_exp | 0| 0.0|TRUE | |fn_call_network_size | 18| 44.2| | ---
Click to see the interactive network visualisation of calls between objects in package
goodpractice
and other checks#### 3a. Continuous Integration Badges [![https\:\/\/github](https://github.com/ropensci/software-review/issues/382">
I'm testing it now with R 4.1.2
1.1
There a missing [
on the first line of the Key task 1. I'm not sure now what I meant but I find the titles and indices of the vignettes are now appropriate Note that there are some links related to the other viggnette that are hardcoded. It is usually recommended to look up vignette("setup", package = "tidytags")
.
Also note that users don't see the options used on the code chunks so mentions to " (notice that eval = FALSE)." (Found on the last text line before pull_tweet_data) are not useful for the reader without accessing the source of the vignette.
1.2 The vignettes are now very clear
1.3 As you wish
1.4 Much better documented, thanks.
1.5 Thanks, was the discussion about price keep on purpose?
1.6 Great!
1.7
get_url_domain
uses longurl package without checking if it is installed, either add it to imports or check via if (requireNamespace("longurl", quiet = TRUE) ) {...}
. geocode_tags
uses unconditional opencage as you said it is optional I would use if (requireNamespace("longurl", quiet = TRUE) ) {...}
. Check that other suggested packages are used conditionally (I think mapview is also used on the vignette but not checked if installed). So that the users receive a friendly message when using the function without the package (not only on the vignette [where I would delete this information])
1.8
I couldn't find any requireNamespace
on the package.
1.9 Thanks, that will help the users.
1.13 I'm sure the changes made will help all R users using the package.
1.21 This comment was meant as a heads up of the work that will mean to maintain a package that depends on 3 different APIs an the upcomming changes on rtweet, not that the changes on rtweet could affect the review.
1.28
If users have not set up correctly the rtweet account, they don't receive any information and the tmp_df
from get_upstream_tweets
example is empty, resulting on an error when using get_upstream_tweets
. Maybe adding a check on the function to see if some tweets were collected might be helpful.
Many thanks for all the changes.
Hours spend: ~3 (Is still needed to report this?)
@llrs thank you for your quick turnaround on your follow-up review! I'm unplugged this week, but I will clean up these remaining few things on Monday. Thank you again!
Thanks @bretsw for the detailed response & @llrs for the new feedback!
Regarding empty cassettes, it might be worth subscribing to https://github.com/ropensci/vcr/issues/244
@llrs yes I will update the time spent, thank you for reporting that as well!
@llrs, thank you for your follow-up review and comments. I have made further updates as requested:
vignette()
, and removed the comment about setting "eval = FALSE".if (!requireNamespace("package_name", quietly = TRUE)) {stop("Please install the {package_name} package to use this function", call. = FALSE)}
for {longurl} and {urltools} inside the get_url_domain()
function, for {opencage} inside the geocode_tags()
function., and for {beepr} inside the lookup_many_tweets()
and lookup_many_users()
functions. I have added `if (requireNamespace("package_name", quietly = TRUE) for {mapview}, {sf}, {ggplot2}, {ggraph}, and {tidygraph} in the function documentation and vignettes. This should cover all suggested-but-not-imported packages.if(nrow(unknown_upstream) == 0) {...} else {...}
to the get_upstream_tweets()
function. Please let me know if this is sufficient for the concern you have raised, or if there needs to be another check added to get_upstream_tweets()
or even pull_tweet_data()
.@maelle, could we remove the holding
label for this thread?
I think that the package is now in great shape @bretsw, thanks for adding me as reviewer on your package description file.
I think I do not need to mark anything on the current template to signal the review as finished (Wasn't there a check mark on the previous version of the reviewer's template?). I think that on my side, unless other discussions or more feedback is wanted I do not have anything else to suggest as improvements. I will unsubscribe the thread, but ping me to let me know if there is anything I can help with.
I think that the package is now in great shape @bretsw, thanks for adding me as reviewer on your package description file.
Thank you, @llrs, for your feedback, guidance, and patience. I have been very grateful for this review process.
@llrs thank you! Here's the reviewer approval comment template if you have time: https://devguide.ropensci.org/approval2template.html
@marionlouveaux would you have time to take a last look at the package?
Estimated hours spent reviewing: ~3
Thank you for responding to my review and adding me as a reviewer on your package. The package documentation is much better and much clearer. I found one minor aesthetic issue in the help of pull_tweet_data()
: I noticed some formatting issues such as \code{n}
(in the example section). I suggest using roxygen2md::roxygen2md()
to fix these (see https://roxygen2md.r-lib.org/).
I still approve the package now so as not to delay further the process.
Estimated hours spent reviewing: 1
@marionlouveaux, thank you so much for your follow up review. @jrosen48 and I are truly grateful!
Thank you for pointing out roxygen2md::roxygen2md()
--what a handy function! I've cleaned up the documentation and pushed changes.
Thanks a ton @marionlouveaux!
@ropensci-review-bot approve tidytags
Approved! Thanks @bretsw for submitting and @llrs, @marionlouveaux for your reviews! :grin:
To-dos:
@ropensci-review-bot finalize transfer of <package-name>
where <package-name>
is the repo/package name. This will give you admin access back.pkgdown
website and are ok relying only on rOpenSci central docs building and branding,
pkgdown
website with a redirecting pagehttps://docs.ropensci.org/package_name
URL
field alongside the link to the GitHub repository, e.g.: URL: https://docs.ropensci.org/foobar (website) https://github.com/ropensci/foobar
codemetar::write_codemeta()
in the root of your package.install.packages("<package-name>", repos = "https://ropensci.r-universe.dev")
thanks to R-universe.Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"
-type contributors in the Authors@R
field (with their consent).
Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @stefaniebutland in your reply. She will get in touch about timing and can answer any questions.
We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved.
Last but not least, you can volunteer as a reviewer via filling a short form.
@ropensci-review-bot finalize transfer of tidytags
Transfer completed. The tidytags
team is now owner of the repository
Hi @maelle, so I thought I updated everything as requested for the transfer to rOpenSci, but now all my GitHub actions are failing. Any suggestions? https://github.com/ropensci/tidytags/actions
@maelle, could you also remove the 4/review(s)-in-awaiting-changes
tag? I'm wondering if this makes the badge in the README show up as "Under Review" instead of "Peer Reviewed"...
Looks like I fixed the GitHub pages issue (needed to change the build to happening from the root directory in Settings) and got codecov to work (needed to update the key following the transfer to rOpenSci) - https://github.com/ropensci/tidytags
For the R-CMD-CHECK, looks like some issue with the terra package is tripping it up. So, probably nothing to be done at this point.
Thanks for the updates, happy to look again if the installation issue doesn't resolve itself within a few days.
Date accepted: 2022-01-31 Submitting Author Name: Bret Staudt Willet Submitting Author Github Handle: !--author1-->@bretsw<!--end-author1-- Other Package Authors Github handles: (comma separated, delete if none) !--author-others-->@jrosen48<!--end-author-others-- Repository: https://github.com/bretsw/tidytags Version submitted: 0.1.0 Submission type: Standard Editor: !--editor-->@maelle<!--end-editor-- Reviewers: @llrs, @marionlouveaux
Due date for @llrs: 2021-04-19 Due date for @marionlouveaux: 2021-04-27Archive: TBD
Version accepted: TBD
Scope
Please indicate which category or categories from our package fit policies this package falls under: (Please check an appropriate box below. If you are unsure, we suggest you make a pre-submission inquiry.):
Explain how and why the package falls under these categories (briefly, 1-2 sentences):
{tidytags} allows for both simple data collection and thorough data analysis. In short, {tidytags} first uses a Twitter Archiving Google Sheet (TAGS) to easily collect tweet ID numbers and then uses the R package {rtweet} to re-query the Twitter API to collect additional metadata. {tidytags} also introduces new functions developed to facilitate systematic yet flexible analyses of data from Twitter.
The target users for {tidytags} are social scientists (e.g., educational researchers) who have an interest in studying Twitter data but are relatively new to R, data science, or social network analysis. {tidytags} scaffolds tweet collection and analysis through a simple workflow that still allows for robust analyses.
{tidytags} wraps together functionality from several useful R packages, including {googlesheets4} to bring data from the TAGS tracker into R and {rtweet} for retrieving additional tweet metadata. The contribution of {tidytags} is to bring together the affordance of TAGS to easily collect tweets over time (which is not straightforward with {rtweet}) and the utility of {rtweet} for collecting additional data (which are missing from TAGS). Finally, {tidytags} reshapes data in preparation for geolocation and social network analyses that should be accessible to relatively new R users.
Technical checks
Confirm each of the following by checking the box.
This package:
Publication options
JOSS Options
- [x] The package has an **obvious research application** according to [JOSS's definition](https://joss.readthedocs.io/en/latest/submitting.html#submission-requirements). - [x] The package contains a `paper.md` matching [JOSS's requirements](https://joss.readthedocs.io/en/latest/submitting.html#what-should-my-paper-contain) with a high-level description in the package root or in `inst/`. - [ ] The package is deposited in a long-term repository with the DOI: - (*Do not submit your package separately to JOSS*)MEE Options
- [ ] The package is novel and will be of interest to the broad readership of the journal. - [ ] The manuscript describing the package is no longer than 3000 words. - [ ] You intend to archive the code for the package in a long-term repository which meets the requirements of the journal (see [MEE's Policy on Publishing Code](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/journal-resources/policy-on-publishing-code.html)) - (*Scope: Do consider MEE's [Aims and Scope](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/aims-and-scope/read-full-aims-and-scope.html) for your manuscript. We make no guarantee that your manuscript will be within MEE scope.*) - (*Although not required, we strongly recommend having a full manuscript prepared when you submit here.*) - (*Please do not submit your package separately to Methods in Ecology and Evolution*)Code of conduct