pypiserver vs R-universe
pypiserver
github.comR-universe
r-universe.devSide by side
| Figure | pypiserver | R-universe |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Web | — | Yes |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| API | Yes | Yes |
| Self-hosted | Yes | — |
| Plans published | 1 | 1 |
| Spec score · Package Registries | 8.3 (#11) | 7.5 (#20) |
| Integrations | The documentation shows integration with pip, easy_install, setuptools, twine, Docker, and reverse proxies including Nginx and Traefik. | Setting up a universe requires a GitHub account and the R-universe GitHub app, while package repositories may be hosted on other public Git servers such as GitLab. |
| Intended users | The project describes itself as a self-hosted package index for users who want to serve their own Python packages. | The documentation is for R users, package developers, universe developers, and people interested in contributing to the infrastructure or documentation. |
| Purpose | pypiserver is a minimal PyPI-compatible server for uploading and downloading Python packages with pip or easy_install. | R-universe is rOpenSci’s platform for publishing and discovering research software in R. |
Plans
In their own words
pypiserver
pypiserver is a minimal, self-hosted package index for uploading and downloading Python packages with tools such as pip and easy_install. It serves packages from regular directories, including wheels, bdists, eggs and PGP signatures, and scans those directories recursively. Packages can be uploaded with pip, setuptools, twine or pypi-uploader, or copied to the server with scp. Upload access can be protected with an Apache htpasswd file; API users can configure custom authentication callables. The maintainers advise password protection for uploads, and the documentation recommends a reverse proxy to provide HTTPS. pypiserver can run as a WSGI application, with documented integrations for Docker, nginx, Apache, gunicorn and Paste. It provides a health endpoint that returns HTTP 200 when the service is running, with an option to configure the endpoint. The current version supports Python 3.10+ and PyPy3. It is free at free and is listed for Linux, macOS, Windows, API and self-hosted use. Its API covers the operations needed by common package tools rather than the full PyPI API; documentation uploads are accepted but not saved to disk.
R-universe
R-universe is rOpenSci’s platform for publishing and discovering research software in R. Its searchable catalogue covers R software, articles, and datasets, using R-specific indexing and ranking. Package and universe pages provide detailed information and rendered material. Users and developers can run personal CRAN-like package repositories whether or not they publish packages on CRAN; R-universe builds and deploys packages from Git repositories into installation repositories. It also provides a continuous integration development environment without configuration to help identify potential breakage before release. WebAssembly binary support is experimental. Publishing a packages.json registry requires a GitHub account and the R-universe GitHub app, although package repositories may be hosted on other public Git servers such as GitLab. Unauthenticated APIs support listing universes and packages, retrieving package information, and searching. The service is free at free and is available through web, API, Linux, macOS, and Windows. rOpenSci initiated and governs the platform. R-universe does not vet packages; each universe owner is responsible for policies and quality control.