ADR-005: HTTP/1.1 Before HTTP/2¶
Estado: ✅ Accepted Date: 2026-01-29 Deciders: Rodrigo Roldán
Context¶
Opciones de protocolo HTTP a soportar:
HTTP/1.1: Universal, simple, bien entendido
HTTP/2: Multiplexing, server push, binary framing, HPACK compression
HTTP/3: QUIC, UDP-based
Complejidad relativa:
HTTP/1.1: Parsing de texto, relativamente simple
HTTP/2: Requiere HPACK, multiplexing, binary frames, flow control
HTTP/3: Requiere QUIC stack completo
Decision¶
Implementar HTTP/1.1 completo y robusto ANTES de HTTP/2.
Roadmap de protocolos:
v0.1.x - v0.6.x: HTTP/1.1 complete & robust
v1.0.0: HTTP/2 support added
v2.0.0+: HTTP/3 (maybe)
Criterios para considerar HTTP/2:
âś… HTTP/1.1 RFC 7230-7235 compliant
âś… Chunked transfer encoding completo
âś… Connection pooling robusto
✅ Redirects automáticos
âś… TLS configurable
âś… Tests exhaustivos (97%+)
âś… Production-ready stability
HTTP/2 scope (v1.0.0):
Multiplexing de streams
HPACK header compression
Server push handling
Binary framing
Flow control
Priority
Consequences¶
Positive ✅¶
Mejor foundation: HTTP/1.1 robusto antes de complejidad
Usable hoy: HTTP/1.1 cubre 99% de casos
Menos riesgo: No introducir bugs de HTTP/2 temprano
Debugging simple: HTTP/1.1 es texto legible
Zero dependencies: HTTP/2 sin h2 lib es posible pero complejo
Negative ❌¶
Sin HTTP/2 features: No multiplexing, no server push (por ahora)
Performance limitado: HTTP/1.1 tiene head-of-line blocking
Competencia: httpx ya tiene HTTP/2
Mitigations¶
Roadmap claro: HTTP/2 en v1.0.0 está comprometido
Documentar limitaciĂłn: Ser transparente sobre HTTP/1.1 only
Connection pooling: Mitiga parcialmente lack de multiplexing
Alternatives Considered¶
HTTP/2 desde dĂa 1: Rejected. Demasiada complejidad inicial.
Solo HTTP/1.1 forever: Rejected. HTTP/2 es futuro.
HTTP/3 primero: Rejected. Extremadamente complejo.
References¶
RFC 7230-7235: HTTP/1.1
RFC 7540: HTTP/2
RFC 9114: HTTP/3