Representing Python notebooks as dataflow graphs
marimo — новый open-source Python-ноутбук, в котором программа представлена графом потока данных. Это снимает главные боли Jupyter: скрытое состояние, невоспроизводимость, невозможность повторного использования и сложную поддержку.
Почему старый формат не подходит
- Воспроизводимость. Исследования 2019–2020 гг. показали: только 4–24 % ноутбуков на GitHub можно перезапустить без ошибок и получить те же результаты. Причина — скрытое состояние: удаление или переупорядочивание ячеек ломает выводы.
- Интерактивность. В Jupyter интерактивен процесс, но не сами данные: выделение точек на графике не возвращает датафрейм.
- Поддержка и переиспользование. Файл
.ipynb
— это JSON-блоб, не валидный Python-код; сложно версионировать в Git и переиспользовать как модуль или пайплайн.
Как marimo решает задачу
- Каждый ноутбук — корректный Python-скрипт и модуль.
- Граф зависимостей ячеек строится статически; изменение одной ячейки автоматически перезапускает только зависимые.
- Реактивность: обновление переменной мгновенно отражается во всех графиках и виджетах.
- Один файл можно экспортировать как приложение или запускать без ядра Jupyter.
Комментарии (27)
- Пользователи хвалят marimo за реактивное исполнение, «песочницу» uv и лёгкий обмен с коллегами.
- Сторонники Jupyter считают, что «restart kernel & run all» решает проблему воспроизводимости, но критики отвечают: это требует дисциплины и не работает при тяжёлых вычислениях.
- Некоторые видят в ноутбуках лишь инструмент разведки и предлагают после исследования переносить код в обычные .py-файлы.
- Участники сходятся, что метаданные зависимостей и чистые DAG-подобные модели вычислений могли бы улучшить ситуацию.