14 Punkte von GN⁺ 2024-01-14 | 1 Kommentare | Auf WhatsApp teilen
  • Ein Notebook, mit dem sich Daten und Modelle schnell ausprobieren lassen
  • Ausführung auf Zellebene, automatische Berechnung und Aktualisierung
  • Ohne versteckten Zustand jederzeit erneut ausführbar
  • Wird als Python-Datei gespeichert und ist dadurch Git-friendly
  • Notebooks lassen sich in Pipelines umwandeln oder als interaktive Web-App bereitstellen

Reaktive Programmierumgebung

  • marimo gewährleistet die Konsistenz von Notebook-Code, Ausgaben und Programmzustand.
  • Wenn eine Zelle ausgeführt wird, aktualisiert marimo automatisch die Zellen, die auf diese Variablen verweisen, und verhindert so Fehler durch manuelles erneutes Ausführen von Zellen.
  • Wenn eine Zelle gelöscht wird, entfernt marimo die entsprechenden Variablen aus dem Programmspeicher und beseitigt damit versteckten Zustand.
  • Notebooks werden in einer deterministischen Reihenfolge auf Basis von Variablenreferenzen ausgeführt und hängen nicht von der Position der Zellen auf der Seite ab.
  • Interagiert man mit UI-Elementen wie Slidern, Dropdowns oder DataFrame-Transformern, werden die Zellen, die diese Werte verwenden, automatisch mit den neuesten Werten erneut ausgeführt.
  • marimo analysiert den Code statisch und führt nur die Zellen aus, die tatsächlich ausgeführt werden müssen, was die Performance verbessert.
  • marimo enthält verschiedene Komfortfunktionen wie GitHub Copilot, Black-Code-Formatierung, HTML-Export, schnelle Code-Vervollständigung und eine VS Code-Erweiterung.

Schnellstart

  • Installation: Installiere marimo im Terminal mit pip install marimo oder conda install -c conda-forge marimo.
  • Notebook erstellen: Erstelle mit marimo editor ein leeres Notebook und bearbeite mit marimo edit your_notebook.py ein Notebook mit einem bestimmten Namen.
  • App ausführen: Starte mit marimo run your_notebook.py das Notebook als Web-App. Diese App wird in der marimo Cloud bereitgestellt.
  • Als Skript ausführen: Führe mit python your_notebook.py ein marimo-Notebook als Skript aus.
  • Jupyter-Notebook automatisch konvertieren: Verwende die CLI, um Jupyter-Notebooks automatisch in marimo-Notebooks umzuwandeln.
  • Tutorials: Führe marimo tutorial --help aus, um alle Tutorials aufzulisten.

Mehr erfahren

  • Mit marimo können auch Einsteiger leicht loslegen, gleichzeitig bietet es viele Funktionen für professionelle Nutzer.
  • So kann man sich zum Beispiel das mit marimo erstellte Embedding-Visualisierungstool (Video) ansehen.
  • Weitere Informationen gibt es in der Dokumentation, im Ordner examples/ und in der Galerie.

Inspiration

  • marimo denkt Python-Notebooks als reproduzierbare, interaktive und teilbare Python-Programme neu.
  • Ausgehend von der Überzeugung, dass die verwendeten Werkzeuge unsere Denkweise prägen, hofft marimo, der Python-Community eine bessere Programmierumgebung zu bieten.
  • Inspiriert wurde es von vielen Quellen und Projekten wie Pluto.jl, ObservableHQ und Essays von Bret Victor.
  • marimo ist Teil einer größeren Bewegung rund um reaktive Dataflow-Programmierung, in der funktionale, deklarative und reaktive Programmierideen aus Tools wie IPyflow, streamlit, TensorFlow, PyTorch, JAX und React verschiedene Werkzeuge verbessern.

Meinung von GN⁺

  • marimo ist ein innovatives reaktives Python-Notebook, das die Grenzen bestehender Werkzeuge wie Jupyter-Notebooks überwinden will und Experimente mit Daten und Modellen, Vertrauen in die Korrektheit von Notebooks sowie die produktive Nutzung von Notebooks als Pipelines oder interaktive Web-Apps ermöglicht.
  • Das Tool legt großen Wert auf Konsistenz und Reproduzierbarkeit des Codes und verbessert das Programmiererlebnis, indem es die Interaktion mit Benutzeroberflächen-Elementen vereinfacht.
  • marimo erleichtert Zusammenarbeit und Teilen in den Bereichen Data Science, Forschung und Bildung und bietet durch den Aufbau einer Community eine Plattform, die Interaktion und Wissensaustausch zwischen Nutzern fördert.

