
Design Principles for the epiverse meta-package
Source:vignettes/design-principles.Rmd
design-principles.Rmd
This vignette outlines the design decisions that have been taken during the development of the epiverse R meta-package, and provides some of the reasoning, and possible pros and cons of each decision.
This document is primarily intended to be read by those interested in understanding the code within the package and for potential package contributors.
Meta-package scope and structure
This package is a meta-package that automatically loads in a single line all Epiverse-TRACE packages.
Structure
There are many ways to structure a meta-package. The
epiverse meta-package loads all Epiverse-TRACE packages
by including them in the DESCRIPTION
file under the
Depends
field. This means that all packages are attached
when the epiverse package is loaded. This is the simplest
way to structure a meta-package.
However, it notably differs from how the tidyverse
meta-package is structured. The tidyverse meta-package
includes tidyverse packages in Imports
and
Suggests
rather than Depends
. This is due to
their more complex inclusion policy, with core and non-core packages,
which calls for a more complex meta-package structure. Additionally, the
tidyverse is more than a simple wrapper or meta-package.
It also
provides a couple of special functions to interact with the package
universe as a whole.
Inclusion policy
At the moment, only core Epiverse-TRACE packages, i.e., packages
hosted on the epiverse-trace
GitHub organization, are
included in the epiverse meta-package.
The package provides two long-lived branches, or two installation
channels, main
and dev
. The main
branch only includes Epiverse-TRACE packages that have been released to
CRAN while the dev
branch includes Epiverse-TRACE packages
that have been released on CRAN or GitHub.
Epiverse-TRACE design principles
The design principles for the project are detailed in the blueprints and our blog and the design principles for the individual packages wrapped here are detailed in their respective design principle vignettes.