
To get updates like this one delivered to your inbox, subscribe to our newsletter.
This is your monthly reminder that at marimo, we’re on a mission to make the
world’s best programming environment for working with data, and it’s all free
and open source. Just pip install marimo
or uv add marimo
to get started!
You’re reading the tenth marimo newsletter.
Since the last newsletter was mailed a month ago, we’ve had 10 new releases and many new features, including multi-column notebooks, an execution history panel, and more. We’ll dig into these features in this newsletter, but first, some updates!
🌲 Why Stanford scientists needed a new Python notebook
Before marimo was open source, it was originally developed with input from computational scientists at Stanford’s SLAC National Accelerator Labratory. They had historically used Jupyter, but felt they needed a new kind of Python notebook for their iterative, data-heavy coding work — one that was reproducible and reusable by default. With only 4% of notebooks on GitHub reproducing, Jupyter wasn’t cutting it.
Together with scientists Bennet Meyers and David Chassin, we’ve published a blog that dives into why Stanford scientists needed a new Python notebook, and how they’ve used it in their lab for interactive science communication, reproducible research, and education.
🌐 Open GitHub notebooks in our online playground
You can now open any notebook hosted on GitHub — marimo or Jupyter — in an interactive playground that has access to the repo’s files. This makes it easy to share notebooks with data. To get started, just prepend “marimo.app” to any Python notebook on GitHub;
- Jupyter: https://marimo.app/github.com/jakevdp/PythonData…
- marimo: https://marimo.app/github.com/marimo-team/marimo/…
We even have a bookmarklet that makes this truly 1-click.
The usual caveats with our playground apply: most but not all packages are supported, and notebooks only have access to at most 2GB of RAM, due to limitations with WebAssembly. Learn more about how we implemented this at our Show HN, and read the docs for a usage guide and the bookmarklet.
📚 Templates
We’re building template repositories and notebooks to help you get started with marimo! Copy and modify them to kickstart your own projects.
- Templates repos for working with uv and publishing to GitHub Pages.
- Template notebooks including interactive clustering and building custom labeling tools.
Expect more templates soon. Please open issues or file pull requests to contribute your own!
📰 More news
-
published the roadmap on our blog; please provide feedback if you have any!
Our roadmap. Last newsletter, we shared a sketch of our primary goals on the road to marimo 1.0, which all drive toward building a unified toolchain for working with data, at any scale and wherever it is, and communicating results. We’ve -
✨ A docs revamp. We’ve modernized and reorganized our docs, switching from Sphinx to MkDocs. Check out our new guides on sharing marimo notebooks on the web and making notebooks reproducible down to the packages.
-
🎬 The marimo YouTube channel. marimo now has a YouTube channel, and we’re cooking up some videos! Subscribe to get notified when our first video is published.
️ New features
Edit notebooks in multiple columns
You can now layout notebooks in multiple columns, letting you use your screen real estate to the fullest (docs)!
For example, this feature (which can be enabled through the notebook settings) lets you organize your functions, classes, and constants in one column, and your analyses and experiments in another column. Check out this notebook on dimensionality reduction and clustering for an example.
This feature was contributed by @WasimSandhu.
Use your own editor
We now have initial support for editing marimo notebooks using your editor of choice, and streaming results back to the browser. We still have work to do to enable code completion and language servers in external editors; if you’d like to help, please reach out on Discord or GitHub.
This feature was contributed by @mscolnick.
Cell execution history
The marimo editor has a new panel that drills down into your notebook’s execution history. Use it to track slow cells and visualize execution order.
This feature was contributed by @Light2Dark.
Test notebooks with pytest
You can now test notebooks with
pytest — the works because marimo
notebooks are just Python files. To get started, in a notebook
test_notebook.py
, name cells that should run as tests as test_*
, then run
pytest test_notebook.py
This is a new feature, and the API is evolving (such as for referencing fixtures). If you have suggestions, please open an issue in the marimo repo.
This feature was contributed by @dmadisetti.
🍃 Community
We have over 89 contributors pushing code to marimo, up from 70 last month, and over 1k marimonauts hanging out with us on Discord — come chat! We’ve crossed 9.8k stars on GitHub, up from 8k last month!
Community Roundup
Here’s a roundup of inspiring things the marimo community has been up to in the past few weeks:
- 📖 A side-by-side comparison of Jupyter and marimo in Heise Online
- 📖 Why marimo gives Yonatan “a cozy feeling” (hint: reproducibility!)
- 📖 Run marimo on GPUs seamlessly with Runhouse
- 🦆 Supercharge marimo SQL with Motherduck!
- https://github.com/tschm/cradle Create repos based on templates for experimentation with qCradle, a modern alternative to Cookiecutter
- 🎥 BugBytes shows how to query Polars dataframes with SQL
- 🎥 Charting Python’s rise in popularity (also by BugBytes!)
- 🎥 NeuralNine teaches you how to go from notebook to app in his video on marimo
- 🎥 A crash course on marimo by JCharisTech
- 🎧 Akshay and Lukas Biewald of Weights and Biases talk about the future of notebooks on Gradient Dissent
For more awesome projects from our community, check out our awesome-marimo repo. Feel free to submit your own project via a PR!
the marimo team 🍃
