ipfs / ipfs/kubo

Provider Strategy Discussion

Open
#6,221 23 comments 0 reactions 0 assignees View on GitHub
need/community-input topic/provider
Dominant language
Go
Stars
17.1k
Forks
3.2k
Avg merge
3d 18h
Merged PRs (30d)
11

Description

@Stebalien please add the people you think should be a part of this discussion.

We are introducing a provider system into go-ipfs (https://github.com/ipfs/go-ipfs/pull/6141) that replaces the mechanism in bitswap that provides all new blocks when it comes into contact with them. The new provider system is intended to give us more control over which blocks are provided during different operations.

The important questions for this group are:

#### 1. What kinds of _provide strategies_ will need to be supported?

> e.g.
> - All
> - Roots
> - Whole/recursive (all of a dag when add _or_ pin)
> - Pin roots
> - Pin recursive
> - Probabilistic (TBD)
> - Nothing
> - Some other strategy ...

@Stebalien mentioned an approach here https://github.com/ipfs/go-ipfs/pull/5870#discussion_r261048681 which should be considered here as well.

#### 2. What do we have to support initially?

Given the concerns I hear around providing, it seems like the following would help right away and could be merged on its own:

- the ability to provide everything
- the ability to disable providing without disabling content routing
- the ability to provide only roots during bulk provide operations (e.g. add and pin)

But would that be enough?

---

Additionally, the reprovider strategies are being removed and instead a reprovide will work over all blocks that have been provided. Is that ok?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.