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

[BOUNTY] Community Improvement Bounty - libp2p - mDNS discovery in go #19

Open
raulk opened this issue Aug 18, 2019 · 7 comments
Open

Comments

@raulk
Copy link

raulk commented Aug 18, 2019

mDNS discovery in go-libp2p

Our mDNS support has been playing up. Help us fix it and get 1000 EUR! 🤑

See devgrant 11 in the libp2p/devgrants tracker: libp2p/devgrants#11

The brief for this bounty can be found here: https://github.com/libp2p/devgrants/blob/master/011-mdns-go-js.md.

How to qualify

Create a go-libp2p-mdns repository, and develop your solution there. It needs to conform to the recently merged mDNS specification, under libp2p/specs.

Two clients with no access to the Internet, connected to the same local network, should be able to find each other automatically via mDNS (as long as multicast UDP is enabled, of course) and initiate a libp2p connection.

Ideally you'd be able to demonstrate this live once you conclude your hacking! Plus points if you demonstrate this with IPFS.

Resources

Make sure you review the referenced spec, as well as the following discussions to gain full understanding of the problems to address:

Feel free to use @raulk as a walking encyclopedia for all things libp2p.

Judging Criteria

  1. Completeness, correctness, cleanliness and maintainability of code.
  2. Unit tests, integration tests.
  3. Documentation / code comments.
  4. It actually works, and you can demo it.

Prizes

  1. 500 EUR via the Community Improvement Bounties fund.
  2. 500 EUR via Protocol Labs.
@raulk
Copy link
Author

raulk commented Aug 22, 2019

Protocol Labs will be chipping in an extra 500 EUR for this bounty! 🎉

@shresthagrawal
Copy link

I am working on it!

@raulk
Copy link
Author

raulk commented Aug 23, 2019 via email

@shresthagrawal
Copy link

Hey! @raulk are you at the space?

@raulk
Copy link
Author

raulk commented Aug 24, 2019

@shresthagrawal not yet, but I believe we’ve connected through telegram. I’ll help you there!

@shresthagrawal
Copy link

Hey! It was nice working with Libp2p. here is the result of my work of past 48 hours. Special Thanks to @raulk for helping. With no sleep and continuous coding, I am sure there might be lot of logging statement and silly mistakes in the codebase; Also there are some parts of the code which still needs to be worked on.

Here is the complete list of what has been done and need to be done:

Parts that are Implemented

  • Marshalar and Unmarshalar for the Querry (BuildQuery(), UnpackMessage())
  • Initialization/Using of Reuse Port (Init())
  • Handler Interface
  • Send Querry

Parts that are partially Implemented

  • Marshalar and Unmarshalar for the Response Message
  • ParsePacket and Call the Handler

Parts that Need to be Implemented

  • UnitTests
  • Examples
  • Code Documentation
  • Better Error Handling .

I will make sure I work on them by this week.
During the hackathon We also go two goods insights for libp2p:

  • The rust-libp2p-mdns implementation is also not compliant with the latest spec
  • It would be helpful to add testVectors of packets/query's in the mdns spec for future implementation .

I will open proper issues and pull request regarding them! Looking forward to work with the Libp2p community :))

@raulk
Copy link
Author

raulk commented Aug 29, 2019

@shresthagrawal thank you so much for taking this on, and for your relentless drive to make it happen!

Kudos for all the discoveries, learnings and contributions you've made during this endeavour. The libp2p community is happy to have you onboard ;-)

I think it would be great for you to open issues under https://github.com/shresthagrawal/go-libp2p-mdns with everything that is pending.

I noticed you opened libp2p/rust-libp2p#1232, thanks for reporting that issue upstream and contributing back.

I'm a bit pressed for time right now, but I will reach out to you on Telegram to continue hacking on this together until we feel it's solid enough to contribute it to the libp2p org.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants