Description
Open Grant Proposal: AutoNATv2 implementation for rust-libp2p
Proposer: @umgefahren - Hannes Furmans
Proposal Category: core-dev
Technical Sponsor: @mxinden - Max Inden
Do you agree to open
source all work you do on behalf of this RFP and dual-license under MIT and APACHE2 licenses?: Yes
Project description
Since libp2p is adopting the second generation of AutoNAT, namely AutoNATv2, and there is already a go-libp2p implementation under way (libp2p/go-libp2p#2469), it's time to bring those changes to rust-libp2p.
While addressing these new challenges it might be a good time to fix some low-hanging fruits and legacy code on the way, if there is time.
Project value
Implementing these changes is important to keep rust-libp2p up-to-date with the current libp2p spec. The new AutoNAT solves problems of the old one, namely being able to test reachability on one address, bringing value to the libraries users, for instance Iroh. It's also worth pointing out that the the protocol has decreased complexity, which will make maintenance easier.
The implementation will require some changes to core traits (in simple terms Rust interfaces), which means design, migration and coordination time is necessary.
Deliverables
The deliverables are many pull requests to libp2p/rust-libp2p, introducing and merging the promised new features.
If requested there will also be a report at the end reviewing difficulties and lessons learned on the road, to make it easier for the other libp2p implementations to adopt the changes.
Development Roadmap
All of the implementation work is done by Hannes Furmans with technical and project guidance and advice from Max Inden.
Since it's quite hard to estimate how difficult implementing these changes turns out, the milestones are very likely be subject to change.
25 Sep 2023: Proposed date to start
Number | Milestone | Hours | Cost |
---|---|---|---|
0 | Step 1 of PoC: Adjust Transport::dial | 57,33 | 5.733 |
1 | Step 2 of PoC: Implement AutoNATv2 | 57,33 | 5.733 |
2 | Adjust all Transport and NetworkBehaviour implementations | 57,33 | 5.733 |
Total | 172 | 17.200 |
Hannes will work on a 10-hour-per-week basis, the project will therefore take about 17 weeks in total.
Hannes will do time tracking and state the time it took to complete a milestone. If there is time left, Hannes will work on different issues around the project, filling the remaining time of the grant.
Total Budget Requested
17200 US-$
No VAT charged.
The grant proposer would suggest a pay-by-milestone deal, since the already described issues in estimation. However, a change in cost won't affect an ongoing milestone. The budget stays predictable.
Maintenance and Upgrade Plans
Since the project is about software there will be maintenance costs. The grant proposer will take part in maintenance efforts, balancing current and future obligations. The grant proposer is willing to commit to maintenance efforts, given apporpriate compensation and bandwith.
Team
Team Members
- Hannes Furmans (Software Developer) -
https://github.com/umgefahren - Max Inden (Protocol Labs advisor) - https://max-inden.de
Team Website
None
Relevant experience
Hannes is a frequent contributor to rust-libp2p. He wrote the Tor transport for rust-libp2p and also build software using rust-libp2p.