Awesome
This repository has been archived!
This IPFS-related repository has been archived, and all issues are therefore frozen. If you want to ask a question or open/continue a discussion related to this repo, please visit the official IPFS forums.
We archive repos for one or more of the following reasons:
- Code or content is unmaintained, and therefore might be broken
- Content is outdated, and therefore may mislead readers
- Code or content evolved into something else and/or has lived on in a different place
- The repository or project is not active in general
Please note that in order to keep the primary IPFS GitHub org tidy, most archived repos are moved into the ipfs-inactive org.
If you feel this repo should not be archived (or portions of it should be moved to a non-archived repo), please reach out and let us know. Archiving can always be reversed if needed.
<img width="800" alt="Package Managers Task Force" src="https://user-images.githubusercontent.com/4827522/61231640-60005e00-a6e1-11e9-872e-950de6310bc3.png">
Status: INACTIVE
In 2019, this working group focused on making IPFS a usable platform for package managers. The working group has been spun down in favor of focusing on improving the core protocol but this repo still contains quite a few important learnings and experiments.
In this group, we:
- Surveyed known package managers - https://github.com/ipfs/package-managers/tree/master/package-managers
- Experimented with running package managers on IPFS to understand the relevent pain-points: https://github.com/ipfs/package-managers/issues?q=is%3Aissue+is%3Aopen+label%3A%22Type%3A+Experiment%22.
- Did a ton of user research - https://github.com/ipfs/package-managers/tree/master/docs
- Improved bitswap performance (in go-ipfs) - https://github.com/ipfs/go-bitswap/pull/189
- More than doubled initial ipfs add performance (in go-ipfs) - https://github.com/ipfs/go-ipfs/issues/6775
- Added file modes and modification time support to the IPFS spec - https://github.com/ipfs/specs/blob/master/UNIXFS.md#metadata
- Explored ways to improve how go-ipfs mounts /ipfs and /ipns as a local filesystems - https://github.com/ipfs/go-ipfs/pull/6612
Why are package managers important to the future of IPFS?
- IPFS is very close to becoming a great tool to solve real problems for package manager users, package publishers, and package manager maintainers! Plus, closing those gaps will make IPFS better for everyone while giving the IPFS community a yardstick for how to measure our success in the future.
- Package manager maintainers and consumers are an important demographic to IPFS' future: developers who may not be IPFS pros yet, but who can get excited and engaged about IPFS in its current state, enabling everyone to help IPFS improve both on existing fronts and in problem areas we haven't yet envisioned
- Introducing IPFS tooling and support can create direct value and impact in the overall package manager ecosystem by saving developers time and empowering resilient development experiences for developers using IPFS or IPFS-powered tools and registries.
Goals for IPFS and package managers
- Get the package manager maintainer community excited about the benefits of using IPFS in their ecosystems
- Demonstrate to package consumers that IPFS is holistically better than current centralized package managers (this may mean parity on some use cases, but significantly better on others)
- Increase awareness and engagement with IPFS (either to build new tools, or contribute directly) among package manager users/package publishers
Non-goals
- Become the sole centralized maintainers of large new package manager infrastructure
- Hack together a demo to “subvert” package manager maintainers or “steal control” from package creators
- Implement YAPM (yet another package manager)
Starter reading
There's a wealth of research, analysis and other tasty info to be found in the docs directory, but if you're just getting started with package managers and IPFS, you may want to start with these:
- Package management glossary
- Package manager categories
- Problems with current-state package managers that IPFS can help solve
- How IPFS concepts map to package manager concepts
- IPFS Package Manager Upgrade Paths slide deck
- Finding the best abstractions for talking about package managers
- Tactical tree for implementing IPFS in a package manager
- Package manager (pre-IPFS) pain points, sorted by user type
- Package manager goals in the 2019 IPFS roadmap
- Directory of existing package managers with notes on language, categorization, clients and more
Current IPFS integrations
These package managers already have some form of IPFS integration underway. If you're a package manager maintainer and want to be in this list, please reach out. :smile:
Blockers
There are still some current issues with IPFS that are limiting package manager adoption today.
Package Manager Maintainer Service Blueprint
License
All documents are licensed under the CC-BY-SA 3.0 license © 2019 Protocol Labs Inc. Any code is under an MIT license.