Executable Book Project

ExecutableBookProject

Executable Book Project,简称 EBP。该网站是一个国际合作项目,旨在构建开源工具,以促进使用 Jupyter 生态系统发布计算性叙述

EBP 的目标是使用开源工具构建,以促进创建专业的计算性叙述(书籍、讲座系列、文章等)的工具。EPB 希望科学、学术和数据科学社区的用户能够做到以下几点:

  • 将它们的内容写在 Markdown 文本文件或 Jupyter 笔记本中。这些文件包含丰富的内容:运行代码的输出、引用和交叉引用、方程等。

  • 执行内容并缓存结果。智能缓存意味着只有修改过的代码单元才会重新运行。

  • 将缓存的输出与文档模型的内容文件结合起来。使用出色的 Sphinx 文档堆栈,文档可以包含许多用于发布的特性,如方程、交叉引用和引用。

  • 构建交互式 HTML 或具有发布质量的 PDF 输出。有时用户希望创建丰富的交互式网站,有时他们希望向发布者发送高质量的 PDF。这个系统将把两者视为平等的公民。

  • 用一个简单的命令行界面控制上面的一切。大多数用户不需要知道任何关于 Sphinx、缓存等内容。一个简单的用户界面将隐藏这个过程的大部分复杂性。

请参阅 工具 部分,以获得 EPB 项目一部分创建的工具的一些示例。

EPB 的原则和约束

在运行 EPB 项目时,需要坚持几个原则,EPB 相信这些原则将产生与开源社区的核心原则一致的高质量技术。以下是一些关键的组成部分:

  • 给予普通用户和高级用户同等的支持。为了支持“高级用户特性”而使特性空间复杂化,应该非常小心。

  • 有用的模块组件构建在其他地方。与其构建一个单一的垂直堆栈,不如找到工作流中自然分离的部分。为这些部分创建模块化工具,这样它们就可以在构建交互式书籍的环境之外使社区受益。

  • 尽可能使用现有的技术。与其重复发明轮子,不如尽一切努力利用现有的开源技术。

  • 尽可能使用已有的标准。当我们必须创建新的内容创建模式或工具时,尽可能地利用开源社区中的现有技术,特别是在标记语言方面。

  • 上游的改进作出贡献。在我们利用现有工具的地方,在我们为这个项目构建它们时,对它们做出改进。

  • 为未来设计。虽然现在有一些资金,但它不会永远持续下去。这意味着该技术应该易于潜在的开发人员阅读、理解和修改/改进。

  • 用户不需要了解构建系统的任何信息。如果他们想深入研究我们的基础设施,他们可以,但是 Sphinx、Latex 等知识不应该是必需的。他们应该只需要使用一个简单的工具来控制过程。

  • 不要试图做所有的事情。将我们的工具集中在发布计算文档,并为用户做出合理的选择。