-
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
Decide code organisation between repos #120
Comments
@guillaumemichel @dennis-tra what do you think? |
I have a preference for 4. or 5. IMO we should have a single generic DHT repo ( If we can make the state machine generic (not dependent on kademlia logic, libp2p {peerid, addresses, protocolid,...} nor message format), it would be great to add the state machine to However, if making the state machine generic isn't practical, or takes too much effort for now, we can keep it on the EDIT: IMO the new |
+1 for what @guillaumemichel says! For now, let's go with 5 to move faster for now. We could consider to eventually also rename |
We can also keep the |
|
We also have 100+ issues in go-kademlia and some in go-libp2p-kad-dht that need to be migrated. Plus the project board. For me that means There is another option
|
Option 6 also solves our CI issue where we can't run a different CI pipeline for the |
Option 6. also works for me |
It would be annoying but GitHub allows transferring issues to different repositories (though there's no bulk operation and we'd need to use a custom CLI tool that automates that). It would be great to avoid a migration, for sure.
Just to clarify, everything in Semantically, I think it would be more correct for |
I don't really want to bikeshed on naming but there are lots of projects that depend on libp2p without having the (redundant imho) extra mention of libp2p. I'm just suggesting options and will go with the consensus. I don't see an issue with having generic state machines. Someone with a clear view of ongoing requirements needs to write down the responsibilities of each repo. |
I think it will require some reorganisation to reach more clarity about the modules. We could either:
I can write down how responsibilities would be split between the two repos. |
yeah, true. If it's in the I've just looked through the first few pages of the libp2p org's repos, and having |
I don't like perpetuating If we're going to stick with the |
I think it's fine 🤷♂️ Descriptive repo names carry context that lowers cognitive load imo. But yeah, it makes kind of an authoritative claim... I think for go-ipfs/kubo the problem with implying an official status stemmed from the fact that PL was also the inventor of IPFS - which isn't the case for Kademlia. But I also see that we might want to keep room for another Kademlia implementation in Go using libp2p. This could be achieved by choosing a unique name like kubo/boxo. In the past, you suggested naming the new implementation
Initially, that was my preference as well, and also, after our discussion here, I'm still up for it. As you pointed out, this will come with the drawbacks of broken CI for the v2 folder and issue migration overhead. Two solvable things, in my opinion. |
Option 5 seems to have consensus 🥳 |
Cool, a proposal for the next steps in lose ordering:
Am I missing something? I'm happy to take up all of it, although @guillaumemichel offered to do the two writing tasks. Let me know |
@guillaumemichel you mentioned once before that we should remove key.Key8 and key.Key32. Both are only used in tests. Key32 is used by the triert tests and Key8 is used in state machine tests. I can move Key8 to a helper package in go-libp2p-kad-dht/v2/coord/ so there should be no need to move it to go-libdht. The triert tests could easily be rewritten to use Key256 instead of Key32 |
@iand we could also move |
Core types have moved to go-libdht: (moved by probe-lab/go-libdht#2) |
Our thinking on the organisation of code has changed over the past few weeks as we have implemented more and had wider discussions about the future of DHT development. We also want to create go-libdht for the future work.
We need to make a decision on the organisation of code, because the current situation is getting confusing.
Here are some options
go-libp2p-kad-dht/v2
. Keep new types and state machines ingo-kademlia
. Create newgo-libdht
repo for thinking beyond Kademlia, simulations etc..go-libp2p-kad-dht/v2
. Also move Kademlia types (kad + key packages) and state machines togo-libp2p-kad-dht/v2
. Create newgo-libdht
repo for thinking beyond Kademlia, simulations etc.go-kademlia
. Keep Kademlia types (kad + key packages) and state machines ingo-kademlia
. Create newgo-libdht
repo for thinking beyond Kademlia, simulations etc.go-libp2p-kad-dht/v2
. Move Kademlia types (kad + key packages) and state machines to newgo-libdht
repo with simulations etc.go-libp2p-kad-dht/v2
. Move state machines togo-libp2p-kad-dht/v2
since they are for a specific implementation. Kademlia types (kad + key packages) go to newgo-libdht
repo with simulations etc.We would end up with the following repos in each option:
go-libp2p-kad-dht/v2
,go-kademlia
andgo-libdht
go-libp2p-kad-dht/v2
andgo-libdht
go-kademlia
andgo-libdht
go-libp2p-kad-dht/v2
andgo-libdht
go-libp2p-kad-dht/v2
andgo-libdht
The text was updated successfully, but these errors were encountered: