Replies: 1 comment 3 replies
-
Libp2p does seem to be a fairly popular library used for building networked applications, so testing at least the Rust version could make sense. I don't know how I feel about adding all of the various languages, but if those are hidden behind the One important thing is that any code that gets added really needs to be solidly tested. Like, ideally including
I don't mean to add unnecessary hurdles to progress, but right now we lost two full time shadow developers and so we're all maintaining in our spare time so we want to make sure everything that gets added is rock solid. This is especially true since we still haven't finished our Rust migration. I want to make sure we are not adding too many features that aren't well tested because it could hurt the excellent stability we've built up over the last few years. I suggest that before you move forward with implementing more new features, you first take a step back and get some additional experience writing tests (ie some follow up PRs requested in #3198 (comment)) so that you'll be better prepared to test the new libp2p code too. Does that sound reasonable? Also, I wonder what @sporksmith and @stevenengler think? |
Beta Was this translation helpful? Give feedback.
-
Hi, my name is Pop. I'm from the Ethereum Foundation.
Since, in the blockchain world, Libp2p is heavily used in many projects, including all the Ethereum implementations, and many people working on those projects are also interested in using Shadow, I think it would be good if we can add Libp2p to the CI tests so that we can ensure that all the future versions of Shadow will work well with Libp2p.
What do you think about the idea?
I'm thinking about adding two protocols of Libp2p into the tests first: GossipSub and Kademlia DHT. See the following for Rust implementation of Libp2p.
https://github.com/libp2p/rust-libp2p/tree/master/examples/chat for GossipSub
https://github.com/libp2p/rust-libp2p/tree/master/examples/ipfs-kad for Kademlia DHT
If that's okay, I will work on implementing any missing syscalls in Shadow to support those implementations and also add the tests myself to the Shadow code base.
Libp2p has many implementations implemented in many languages. See https://libp2p.io/implementations/. I think I will use only rust-libp2p first, since it's probably the language you're most familiar with.
However, if you are okay, it's also good to add go-libp2p, nim-libp2, and jvm-libp2p later as well.
Beta Was this translation helpful? Give feedback.
All reactions