Webglue
Ein Klebstoff-Framework, kein Monolith — Rings Einfachheit, Phoenix’ Anspruch. Webglue ist ein in Praxis geschriebenes Web-Framework aus kleinen, austauschbaren Bibliotheken mit einem gemeinsamen Vertrag: Ein Request ist eine Map, eine Response ist eine Map, und ein Handler ist eine Funktion von einem zum anderen.
Die Idee
Clojures Ring ist eher eine Spezifikation als eine Bibliothek: Ein Handler ist eine gewöhnliche Funktion, und Middleware ist eine Funktion, die einen Handler umhüllt. Webglue nimmt dieses Muster und zieht es durch ein ganzes Framework — Routing, HTTP-Server, Sessions, WebSockets, Pub/Sub, Presence und Server-Push — mit der Vollständigkeit von Phoenix oder Laravel als Ziel.
handler :: Request -> Response middleware :: Handler -> Handler
Eine Webglue-Anwendung ist eine Auswahl zusammengeklebter Bibliotheken. Das Framework ist die Konvention, nicht der Code.
Grundsätze
- Kleiner Kern, austauschbare Ränder.
- Standards zuerst: HTTP/1.1, HTTP/2, RFC-6455-WebSockets, IPv4 und IPv6.
- Entwurf vor Code: Jede Bibliothek beginnt als Spezifikation.
- Keine versteckte Magie im heißen Pfad. Komposition sind lesbare Funktionsaufrufe — keine Makros, kein
use. - Das Frontend ist kein eigenes Ökosystem: Es wird ebenfalls Praxis sein, für den Browser kompiliert.
- Vollständig beim Release, monolithisch nie.
- An den etablierten Standard andocken statt ihn neu zu erfinden — Bandit, Ecto, Absinthe, Oban, Swoosh, Redix.
Drei weitere Entscheidungen stehen fest: Markup ist Daten — ein Baum aus gewöhnlichen Praxis-Vektoren und -Maps, niemals Zeichenketten; das Wire-Format ist DXN, mit JSON als Rückfall; Konfiguration ist CASC.
Ein erster Blick
Die Demo-Anwendung ist eine einzige Funktion. Von unten gelesen: Die Reihenfolge des Umhüllens ist die Reihenfolge der Verschachtelung, und nur hier wird sie festgelegt.
(defn app
"The application: one function, request to response."
[] :spec [-> function]
(-> (router/handler (routes))
(db/wrap {:repo webglue.demo.store.memory})
(wrap-user)
(static/wrap {:root (assets) :at "/assets"})
(session/wrap {:store (memory/store)})))Sprache und Laufzeit
Webglue ist in Praxis geschrieben und läuft heute auf der BEAM: Namespaces werden zu .beam-Modulen, langlebiger Zustand lebt in OTP-Prozessen, und Pub/Sub läuft auf Erlangs pg. Etablierte BEAM-Bibliotheken — Bandit, Plug, WebSock, Redix — kommen über Praxis’ Interop zum Einsatz. Die Frontend-Hälfte ist für Praxis’ Browser-Ziel geplant.
Wo es steht
Version 0.4.0 (29. September 2026) umfasst siebzehn Bibliotheken, alle implementiert und getestet — rund 480 Tests — für den Vertrag, Routing, zwei HTTP-Server, Sessions, statische Dateien, WebSockets, Pub/Sub, Presence, Clustering, Redis, Server-Push, Validierung und eine Nahtstelle zur Datenschicht. Alles ist als experimentell markiert. Bis 1.0 liegt der Fokus auf dem Backend; das Frontend folgt in 2.x.