Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove experimental graphsync server #9747

Merged
merged 1 commit into from
Nov 22, 2023
Merged

remove experimental graphsync server #9747

merged 1 commit into from
Nov 22, 2023

Conversation

Jorropo
Copy link
Contributor

@Jorropo Jorropo commented Mar 23, 2023

Updates: #9396
Closes: #6831
Closes: #6208

Currently the Graphsync server is not widely used due to lack of compatible software.
There have been many years yet we are unable to find any production software making use of the graphsync server in Kubo.

There exists some in the filecoin ecosystem but we are not aware of uses with Kubo.
Even in filecoin graphsync is not the only datatransfer solution available like it could have been in the past.

go-graphsync is also developped on many concurrent branches.
The specification for graphsync are less clear than the trustless gateway one and lack a complete conformance test suite any implementation can run.
It is not easily extansible either because selectors are too limited for interesting queries without sideloading ADLs, which for now are hardcoded solutions.
Kubo is consistently one of the fastest software to update to a new go-libp2p release.
This means the burden to track go-libp2p changes in go-graphsync falls on us, else Kubo cannot compile even if almost all users do not use this feature.
We are then removing the graphsync server experiment.

For people who want alternatives we would like you to try the Trustless-Gateway-over-Libp2p experiment instead, the protocol is simpler (request-response-based) and let us reuse both clients and servers with minimal injection in the network layer.
If you think this is a mistake and we should put it back you should try to answer theses points:

  • Find a piece of opensource code which uses a graphsync client to download data from Kubo.
  • Why is Trustless-Gateway-over-Libp2p not suitable instead ?
  • Why is bitswap not suitable instead ?

Implementation details such as go-graphsync cpu / memory usage vs boxo/gateway is not very interesting to us in this discussion unless they are really huge (in the range of 10x~100x+ more) because the gateway code is under high development and we would be interested in fixing theses.

@Jorropo Jorropo requested a review from lidel as a code owner March 23, 2023 17:10
@Jorropo
Copy link
Contributor Author

Jorropo commented Mar 23, 2023

We should get https://github.com/protocol/network-measurements to add stream handler in indentify, this would allows us to see usage of the graphsync server in the wild.
Related probe-lab/network-measurements#43

@aschmahmann
Copy link
Contributor

@Jorropo that information won't tell you quite what you need to know. The question you want to be asking is how many kubo nodes (discoverable by the tooling) are running GraphSync, not just how many are running GraphSync

@Jorropo
Copy link
Contributor Author

Jorropo commented Mar 24, 2023

@aschmahmann I don't understand what you mean, the tooling will discover what the tooling can discover.

If you want me to reframe what I'm asking:

How much public nodes visible in the DHT have a graphsync handler ?

@dennis-tra
Copy link
Contributor

How much public nodes visible in the DHT have a graphsync handler?

From our latest crawl we can see that a maximum of 30 peers advertise support for graphsync.

@guseggert
Copy link
Contributor

Might be worth poking at those peers to see who they are and why they're using graphsync then?

@Jorropo Jorropo marked this pull request as draft March 25, 2023 09:31
@Jorropo Jorropo added the need/community-input Needs input from the wider community label Mar 25, 2023
@Faolain
Copy link

Faolain commented Apr 29, 2023

We (dClimate) are looking into using GraphSync in order to improve some of our queries, please hold on removal 🙏

@Jorropo Jorropo removed the need/community-input Needs input from the wider community label Nov 17, 2023
@Jorropo Jorropo marked this pull request as ready for review November 17, 2023 22:31
@Jorropo Jorropo requested a review from a team as a code owner November 17, 2023 22:31
@Jorropo
Copy link
Contributor Author

Jorropo commented Nov 17, 2023

This also saves ~3M on a non stripped build of Kubo.

Copy link
Member

@hacdias hacdias left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than my comment above, happy to see this done.

Updates: #9396
Closes: #6831
Closes: #6208

Currently the Graphsync server is not widely used due to lack of compatible software.
There have been many years yet we are unable to find any production software making use of the graphsync server in Kubo.

There exists some in the filecoin ecosystem but we are not aware of uses with Kubo.
Even in filecoin graphsync is not the only datatransfer solution available like it could have been in the past.

`go-graphsync` is also developped on many concurrent branches.
The specification for graphsync are less clear than the trustless gateway one and lack a complete conformance test suite any implementation can run.
It is not easily extansible either because selectors are too limited for interesting queries without sideloading ADLs, which for now are hardcoded solutions.
Finaly Kubo is consistently one of the fastest software to update to a new go-libp2p release.
This means the burden to track go-libp2p changes in go-graphsync falls on us, else Kubo cannot compile even if almost all users do not use this feature.
We are then removing the graphsync server experiment.

For people who want alternatives we would like you to try the Trustless-Gateway-over-Libp2p experiment instead, the protocol is simpler (request-response-based) and let us reuse both clients and servers with minimal injection in the network layer.
If you think this is a mistake and we should put it back you should try to answer theses points:
- Find a piece of opensource code which uses a graphsync client to download data from Kubo.
- Why is Trustless-Gateway-over-Libp2p not suitable instead ?
- Why is bitswap not suitable instead ?

Implementation details such as go-graphsync performance vs boxo/gateway is not very interesting to us in this discussion unless they are really huge (in the range of 10x~100x+ more) because the gateway code is under high development and we would be interested in fixing theses.
@Jorropo Jorropo enabled auto-merge (rebase) November 22, 2023 03:51
@Jorropo Jorropo merged commit 2b347a9 into master Nov 22, 2023
21 checks passed
@Jorropo Jorropo deleted the remove-graphsync branch November 22, 2023 03:57
@lidel lidel mentioned this pull request Nov 24, 2023
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Archived in project
Development

Successfully merging this pull request may close these issues.

IPFS fetches files via graphsync RFC: GraphSync integration
6 participants