Parley es una red de chat construida para parecerse al correo electrónico mientras funciona como IRC, sin ningún servidor central. Cada individuo opera su propia instancia pequeña para su propio dominio, y estas instancias se encuentran entre sí a través de DNS y documentos de identidad, intercambiando mensajes firmados a través de HTTPS. El resultado es un sistema de chat federado al que los clientes de IRC estándar como irssi, WeeChat o Textual pueden vincularse directamente, sin necesidad de ningún plugin, utilizando identidades formateadas como direcciones de correo electrónico.
Una corrección reciente solucionó un problema donde una nota enviada a un individuo podría involucrar a varias personas que comparten el mismo nombre de usuario en servidores separados. La corrección altera cómo Parley procesa un nombre de usuario dentro de un mensaje, de modo que un nombre de usuario simple ahora apunta al destinatario en el propio servidor del remitente en lugar de transmitir a todos los que llevan ese nombre de usuario.
Cómo Se Rompieron Los Nombres
Prior to the correction, a message such as bob: lunch? coming from one server would trigger a notification for anyone carrying the handle bob, no matter which server they were attached to. The same held true for a specific handle like bob:bar.com: if bob was present on both foo.com and bar.com within the same chat, a message directed at bob:bar.com alerted both of them, rather than only the one on bar.com.
A fault was detected during testing. The test TestOnlyTheBobThatWasMeantIsPushed connects two cases, each bearing a bob, and verifies that each of the five lines pushes only to the bob it identifies. Running on main, it fails on the opening line: «a notification was pushed to /bar.com/bob and should not have been.»
Corrigiendo Los Nombres Al Leerlos Como Se Muestran
Cómo la corrección lee un nombre depende de cómo el remitente lo mostró:
- A qualified nickname such as
bob:bar.comorbob@bar.comis treated as bob on bar.com, no matter who wrote it. - A bare nickname like
bobis treated as the bob on the sender’s own instance, so it names an account here only when the sender is local. barinsidealice:bar.comoralice@bar.comnames nobody.
The update was recorded as R189. It alters how the pushConsidered function operates, switching to reading s.peers from within it, since the callers of that function already hold s.mu. The integration test ran 10 times in succession without issue, even when run with -race. Running bte check parley.bt shows the same 0 errors and the identical 7 warnings that appear on main, while bte fmt makes no changes to the file at all.
Lo Que Parley Realmente Hace
The Parley setup uses the client you already own. There are two servers: foo.com and bar.com, each running its own stock irssi session. Alice logs into her server; Bob logs into his. When Bob wants to reach Alice, he opens a query with /msg alice@foo.com hi, and the two servers link together right away. Alice then sees Bob as bob on bar.com; Bob sees Alice as alice on foo.com.
lobby is a global channel that copies itself across their instances, and it has no owner, no topic and no operators. The local channels, which carry a tilde (~) rather than a hash, remain within their own instance and stay hidden from other users — that is where the topic can actually be found.
IRCv3 features such as message-tags and echo-message are part of the system. When a message carries tags, those tags remain attached to it. This means that a +reply stays a reply even after it comes back out of history, and draft/multiline keeps a pasted paragraph together as one message instead of splitting it into eight. The scrollback follows the user personally, showing what they have not yet seen, and relies on draft/read-marker to track where they have already read up to.
The accounts themselves sit inside the instance’s data directory rather than in a config file. New ones can be created using parleyctl, the admin page, the HTTP API, or through single sign-on with any OpenID Connect provider, or identity headers from a reverse proxy. Users generate IRC tokens for their clients via their settings page; bots are accounts carrying the bot role.
Por Qué Esto Importa
Parley remains a proof of concept rather than a finished product. It shows the design from start to finish and runs a genuine instance, though it has not been hardened yet. The correction is neat. Instead of altering the notification logic directly, Parley changed how it reads names, which stops the issue at the input stage. The test failure on main made the bug plain to see, and the correction reads names as the sender displayed them, covering every nickname a client could have been shown.
The architecture relies on DNS plus WKID, with _parley._tcp.<domain> SRV records directing traffic toward the server and https://<host>/.well-known/parley/instance.json exposing the ed25519 public key alongside the inbox. A user’s existence is confirmed through .well-known/parley/<user>.json. Each event gets delivered as a signed JSON document POSTed to the recipient’s inbox, with an ed25519 signature in headers verified against the key found by the receiver.
Cuando una instancia se une a un nuevo dominio, se le puede indicar que se conecte automáticamente con otra instancia allí, y las dos se unirán por sí mismas. Una vez enlazadas, las instancias enlazadas comparten los compañeros que ya conocen, lo que provoca la formación de una red sin necesidad de ninguna configuración.
Material fuente: “Parley: Chat federado y descentralizado que habla IRC simple”, mills.io.
Recibe El Cuaderno.
Las mejores historias del día y cada veredicto nuevo, en español claro, en tu correo a las siete. Un correo al día, nada más.

