# R-multiverse and Stan packages

**URL:** <https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711>\
**Category:** Developers\
**Created:** [February 5, 2025, 8:41pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711 "2025-02-05T20:41:32Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![wlandau](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wlandau/32/9846_2.png) [@wlandau](https://discourse.mc-stan.org/u/wlandau)\
**Post date:** [February 5, 2025, 8:41pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/1 "2025-02-05T20:41:32Z")

</div>

R-multiverse is a new repository system for R packages. It’s built on R-universe and GitHub, and It’s a home for packages outside the scope of CRAN/Bioconductor. We host a central Community universe with the latest release of each registered package, and a Production universe with quarterly snapshots of the healthy packages from Community. [https://r-multiverse.org](https://r-multiverse.org) has the details.

I’m sharing because I think R-multiverse may be a nice way to distribute packages that use Stan. In fact, `bridgestan` recently joined (c.f. [[R]: install the R package from R-multiverse · Issue #262 · roualdes/bridgestan · GitHub](https://github.com/roualdes/bridgestan/issues/262), [chore: add bridgestan by eitsupi · Pull Request #221 · r-multiverse/contributions · GitHub](https://github.com/r-multiverse/contributions/pull/221)). New packages are registered once via pull request (c.f. [Contributors – R-multiverse](https://r-multiverse.org/contributors.html)) and then the Community universe automatically picks up the latest releases directly from GitHub/GitLab.

---

<div class="post-metadata">

**Author:** ![yizhang](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/yizhang/32/15673_2.png) [@yizhang](https://discourse.mc-stan.org/u/yizhang)\
**Post date:** [February 5, 2025, 11:01pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/2 "2025-02-05T23:01:27Z")

</div>

Thanks, Will! I must admit I’m getting more and more confused on the initiatives of R ecosystem. For example, `cmdstanr` currently is in R-universe. What’s the difference between multiverse and this universe?

---

<div class="post-metadata">

**Author:** ![jonah](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/jonah/32/200_2.png) [@jonah](https://discourse.mc-stan.org/u/jonah)\
**Post date:** [February 6, 2025, 2:42am UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/3 "2025-02-06T02:42:40Z")

</div>

Thanks for sharing! I have the same question as @yizhang about the difference between R-universe (which we already use for some packages) and this new multiverse. Also tagging @andrjohns since he’s done a lot of the R-universe setup.

---

<div class="post-metadata">

**Author:** ![wlandau](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wlandau/32/9846_2.png) [@wlandau](https://discourse.mc-stan.org/u/wlandau)\
**Post date:** [February 6, 2025, 6:56pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/4 "2025-02-06T18:56:47Z")

</div>

R-multiverse builds on top of R-universe, and its goals are different. The [Community](https://r-multiverse.org/community.html) repository is a single central/unified universe that:

1. Always distributes releases (`branch: "release"` in [`packages.json`](https://github.com/r-multiverse/community), not the development version).
2. Provides one central `install.packages()` URL that all the packages share. So rather than setting different installation URLs for different packages from different universes, everyone always calls `install.packages(repos = c("https://community.r-multiverse.org", ...))`

Plus, R-multiverse has its own system for production snapshots of [Community](https://r-multiverse.org/community.html).

So R-multiverse is a bit different from R-universe. In fact, it’s actually most similar to Bioconductor, except we have a different [package contribution model](https://r-multiverse.org/contributors.html) and we aim for a more general user base.

Does that make sense? R-universe spins up personal/org universes with mostly development versions of packages, whereas R-multiverse has a single universe of releases that everyone shares.

Please let me know if there is anything specific we should clear up at [https://r-multiverse.org](https://r-multiverse.org).

---

<div class="post-metadata">

**Author:** ![Bob\_Carpenter](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bob_carpenter/32/9230_2.png) [@Bob\_Carpenter](https://discourse.mc-stan.org/u/Bob_Carpenter)\
**Post date:** [February 11, 2025, 10:44pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/5 "2025-02-11T22:44:45Z")

</div>

I would love to see something other than Bioconductor and CRAN for distributing R.

Are you looking at versioning and dependencies?

> [@wlandau](#):
>
> R-universe spins up personal/org universes with mostly development versions of packages, whereas R-multiverse has a single universe of releases that everyone shares.

You might want to reconsider the name of this package/project. People are going to be confused with universe vs. multiverse, particularly when your multiverse is described as a single universe.

---

<div class="post-metadata">

**Author:** ![wlandau](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wlandau/32/9846_2.png) [@wlandau](https://discourse.mc-stan.org/u/wlandau)\
**Post date:** [February 12, 2025, 2:25pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/6 "2025-02-12T14:25:30Z")

</div>

> Are you looking at versioning and dependencies?

In what sense?

> You might want to reconsider the name of this package/project. People are going to be confused with universe vs. multiverse, particularly when your multiverse is described as a single universe.

That’s a tough one. After much internal debate, we landed on a name that deliberately points to R-universe. We want people to know that R-multiverse is fundamentally an extension of R-universe, and we want people to know that we’re pro-R-universe and not anti-CRAN. (In fact, most R-multiverse packages have CRAN dependencies.) We considered other names, but we thought they were less clear.

---

<div class="post-metadata">

**Author:** ![Bob\_Carpenter](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bob_carpenter/32/9230_2.png) [@Bob\_Carpenter](https://discourse.mc-stan.org/u/Bob_Carpenter)\
**Post date:** [February 14, 2025, 9:41pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/7 "2025-02-14T21:41:57Z")

</div>

> [@wlandau](#):
>
> In what sense?

In the sense of supporting them. There’s no hard version dependencies in CRAN, which makes it very hard to update because every update has to work with all the versions. This is the main bottleneck for us getting RStan onto CRAN and the reason we only update RStan rarely.

---

<div class="post-metadata">

**Author:** ![wlandau](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wlandau/32/9846_2.png) [@wlandau](https://discourse.mc-stan.org/u/wlandau)\
**Post date:** [February 17, 2025, 3:04pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/8 "2025-02-17T15:04:24Z")

</div>

Thanks for clarifying. R-multiverse makes this much easier. Let’s say `rstan` and `StanHeaders` are already registered (c.f. [Contributors – R-multiverse](https://r-multiverse.org/contributors.html)). To update both packages, just create new GitHub releases (e.g. [Releases · stan-dev/rstan · GitHub](https://github.com/stan-dev/rstan/releases)) before the next Staging cycle ([Production repository – R-multiverse](https://r-multiverse.org/production.html#schedule)). If checks pass using the current versions together, then next Production snapshot will accept them. No need for one package to stay compatible with an old version of the other.

---

<div class="post-metadata">

**Author:** ![wlandau](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wlandau/32/9846_2.png) [@wlandau](https://discourse.mc-stan.org/u/wlandau)\
**Post date:** [February 17, 2025, 3:06pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/9 "2025-02-17T15:06:53Z")

</div>

And the Community repository ([Community repository – R-multiverse](https://r-multiverse.org/community.html)) automatically picks up the latest GitHub release without enforcing R CMD check.

---

<div class="post-metadata">

**Author:** ![Bob\_Carpenter](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bob_carpenter/32/9230_2.png) [@Bob\_Carpenter](https://discourse.mc-stan.org/u/Bob_Carpenter)\
**Post date:** [February 19, 2025, 10:16pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/10 "2025-02-19T22:16:29Z")

</div>

> [@wlandau](#):
>
> To update both packages, just create new GitHub releases (e.g. [Releases · stan-dev/rstan · GitHub](https://github.com/stan-dev/rstan/releases)) before the next Staging cycle

This would be a **huge** improvement over CRAN and would eliminate most of our issues with new releases of RStan. It doesn’t quite let you lock on an older version of a repo, which you really need to make sure things don’t go stale.

Also not having to comply with external packages unit tests on things like the misspellings error messages would also be a huge win vs. CRAN.

---

<div class="post-metadata">

**Author:** ![wlandau](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wlandau/32/9846_2.png) [@wlandau](https://discourse.mc-stan.org/u/wlandau)\
**Post date:** [February 20, 2025, 2:49pm UTC](https://discourse.mc-stan.org/t/r-multiverse-and-stan-packages/38711/11 "2025-02-20T14:49:48Z")

</div>

> [@Bob\_Carpenter](#):
>
> Also not having to comply with external packages unit tests on things like the misspellings error messages would also be a huge win vs. CRAN.

We do ignore NOTEs e.g. misspellings in the DESCRIPTION. As far as `R CMD build` and `R CMD check` are concerned, we only enforce ERRORs, WARNINGs, and source build failures, and only on Linux R-devel, Windows R-release, and Mac R-release.
