-
Notifications
You must be signed in to change notification settings - Fork 4
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
Reorient toward a general purpose DHT foundation library #84
Comments
I totally agree that this repo should reorient toward a general tooling library helping building any kind of DHT. After thinking about it, I think that we aren't far from it. If someone wanted to implement Chord, they would just have to build the Chord routing table, and query mechanism. They could already use the other components (e.g Most other DHT geometries, such as the ones in use in Chord, Pastry, Tapestry etc. also use binary keys as identifiers. Some newer DHT use exotic geometries, that we couldn't implement at the moment using this repo. We could make the DHT identifier Maybe we can add a package to compose DHTs, but it may not be required as combining routing table memberships should happen in the routing table implementation. I think the first important move we need to take, is to rename the repo to remove Kademlia from it, because we can build any kind of DHT, and the current name is misleading. After the repo is renamed, we need to make sure that the routing table and query implementations that we already have contain a Potential names for the repo could be:
|
The ProbeLab team had a meeting today to discuss the outcome of the discussion with @jbenet and identify next steps. The TL;DR is that we think we're not far away at all from the vision that @jbenet laid out (as @guillaumemichel points out above), although the devil is in the details. It also seems that the refactoring work (as well as the Reprovide Sweep) are not affected by the discussion, so this line of work continues as scheduled. We gathered the following Action Items (in this order):
|
Thinking about it again. The Routing Table interface is generic enough to be used with any geometry. We would just need to replace the
So it is possible to have a generic query implementation, only making use of the methods defined by the This generic |
I'm just ACKing that I saw the pings here and have read the above and the content being generated in https://www.notion.so/pl-strflt/2023-08-07-IPFS-Tech-Sync-With-Juan-4061193911544b9fa864a663f8f1ee84?pvs=4#4bda867c13074a029a39150b6539757a so far. I'll respond more tomorrow with a fresh head, but a few quick things:
Thanks a lot for all your work here guys! |
With fresh head, I still agree with my comments in #84 (comment) One other thing:
I generally want to avoid weeks of extra work right now that prevent us from providing user value (like the reprovide sweep). Are the options:
|
I agree we have to draw the line carefully and not get into too much abstraction, especially given the imminent org restructuring. We should avoid committing to a very generic design and development as this will be a long-term commitment.
@BigLep I reckon you be present when we make a decision on how we carry forward, as this will influence quite a few things down the line. |
I'll think more about it and put in the doc that I'll prepare for the discussion, but some first thoughts to address the tradeoff between realism and usefulness to the ecosystem is to:
|
Thanks @yiannisbot and @guillaumemichel for the updates and docs. Great work!
Yes, I'll be present for decision making and make sure I'm aware of the decision and the implications. The timeline and suggested actions makes sense to me. For Reprovide Sweep that we are anchoring our refactor work to and proposing to complete to get ROI, it would be great if we can also provide user anecdotes are will readily adopt this feature when it's available and ideally are excited to see it be released. Good stuff - thanks all. |
This issue arises from some recent discussions with Juan about the scope and direction of go-kademlia and go-libp2p-kad-dht.
Currently, our focus is on improving our Kademlia implementation in order to implement protocol enhancements. But there's value in creating a space for experimenting with different DHT concepts. Focusing on a platform that allows experimentation with various DHT properties and algorithms might better serve us in the long run. Our goal should be to address today's needs while also preparing for future challenges.
Our discussions often revolve around the technicalities of implementation but many in our community are keen on seeing real-world benefits. They're interested in mixing different membership styles, the idea of multi-level DHTs, and the ability to easily introduce varied methods and record types. As we think about tweaks to the IPFS DHT, it's crucial to align with community feedback. Their input should guide our path forward.
Instead of honing in on just one DHT improvement, we should consider building a foundation for broader DHT experimentation, allowing us to test, iterate, and optimise a variety of DHT structures and algorithms. A versatile DHT platform needs a modular design which should clearly define and allow modifications to key attributes such as distance metrics, routing algorithms, and communication protocols, enabling integration of new features or changes.
However, Kademlia still remains central to IPFS for the near term. We need to dedicate resources to its refinement, ensuring that its implementation is as robust and efficient as possible, while we determine how best to make room for other designs or their features in a new DHT foundation.
The text was updated successfully, but these errors were encountered: