Un lenguaje hablado en bytes
Que un extraño pregunte a otro, y nadie en medio.
Dos programas que nunca se conocieron pueden hablar, y cada uno decide por sí mismo a quién deja entrar. Ningún servidor se interpone, no hay cuenta que abrir, y un extraño en la puerta no averigua nada. Quo es lo que significan los bytes: unas pocas formas JSON y seis algoritmos, y nada más.
- Te invitan. La tarjeta va por cualquier canal.
- Llamas. Te dejan entrar una vez, la primera clave muere, y nadie que vio la tarjeta puede hablar ahí.
- Pides. Sellado, bajo una clave que no deja de moverse.
- Un extraño lo intenta. Vuelve una hoja en blanco, envíe lo que envíe.
Cómo leer el dibujo
- Una casa. El hueco de su anillo es el portero, su única puerta.
- Una cabina roja. Esta casa tiene la llave y entra para preguntar.
- Una cabina morada. La casa la construyó y regaló su llave.
- La cabina gris. Cualquiera puede entrar, firmando con una llave propia.
- Un extraño. Envíe lo que envíe, recibe la misma hoja en blanco.
Qué es Quo
Quo es lo que significan los bytes de una puerta: las formas JSON que lee y escribe, y seis algoritmos. Una frase le pertenece por una de dos razones.
Una puerta es una función
Entran bytes, salen bytes o nada. Quo es lo que significan esos bytes, y nada de lo que hay detrás de la puerta.
Dos extraños deben coincidir
Dos kits que nunca se conocieron no podrían intercambiar bytes correctamente si ambos no leyeran la frase del mismo modo.
Ningún kit puede aportarlo
Ningún kit podría aportarlo por sí mismo. Ningún kit puede decidir solo qué significa la semilla de otro, así que la derivación de la clave del ward es de Quo.
Lo que no cumple ninguna de las dos no es de Quo. Ni se pide ni se prohíbe.
El modelo es JSON: una gramática que cualquiera lee, sin opinión sobre lo que se escribe en ella. Todo lo que un kit podría decidir queda fuera, por sensato que sea.
Cada regla dice qué significan unos bytes. Ninguna regla dice que alguien deba hablar.
Qué no es Quo
Quo es el hueco en el muro y lo que lo cruza, y nada más.
Solo la puerta
Lo que vive dentro del muro, y lo que transporta los bytes fuera de él, no son de Quo.
Sin runtime
Qué hay detrás de una puerta, quién es su dueño y cómo guarda, son cosa de cada kit.
Sin cuenta
Una relación empieza con una invitación que va por cualquier canal, y no se registra nada.
Sin directorio
El descubrimiento y la identidad quedan fuera de Quo. Una invitación puede decir dónde se alcanza su ward, una respuesta puede decir dónde se alcanza ahora, y Quo no lista ningún ward.
Sin consejos
Quo ofrece un comprobador, y nunca una forma de construir un kit.
Quo no aloja nada, no registra nada, no lista nada y no dirige nada. El día que opere un servicio, es un producto.
Qué prometen los bytes
Autenticidad
Cada petición y cada respuesta se firma y se comprueba contra los bytes tal como se recibieron. Más
Confidencialidad
Cada petición se sella para el candado del ward bajo una clave nueva, y cada respuesta solo para esa clave. El método, los argumentos y la respuesta viajan todos dentro de la caja. Más
Sin oráculo
El caso de cada extraño vuelve como una sola respuesta de una sola longitud, así que los bytes no distinguen nada. Más
Propiedad cuando la puerta elige ante la llamada
En cuanto una puerta elige ante la llamada, la relación pertenece a la clave que acuñó quien llamó, y nadie que vio la invitación puede hablar en ella. Más
Cinco kits, y ninguno es referencia
Go, Zig, Python, JavaScript, Rust. Cada uno se escribió en frío, por un agente que solo tenía los documentos publicados y el verificador, y nunca otro kit.
Cada kit pasa el verificador por sí solo, y cada pareja pasa en ambas direcciones.
La IA es el método, y la completitud es la prueba: kits escritos a ciegas coinciden.
Quo lo desarrolla, audita e implementa la IA bajo la decisión de una persona.
Dónde está
Un lenguaje en funcionamiento antes de 1.0.0, sin ningún despliegue en producción.
Lo mantiene Razvan Gherghina bajo Apache-2.0, y nadie externo lo ha auditado.
La spec se congela una vez, en 1.0.0.
Un fallo se comunica a spec@quo.systems