Skip to content

Commit 2db8a7c

Browse files
feat: Q4 commitments (#283)
1 parent d6f8631 commit 2db8a7c

8 files changed

+598
-13
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
---
2+
3+
title: nim-libp2p c-bindings
4+
tags:
5+
- "2025q4"
6+
- "p2p"
7+
- "ift"
8+
draft: false
9+
description: Provide c-bindings for nim-libp2p
10+
11+
---
12+
13+
`vac:p2p:ift:2025q4-nimlibp2p-cbindings`
14+
15+
Expose nim-libp2p functionality via a c static library, enabling external projects (e.g. logoscore) to integrate without depending on nim toolchains. Implementation may leverage [nim-ffi](https://github.com/waku-org/nim-ffi) and/or [nim-library-template](https://github.com/logos-co/nim-library-template/) as well as previous learnings from building libwaku to simplify binding generation and library packaging.
16+
17+
## Description
18+
19+
Deliver a minimal set of c-bindings around nim-libp2p core. The bindings should cover basic node lifecycle, peer connectivity, and stream i/o. This enables downstream projects like logoscore to embed libp2p functionality directly. Stretch goals include exposing Gossipsub and custom protocol support, which may be deferred to 2026q1.
20+
21+
## Task List
22+
23+
### Core Bindings
24+
25+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-cbindings:core`
26+
* owner:
27+
* status: not started
28+
* start-date:
29+
* end-date:
30+
31+
#### description
32+
Implement and test c-bindings for core nim-libp2p functionality. Exported functions must include:
33+
- switch builder
34+
- start/stop node
35+
- access node peer's information (addresses, peerId)
36+
- connect/disconnect peer
37+
- dial peer on protocol
38+
- read/write stream
39+
- close stream
40+
41+
#### Deliverables
42+
- Static c library build artifact
43+
- Header file exposing ffi-safe api
44+
- Integration tests demonstrating basic usage
45+
- Documentation
46+
47+
---
48+
49+
### kademlia
50+
51+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-cbindings:kademlia`
52+
* owner:
53+
* status:
54+
* start-date:
55+
* end-date:
56+
57+
#### description
58+
Extend c-bindings to expose Kademlia functionality. This task depends on `vac:p2p:ift:2025q4-nimlibp2p-kad-dht`.
59+
Exported functions must include:
60+
- Bootstrap
61+
- Find Node / Put Value / Get Value / Set Providers / Get Providers
62+
- Discovery
63+
64+
#### deliverables
65+
- Updated c header + library with kademlia api
66+
- Tests verifying kademlia behavior via ffi
67+
- Documentation
68+
69+
---
70+
71+
### gossipsub
72+
73+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-cbindings:gossipsub`
74+
* owner:
75+
* status:
76+
* start-date:
77+
* end-date:
78+
79+
#### description
80+
Extend c-bindings to expose Gossipsub Functionality. Exported functions must include:
81+
- start/stop gossipsub
82+
- publish/subscribe
83+
- add/remove validators
84+
85+
#### deliverables
86+
- Updated c header + library with gossipsub api
87+
- Tests verifying pub/sub behavior via ffi
88+
- Documentation
89+
90+
91+
### Custom Protocols
92+
93+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-cbindings:custom-protocols`
94+
* owner:
95+
* status:
96+
* start-date:
97+
* end-date:
98+
99+
#### Description
100+
Provide FFI to register and handle custom protocols from c, enabling downstream applications to define custom behaviors.
101+
102+
#### Deliverables
103+
- FFI API for custom protocol registration
104+
- Example implementation + tests
105+
- Documentation
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
3+
title: nim-libp2p IPv6 support
4+
tags:
5+
- "2025q4"
6+
- "p2p"
7+
- "ift"
8+
draft: false
9+
description: add first-class IPv6 support across transports
10+
11+
---
12+
13+
`vac:p2p:ift:2025q4-nimlibp2p-ipv6`
14+
15+
Enable IPv6 support
16+
17+
## Description
18+
19+
Enable IPv6 in nim-libp2p end-to-end so users of the library can run dual-stack when needed. Scope covers transports (tcp/quic), address handling (multiaddr, identify), and ci/test infra.
20+
21+
## Task List
22+
23+
### Core transports (tcp/quic)
24+
25+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-ipv6:transport`
26+
* owner:
27+
* status: not started
28+
* start-date:
29+
* end-date:
30+
31+
#### Description
32+
Add IPv6 listen/dial for tcp and quic. Might require changes in chronos
33+
34+
#### Deliverables
35+
- nodes can listen on /ip6 and accept inbound requests
36+
- dialer can dial /ip6 addresses
37+
38+
39+
### addresses & identity
40+
41+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-ipv6:addresses`
42+
* owner:
43+
* status: not started
44+
* start-date:
45+
* end-date:
46+
47+
#### Description
48+
Add IPv6 support in the switch when specifying listening multiaddresses containing ip6 component.
49+
Ensure ip6 addresses are advertised in identify.
50+
Implement measures to handle duplicated IPs in peerstore/addresses being listened to (i.e 192.0.2.42 vs 2001:db8::1234).
51+
52+
#### Deliverables
53+
- Identify advertises correct /ip6 addrs; observed addrs tracked per transport
54+
55+
56+
### Testing, Interop & CI
57+
58+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-ipv6:testing`
59+
* owner:
60+
* status: not started
61+
* start-date:
62+
* end-date:
63+
64+
#### Description
65+
Ensure IPv6 support and ensure there are no regressions in IPv4 support. Add test units demonstrating the support, and check that interop against other implementations is achieved
66+
67+
#### Deliverables
68+
- Test units focusing on IPv6
69+
- Interop tests against other implementations that support IPv6
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
3+
title: Kademlia DHT
4+
tags:
5+
- "2025q4"
6+
- "p2p"
7+
- "ift"
8+
draft: false
9+
description: Implement Kademlia DHT
10+
11+
---
12+
13+
`vac:p2p:ift:2025q4-nimlibp2p-kad-dht`
14+
15+
Implement Kademlia Distributed Hash Table in nim-libp2p, based on the [libp2p specification](https://github.com/libp2p/specs/blob/master/kad-dht/) as an additional discovery mechanism.
16+
This commitment involves two main objectives: implementing nim-kademlia-dht, integrating this in nim-libp2p and making sure there is interoperability with other libp2p implementations.
17+
This deliverable continues the work started in 2025q2
18+
19+
## Task List
20+
21+
### Routing table and RPC Protocol
22+
23+
* fully qualified name: `vac:p2p:ift:2025q2-nimlibp2p-kad-dht:routing-and-rpc`
24+
* owner:
25+
* status: 50%
26+
* start-date: 2025-04-08
27+
* end-date:
28+
29+
#### Description
30+
Implement Kademlia’s XOR-based routing table with bucket management. Define RPC messages (`PING`, `SET_VALUE`, `GET_VALUE`, `SET_PROVIDERS`, `GET_PROVIDERS`, `FIND_NODE`) for node communication.
31+
32+
#### Deliverables
33+
34+
35+
36+
### Bootstrapping & Lookup Mechanism
37+
38+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:bootstraping-and-lookup`
39+
* owner:
40+
* status: 35%
41+
* start-date: 2025-05-05
42+
* end-date:
43+
44+
#### Description
45+
Enable nodes to join the network via bootstrap peers. Implement iterative lookup for efficient key
46+
discovery and retrieval
47+
48+
#### Deliverables
49+
50+
51+
52+
### Network Maintenance & Node Management
53+
54+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:network-maintenance-node-management`
55+
* owner:
56+
* status: not started
57+
* start-date:
58+
* end-date:
59+
60+
#### Description
61+
Handle bucket refresh, node eviction, and periodic pings to maintain an active routing table.
62+
Implement bucket splitting and adaptive refresh strategies.
63+
64+
#### Deliverables
65+
66+
67+
68+
### Data Storage & Replication
69+
70+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:data-storage`
71+
* owner:
72+
* status: started
73+
* start-date: 2025-07-28
74+
* end-date:
75+
76+
#### Description
77+
Implement the logic for `SET_VALUE` and `SET_PROVIDERS`. Store key-value pairs with expiration and replication mechanisms.
78+
Ensure values persist despite churn, using periodic re-publication and redundancy strategies
79+
80+
#### Deliverables
81+
82+
83+
### Data Retrieval
84+
85+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:data-retrieval`
86+
* owner:
87+
* status: not started
88+
* start-date: 2025-07-28
89+
* end-date:
90+
91+
#### Description
92+
Implement the logic for `GET_VALUE` and `GET_PROVIDERS`. Implement validation and quorum mechanisms for queries
93+
94+
#### Deliverables
95+
96+
### Discovery
97+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-kad-dht:discovery`
98+
* owner:
99+
* status: 15%
100+
* start-date: 2025-07-20
101+
* end-date:
102+
103+
#### Description
104+
Extend nim-libp2p discovery mechanism by providing a discovery interface that will use Kademlia DHT to advertise nodes and find peers
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
3+
title: Nim-libp2p maintenance
4+
tags:
5+
- "2025q4"
6+
- "p2p"
7+
- "ift"
8+
draft: false
9+
description: Maintain nim-libp2p through improvements, bug fixes, and user support
10+
11+
---
12+
13+
`vac:p2p:ift:2025q4-nimlibp2p-maintenance`
14+
15+
Maintain nim-libp2p through improvements, bug fixes, and user support
16+
17+
## Description
18+
19+
Continue supporting and maintaining the nim-libp2p repository through ongoing improvements, refactoring, and bug fixes.
20+
This includes a range of ad-hoc tasks critical to sustaining code quality, overall stability, correct functionality,
21+
and performance of the project.
22+
Additionally, it provides a platform for addressing small developer requests,
23+
ensuring that nim-libp2p remains functional and usable for its primary users — Nimbus and Waku — helping to meet their evolving needs."
24+
25+
## Task List
26+
27+
### Maintenance
28+
29+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-maintenance:maintenance`
30+
* owner: rramos
31+
* status: not started
32+
* start-date: 2025/10/01
33+
* end-date: 2025/12/31
34+
35+
#### Description
36+
Maintain [nim-libp2p](https://github.com/vacp2p/nim-libp2p) repository via improvements, refactors and bug fixes.
37+
38+
#### Deliverables
39+
- [[Deliverable] Maintenance 2025Q4](TODO)
40+
41+
42+
### Gossipsub Interop tests
43+
44+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-maintenance:gossipsub-interop-tests`
45+
* owner:
46+
* status: not started
47+
* start-date: 2025/10/01
48+
* end-date: 2025/12/31
49+
50+
#### Description
51+
Integrate libp2p test plans' [GossipSub interop tests](https://github.com/libp2p/test-plans/tree/master/gossipsub-interop) as part of the CI tests executed on each PR
52+
53+
#### Deliverables
54+
- New github workflow: `Interoperability Tests / Run GossipSub interoperability tests`
55+
56+
57+
### Fix flaky tests
58+
59+
* fully qualified name: `vac:p2p:ift:2025q4-nimlibp2p-maintenance:flaky-tests`
60+
* owner:
61+
* status: not started
62+
* start-date: 2025/10/01
63+
* end-date: 2025/12/31
64+
65+
#### Description
66+
Continue to systematically track flaky tests using CI logs and failure reports,
67+
and fix root causes where reproducible (e.g. race conditions, timeouts, dependency order)
68+
69+
#### Deliverables

0 commit comments

Comments
 (0)