Skip to contents

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.