本文介绍了 marimo,一个从头开始重构 Python notebook 的项目。作者提出了三个核心需求:可重复性,可维护性和多用途性。为了实现可重复性,marimo 将每个 notebook 建模为一个有向无环图 (DAG),消除了隐藏状态,确保代码和输出始终同步。为了提高可维护性,marimo 使用纯 Python 文件格式,使其易于版本控制和移植。最后,marimo 的 DAG 结构和 UI 元素使其成为多用途工具,可以作为交互式网络应用程序运行,作为脚本执行,甚至可以用于批处理计算。