Production repository

The Production repository comprises a subset of Community package releases which are mutually compatible and meet a high standard of quality. R-multiverse deploys Production in periodic snapshots throughout the year. Prior to each snapshot, packages undergo a Staging process that gradually freezes release candidates and their dependencies.

Users

The current Production snapshot was deployed on 2025-03-15. It was tested with the base R 4.4 and CRAN packages from the dependency freeze on 2025-01-15. Please use the 2025-01-15 CRAN snapshot from Posit Public Package Manager (p3m) to install dependencies:

install.packages(
  "polars",
  repos = c(
    "https://production.r-multiverse.org",
    "https://packagemanager.posit.co/cran/2025-01-15"
  )
)

Staging

R-multiverse publishes a Production snapshot every 3 months. Staging is the gradual process that builds these snapshots. The goal of Staging is to ensure that packages and their dependencies are fully functional and mutually compatible in Production. Similar to the Debian release cycle, a special Staging repository slowly transforms a collection of unstable Community releases into a stable ecosystem of packages in Production.

Staging happens in cycles. There are four cycles per year, and each cycle lasts three months. Each month is a distinct phase that gradually hardens the packages that will enter the snapshot.

Month 1: dependency freeze

Here, the Staging repository freezes the versions of base R1 and packages from CRAN2. For the purpose of running and enforcing checks, these versions of dependencies do not change until after the snapshot is finalized on month 3 day 1. New Community package releases freely enter and leave the Staging repository. This process gives packages, contributors, and the Staging repository itself an entire month to adjust to a fixed and predictable set of dependencies.

Month 2: candidate freeze

Beginning on month 2, newly registered packages can no longer enter the Staging repository. If a Staging repository package passes checks at least once during month 2, it immediately becomes staged. When a package becomes staged, its version freezes, and it can no longer upgrade in the Staging repository until the next 3-month cycle. A package can only upgrade in Staging if:

  1. It is not already staged, and
  2. Its checks are failing.

Staged packages appear on the Production status page and are guaranteed admittance into the next snapshot. If a package is already staged but its checks fail later in month 2, then the package is still staged and will still enter the upcoming snapshot.

Month 3: production snapshot

The Production snapshot finalizes on day 1 of month 3.3 Production does not add, remove, or update packages at any other time. 4 The snapshot consists of all staged packages from month 2. For the rest of month 3, the Staging repository does not change, and R-multiverse administrators have time to fix any rare and unexpected problems that may arise during the Staging process.

Packages in the Staging repository repository do not change for the entire month. This gives the R-multiverse administrators time to fix rare and unexpected problems that may arise during the Staging process.

Schedule

Staging follows the same schedule each year. Each month-long phase of Staging starts on the 15th of the month.

Quarter Dependency freeze begins Candidate freeze begins Production snapshot finalizes
Q1 January 15 February 15 March 15
Q2 April 15 May 15 June 15
Q3 July 15 August 15 September 15
Q4 October 15 November 15 December 15

Checks

To reach Production, a package release must comply with all R-multiverse policies, and it must pass the following automated checks in the Staging repository:

Security

Quality

  • R CMD build and R CMD check must pass in the Staging universe (no errors or warnings) on Mac, Windows, and Linux. These checks use the versions of base R and CRAN packages from the first day of the current Staging cycle.

Documentation

  • The version number of the current release must be strictly greater than the version numbers of all previous releases of the package.
  • If the package is on both CRAN and R-multiverse, the CRAN version number must not be higher than the R-multiverse one.

Dependencies

  • The DESCRIPTION file must not include a Remotes: field.
  • The package must not strongly depend (Depends:, Imports:, LinkingTo:) on an R-multiverse package with any of the above check issues. 5

Status

R-multiverse continuously updates a website to report status and check. The Production status page lists all the packages staged for the next snapshot. Separate pages list all the packages with check issues in each of Community and Staging. In addition, each package has its own individual status page and RSS feed.

Archive

The following table lists all past and present Production snapshots. It includes the start date of each phase of Staging and the compatible version of base R. The URLs for the repos argument of install.packages() can be inferred from the dates below.

r dependency_freeze candidate_freeze snapshot
4.4 2025-01-15 2025-02-15 2025-03-15

Footnotes

  1. Patch versions of base R can still update. For example, if the targeted base R version is 4.4, checks may enforce R 4.4.0, 4.4.1, 4.4.2, or 4.4.3.↩︎

  2. R-multiverse uses the Posit Public Package Manager snapshot of CRAN from month 1 day 1.↩︎

  3. The install.packages() URL may be reachable before the snapshot date, but the contents are not finalized until the actual day of the snapshot.↩︎

  4. A package is only removed from a snapshot if it becomes absolutely necessary to do so, e.g. because of an egregious policy violation.↩︎

  5. An R-multiverse package can strongly depend a package from CRAN, regardless of CRAN check status, as long as that package remains available on CRAN.↩︎