marimo erklärt: reaktive Python-Notebooks als testbare Skripte
Eine Analyse von Abhängigkeitsgraph, reinen Python-Dateien, SQL, UI-Elementen, App-Betrieb und WebAssembly sowie den Grenzen der versprochenen Reproduzierbarkeit.
Einordnung und aktuelles Signal
marimo ist ein reaktives Python-Notebook, das als normale `.py`-Datei gespeichert wird; Definitionen und Referenzen verbinden die Zellen. Zum Abrufzeitpunkt zählte das Repository 21.925 Stars, rund 171 Commits in 30 Tagen und Release 0.23.14. Der Ansatz richtet sich gegen verborgenen Zustand, veraltete Resultate aus falscher Reihenfolge und schlecht prüfbare JSON-Differenzen.
Einsatzfelder und Funktionen
Das Werkzeug eignet sich für Datenexploration, SQL-Analysen, Modellversuche, Unterricht, interaktive Berichte und interne Anwendungen. UI-Elemente übergeben Werte aus Reglern, Tabellen und Formularen an Python; SQL-Zellen liefern Dataframes. Dieselbe Datei lässt sich bearbeiten, als Skript ausführen oder als schreibgeschützte App bereitstellen. KI-Unterstützung ist optional und keine Voraussetzung für die Laufzeit.
Funktionsweise der Reaktivität
marimo analysiert statisch, welche Namen jede Zelle definiert und liest, und erstellt daraus einen gerichteten azyklischen Graphen. Nach einer Änderung laufen nur abhängige Zellen in topologischer Reihenfolge; beim Löschen verschwinden die Definitionen. Mehrere Definitionen derselben Variable sind verboten. Verzögerte Ausführung schützt teure Berechnungen, doch Änderungen innerhalb eines veränderlichen Objekts können unbemerkt bleiben.
Technik und Dateimodell
Backend und Notebook-Code bestehen überwiegend aus Python, die Browseroberfläche nutzt TypeScript und React. Ein Notebook ist ein importierbares, testbares Python-Programm mit lesbaren Git-Diffs. Im App-Modus lösen UI-Werte Berechnungen im Backend aus. Die WebAssembly-Ausgabe verwendet Pyodide für Python im Browser; das vereinfacht serverlose Demos, begrenzt aber Pakete, Ressourcen, Netzverkehr und dauerhafte Speicherung.