ifp

Garden Patch Home · Inquiries

When to Specify and When to Explore in Protocol Evolution

The Question

Protocol design involves two activities that serve different purposes:

Specification commits to details — field names, message formats, authentication levels, tier names. Specifications create interoperability: two independent implementations can communicate because they agree on the same details. But premature specification locks in tactical choices before enough is known to choose well.

Exploration leaves details open — describing the problem, the design space, and the constraints without committing to specific solutions. Exploration enables discovery: implementations can experiment with different approaches and converge on what works. But insufficient specification prevents interoperability: without shared conventions, implementations diverge.

The tension: specify too early and you lock in mistakes; specify too late and you never converge.

Where This Tension Appears in IFP

IFP’s twelve specifications mix load-bearing architectural decisions with tactical implementation details at the same level of commitment (all are “Draft” status, all use the same normative language):

Load-bearing decisions that benefit from early specification:

Tactical details that might benefit from remaining open:

IFP-2’s status lifecycle (Draft → Proposed → Active) recognizes this tension in principle — Active status requires two independent implementations. But the current specifications do not distinguish between “this is load-bearing architecture we’re confident about” and “this is a tactical proposal we expect to revise.”

What Makes This Worth Investigating

The IETF lesson. The Internet Engineering Task Force learned through decades of experience that “rough consensus and running code” works better than premature specification. IFP-1 explicitly cites this principle. But the current specifications sometimes specify details before running code exists to validate them.

IFP-2’s own standard. IFP-2 requires two independent interoperating implementations before a specification reaches Active status. This is a strong maturity gate for the overall protocol. But within Draft status, there is no mechanism to distinguish load-bearing architecture from tactical proposals.

The minimum viable architecture principle. Christopher Allen’s minimum viable architecture argues: commit to hard-to-reverse decisions early, defer easy-to-change decisions until you know more. Applied to IFP, this suggests the specifications could explicitly mark which decisions are architectural commitments and which are tactical defaults that implementations should feel free to vary.

Possible Directions

Sources

Relations