#rstats: Is there any write-up about meta-packages, e.g. tidyverse? When/why create them? How does that play out with CRAN? Is there any other convenient approach to group packages for installation and/or coordinated development?
@ramiro_magno For what it’s worth, several people (me emphatically included) think they’re a bad idea and should be avoided. By loading lots of names indiscriminately they go directly against established best practices in software engineering.

@klmr @ramiro_magno but it's not indiscriminate, the names are specifically designed to be used together interactively, from a modularized ecosystem of packages

don't want them all available? Don't use it ... use package development idioms, here's a bunch of great examples of packages that work together...

@mdsumner @klmr @ramiro_magno

As a maintainer I do find it a bit annoying though when a user sends a reprex of an issue and the first line is `library("tidyverse")`.

@trevorld @mdsumner @klmr @ramiro_magno reproducible. but minimal? 😬
@josi @trevorld @mdsumner @klmr I think what I'm trying to get at is: there are several levels of code coordination: 1. R-package-level for coordinating functions on the same namespace, 2. Repo-level (CRAN /BioC) for coordinating packages. It seems that the concept, at least conceptually, of a meta-package is a sensible middle level but so far has only been explored rather informally. For the two other levels there are all sorts of contract-rules to enforce coordination.
@josi @trevorld @mdsumner @klmr But for meta-packages, the rules fall into the realm of general guidelines and good design patterns, e.g. good division of labor, coherent patterns, etc.. but there is no formal enforcing, like for packages and repositories. Not sure there is the need, tbh. I guess one could argue that CRAN is one big meta-package...
@josi @trevorld @mdsumner @klmr For example, I guess r-lib packages are not under a meta-package like tidyverse but are effectively developed in a coordinated fashion, so that they do not overlap in scope, use the tidy design patterns, and so on... But conceptually, and effectively, they are being developed in a coordinated manner. Perhaps the lack of any formal bindings was what prompted Hadley to start writing https://design.tidyverse.org/.
Tidy design principles

@ramiro_magno @josi @trevorld @klmr I just think that's a reflection of modularization occuring over time, they discovered these deep foundations were needed and while they weren't implemented reflected the deep principles in R itself, the tidy verse meta package is about tools a user wants to get a functional script, rlib is the natural foundation that was needed for best implementation
@ramiro_magno @josi @trevorld @klmr ggplot was stretching for these principles, objects,nse, extensibility, and went through ggplot2, reshape, plyr then dplyr to discover them - everything else is a recognized piece that could be isolated, rlib for devs, tidyverse for users (a very broad and grey expanse not a wall)

@trevorld @klmr @ramiro_magno think of it as an opportunity to be kind and show them what required, ignore them, or set their computer on fire

I used to feel the same about rm(list =ls()) but hey the culture changed and good support was provided (by guess who)

@mdsumner @klmr @ramiro_magno Even if they are designed to work well together they still affect other packages' development. Bioconductor decided to import the generics from the tidyverse to reduce some friction with some packages ( a package on CRAN already worked with dplyr but I had to change it because of this Bionconductor decision).
@mdsumner It’s indiscriminate in the sense that the consumer of the package has no choice over which names get attached globally (when using `library()`, that is).

@klmr yes that is how library() works and it features in very many resources for R a long time now

user has more choice, tidyverse, specific packages, conflicted, package vs script workflows