/dpm

GNU Affero General Public License v3.0AGPL-3.0

Distributed Package Manager (DPM)

DPM is a unique meta package manager that enables the easy deployment of existing package repositories such as Docker container registry, PyPI package index, apt package repository, locally and as a private distributed network of pull-through caches. The goal is to enable users to pull software packages, Docker containers, etc., from a local cache and/or a distributed network of trusted peers who voluntarily participate.

Features

  • Distributed Caching: Leverages a bittorrent-like mechanism for distributed caching, allowing participants to fetch packages quickly and efficiently.
  • Ease of Integration: All you need to get started is to launch a single Docker container.
  • Plugin Support: Easily expandable with support for additional package formats through community-driven plugins.
  • Compatibility: Works seamlessly with Docker container images, Python packages, apt packages, with more integrations to come.

How DPM Works

DPM revolutionizes package management by implementing a distributed caching filesystem layer. Here's a step-by-step explanation of how it functions:

Distributed Caching Mechanism: Leveraging a bittorrent-like protocol (BitSwap), DPM enables users to pull packages from a local cache or a private network of other DPM participants, making package retrieval faster and more resilient.

Integration with Existing Repositories: DPM leverages existing package repository implementations, it is not a package manager in and of itself, it is more of a distributed transport layer for existing packaging systems.

FUSE-based Implementation: DPM's filesystem component is achieved via a FUSE-based implementation, allowing it to provide a virtual filesystem interface to various package repository implementations.

Local Deployment: Users can simply launch a Docker container to run DPM, then configure their local package manager clients to fetch metadata and packages through their local DPM deployment.

Expandability with Plugins: DPM's architecture allows contributors to easily add support for additional package formats. By creating plugins specific to each package format's repository implementation, the community can continually enhance DPM's capabilities.

Fallback to Centralized Repositories: In cases where the local cache or distributed network does not have the required packages, DPM intelligently falls back to traditional centralized repositories, ensuring uninterrupted access.

Who Should Use DPM?

Developers, system administrators, and anyone who regularly works with open source package repositories should find DPM useful. Future support for additional package repository formats such as Rust's Cargo is on the horizon.

Why DPM?

Traditional centralized package repositories can be slow and prone to bottlenecks. DPM solves this problem by offering a distributed caching layer that accelerates package retrieval, bringing enhanced speed and reliability to your development workflow.

Getting Started

Getting started with DPM is as simple as launching a Docker container and configuring your local package manager clients to fetch metadata and packages through DPM. Further instructions can be found in our Installation Guide.

Contribute

We are actively looking for maintainers interested in contributing plugins for additional package formats. This involves integrating with the core DPM filesystem component specific to that particular package format's repository implementation. If you're interested in diving into the world of FUSE-based implementation and expanding the capabilities of DPM, please check our Contribution Guide.

Call for Package Repository Software Maintainers

If you have experience with existing package management systems and want to contribute to an exciting open-source project, DPM is the place for you! We are actively reaching out to maintainers of existing package repository software asking them to contribute their expertise and experience to help drive the success of DPM. To get started, please review our Integration Guide. Together, we can make package management more efficient and accessible.

Support

For support, questions, or more information, please join our community