1 Kommentare

 
GN⁺ 2024-01-14
Hacker-News-Kommentare
  • Als Nutzer von Jupyter- und Observable-Notebooks hatte ich das Gefühl, dass Observable bei der Zell-Reaktivität Schwächen hat, und ich finde, dass dieses Problem hier gut gelöst wurde. Mir gefällt, dass das Marimo-Dateiformat in Python vorliegt, und auch die Apache-2-Lizenz sagt mir zu. Außerdem bin ich beeindruckt davon, wie GitHub-Copilot-Funktionen entdeckt werden.

    • Ein Nutzer von Jupyter- und Observable-Notebooks reagiert positiv auf Marimo, das das Problem der Zell-Reaktivität gut löst, und bewertet das Python-Dateiformat, die Apache-2-Lizenz und die GitHub-Copilot-Funktionen sehr positiv.
  • Bei der Zusammenarbeit mit anderen, die Jupyter Notebook verwenden, waren die Umgebungseinrichtung und der versteckte Zustand von Jupyter problematisch. Dieses Projekt versucht, das zweite Problem zu lösen, opfert dafür aber Flexibilität. Wenn der Schwerpunkt auf Reproduzierbarkeit liegt, kann das ein vertretbarer Kompromiss sein. requirements.txt ist die Standardlösung für ein anderes Problem, aber seine Nutzung ist umständlich.

    • Es werden die Probleme mit der Umgebungseinrichtung und dem versteckten Zustand in Jupyter Notebook angesprochen; zugleich wird erwähnt, dass dieses Projekt Letzteres lösen will, dabei aber möglicherweise an Flexibilität verliert. Die Nutzung von requirements.txt wird als umständlich empfunden, und es wird auf eine bessere Lösung gehofft.
  • Ich freue mich, dass endlich jemand das angeht. Es gibt zwar eine VSCode-Erweiterung, aber schade ist, dass sie statt der bestehenden Notebook-Oberfläche von VSCode eine vollständige Browseransicht öffnet. Außerdem werden Gedanken zu Paketverwaltung und zum Deployment von Produktionscode geteilt.

    • Es werden sowohl Erwartungen als auch Enttäuschung hinsichtlich der VSCode-Erweiterung ausgedrückt, während zugleich die Bedeutung von Paketverwaltung und Code-Deployment betont wird. Zudem wird die Bereitschaft signalisiert, zum Projekt beizutragen.
  • Ich habe ein paar Fragen zur Plattform: Gibt es interaktive Widgets, und wie sehen Abhängigkeiten und Interaktionen mit dem Jupyter-Ökosystem aus? Ich hätte gern eine Erklärung dazu.

    • Es besteht Neugier bezüglich der Unterstützung interaktiver Widgets und der Beziehung zum Jupyter-Ökosystem; außerdem wird Interesse daran bekundet, eigene Widgets auf die Plattform zu portieren.
  • Ich finde, die Jupytext-Erweiterung wird unterschätzt. Sie löst die Probleme von Jupyter bei der Git-Interaktion sowie problematische Programmierpraktiken, die das Schreiben von Bibliotheksdateien behindern. Ich erwarte, dass die reaktiven Updates des neuen Projekts für Einsteiger oder bei komplexen Projekten nützlich sein werden.

    • Die Nützlichkeit der Jupytext-Erweiterung wird hervorgehoben, und es wird erwartet, dass die reaktiven Updates des neuen Projekts Programmieranfängern oder bei komplexen Projekten helfen werden.
  • Die Liste der Abhängigkeiten ist kurz, und abgesehen von tornado zieht nichts viele weitere Zusatzabhängigkeiten nach sich. Das wirkt wie ein sehr nützliches und cooles Projekt.

    • Die Abhängigkeitsliste des Projekts wird als kompakt bewertet, und abgesehen von tornado wird kein großer Ballast gesehen. Die Nützlichkeit und Attraktivität des Projekts werden gelobt.
  • Ich finde Marimo großartig. Mich würde interessieren, ob in Markdown eine Unterstützung für mermaid.js in Betracht gezogen wird.

    • Es wird positiv auf Marimo reagiert, und es wird nach der Möglichkeit gefragt, Unterstützung für mermaid.js in Markdown hinzuzufügen.
  • Ich bin Fan von Akshay und Myles, den Gründern von Marimo, und hoffe, dass ein Konkurrent zu Jupyter dem Ökosystem wissenschaftlicher Tools guttun wird.

    • Es wird Unterstützung für Marimo und seine Gründer ausgedrückt, verbunden mit der Erwartung, dass dieser Wettbewerb positive Veränderungen im Ökosystem wissenschaftlicher Tools bewirken wird.
  • Ich denke, Quarto löst viele der in diesem Thread angesprochenen Probleme von Jupyter. Auch bei den NIH wird der Einsatz von Quarto empfohlen und es werden Schulungen dazu angeboten.

    • Es wird erwähnt, dass Quarto mehrere Probleme von Jupyter lösen kann, und es wird geteilt, dass die NIH den Einsatz von Quarto empfehlen und Schulungen dazu anbieten.
  • Dass dieselbe Variable mehrfach definiert wird, ist ein Fehler. Der Grund dafür ist offensichtlich. Wenn sie aber nur in der Zelle verwendet wird, in der sie erstmals genutzt wird, sollte eine Wiederverwendung des Variablennamens möglich sein.

    • Es wird darauf hingewiesen, dass die Neudefinition von Variablen ein Fehler ist, zugleich aber die Meinung vertreten, dass unter bestimmten Bedingungen eine Wiederverwendung von Variablennamen möglich sein sollte.