-
-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Qri needs a long-term plan for operating on IPFS, libp2p protocols out-of-process #7196
Comments
(quick, short note)
|
I think Regarding re-using the datastore, we could have a go-datastore implementation-wrapper that either:
This could allow multiple go-ipfs processes to re-use the same underlying datastore. |
That'll be a fun world to live in, and would be happy to help tire-kick. We're getting great milage out of the core-libp2p event bus. Feels like a great place to start the conversation with small wins.
Agree with all points here. We've got a repo migration ahead of us with the switch to v0.5.0, good time to discuss moving the repo location with the Qri community. Seems this would address both issues. After a quick test I'm delighted to see
You've just made my day 😄.
No rush here given that Qri has opinions about DAG shape, making overlap with content created by other systems kinda trivial. On end-user machines the value isn't enough compared to the advantage of being able to blow away Feels like the blockstore problem is well handled by the HTTP api for our use cases. |
Most of our users come from the world of data science, and don't (yet) have IPFS installed independent of our binary. Then @momack2 gave Qri Desktop a spin, and it turns out we don't play very nice with other IPFS's 😞:
qri-io/qri#1296
qri-io/desktop#535
Right now Qri wants the repo lock so it can run go-ipfs in-process. Long term, we really shouldn't need to do that, and it should instead be possible to run IPFS somewhere else. Needing to choose between Desktop applications isn't ok.
That said, this problem is not small. There are two immediate blockers to us operating on IPFS out-of-process:
On the upside, we do have cursory support for operating on IPFS over the HTTP API, and use this exact setup in our cloud backend services. But with the two above issues we've had to carefully carve our backend architecture to support these deficits by having some services that operate on in-process repos, and some that operate over HTTP with a lot of configuration and reduced functionality.
Finally performance is an obvious concern here. Much of Qri's performance depends on fast access to the local blockstore (SQL JOINs will access blocks once per row at the moment).
I'd love to get a discussion going to figure out the right course of action is so we can start to work in a good roadmap. I'm not sure what the right end state for a project like ours even is, given that there's no way to register a libp2p protocol without access to the host itself, and by extension, the repo lock (unless I'm missing something crucial. I'd love to be missing something crucial).
The text was updated successfully, but these errors were encountered: