ftr - Fast TraceRoute

ftr Improvement Plan

Plan from a full-project review (code, docs, CI, and a feature-gap analysis against SwiftFTR 0.13.0) against Rust best practices as of mid-2026. Sections are stack-ranked — top is next; each is a shippable unit. Delete sections as they merge (git has the history).

Context: ftr is in maintenance mode (SwiftFTR is the primary macOS client), but has external users (GitHub stars, crates.io, APT repo, one open issue — #22 requesting IPv6). The v0.8.0 release (PRs #23–#35) covered docs accuracy, correctness fixes, dependency updates, CI/supply-chain hardening, IPv6 validation spikes, the breaking API cleanup, edition 2024, system DNS resolvers, and the tests lint-debt payoff; what remains is below.

Follow-ups from landed work (small, independent)

Dependency diet (standing theme + a ladder of PRs)

Maintainer directive (2026-07-17): as an overall theme, reduce the size and complexity of the dependency tree — SwiftFTR’s zero-third-party-deps is the aspiration. Every new dependency needs justification; prefer hand-rolled minimal implementations for narrow needs (the 0.7.0 hickory/reqwest/pnet replacements are the model). Baseline 2026-07-17: 78 transitive crates from 10 direct (macOS; Linux adds vendored OpenSSL). Ladder, biggest win first:

Do NOT batch these with feature work; each rung is its own PR with before/after cargo tree counts in the body.

Performance & reliability (two PRs)

IPv6: polish + remaining validation

IPv6 traceroute ships on every supported platform as of 0.10.0 (macOS, Linux, BSD in 0.9.0 via PRs #38–#43; Windows in 0.10.0 via #50), each live-validated on real hardware/VMs with external v6. Remaining:

Feature ports from SwiftFTR (optional, by appetite)

Stack-ranked by fit for a traceroute tool with external users: