什么是 Binder 项目?
Binder 项目为每个人提供了一个轻松共享计算环境的地方。它允许用户指定自定义环境并通过一个链接共享它们。用例包括研讨会、科学工作流和团队之间的精简共享。
Binder 项目构建了奖励可复制数据科学最佳实践的工具,利用社区开发的可复制性标准。当存储库遵循这些最佳实践并托管在在线存储库中时,Binder 会自动构建一个可链接的环境,供任何人访问。
Binder 有什么用途?
- 教学和培训 - Binder 让你可以与学生共享指向交互式数据分析环境的链接。这非常适合研讨会、教程和课程,让你可以更快速地让学生上手代码。例如,软件木工使用 Binder 链接进行他们的新手 Python 课程。
- 技术文档 - Binder 工具可用于为文档和工具演示提供交互性。它已被广泛使用(Scipy 和 Pycon 研讨会。“你是否也喜欢在研讨会的前半部分花时间整理如何安装东西?”)。例如,scikit-learn 文档使用 Binder 让用户尝试他们的示例。
- 开放教育资源 - 想共享使用数据科学且可公开访问的教育材料?Binder 可以为读者提供交互性,让他们获得更丰富的阅读体验。例如,加州大学伯克利分校使用 Binder 让其他人与开放数据科学教科书进行互动。
- 可复制的科学分析 - Binder 允许你与你的代码和分析共享一个交互式环境。你可以共享一个链接,让其他人复制和与你的工作进行互动。例如,Neurolibre 项目使用 Binder 复制神经科学分析。
Binder 项目的指导原则
Binder 项目在设计其技术及其周围的实践时使用以下原则。这是一个非详尽列表。
- 存储库应具有可读性和机器可读性。
- 如果存在现有规范和标准,请使用它们。在与 Binder 服务的社区协商后采用新规范。
- 支持多种语言和界面。尽可能与工作流无关。
- 轻量级且范围紧凑,但可扩展到新的工作流、平台、云供应商等。
简而言之,如果你遵循计算科学中的最佳实践,你的存储库应适用于 Binder。
Binder 堆栈中有什么?
Binder 完全由开源基础设施堆栈提供支持。它的两个主要工具是 BinderHub(一个在云中部署 Binder 服务的开源工具)和 repo2docker(从 git 存储库生成可复制的 Docker 映像)。Binder 团队还作为一项免费的公共服务在 mybinder.org 上运行公共 BinderHub 部署,以服务于社区。
repo2docker
repo2docker 是一款轻量级工具,可将代码存储库转换为可复制的 Docker 镜像。它定义了可复制执行环境规范,该规范用于定义将存储库配置文件转换为 Docker 镜像的规则。
BinderHub 广泛使用 repo2docker,但也可以作为独立的基于命令行的工具运行,用于生成自己的可复制 Docker 镜像,这些镜像使用 Jupyter 服务器运行。
要详细了解 repo2docker,请参阅repo2docker 文档。
BinderHub
BinderHub 是一款 Web 应用程序,允许用户从代码存储库创建可共享、可交互、可复制的环境。它使用 repo2docker 为每个环境生成 Docker 镜像,并使用 JupyterHub 从这些镜像提供交互式用户会话。
BinderHub 是构建在 Kubernetes(另一种用于管理云基础设施的开源工具)之上的 Web 应用程序。它与云和硬件无关,因此具有可扩展性和灵活性,能够适应许多用例和社区。BinderHub 部署的一个示例位于mybinder.org。
要了解如何部署自己的 BinderHub,请参阅BinderHub 文档。
mybinder.org
mybinder.org 上的 BinderHub 部署是一项免费的公共服务,由 Binder 社区为社区管理。它实际上是许多 BinderHub 部署的联合,作为开放、社区主导的基础设施的一个实验而运行。我们以一种彻底透明的方式运行 mybinder.org 作为一项公共服务,因此有很多关于该部署的信息。如果您感兴趣,这里有一些有用的资源
- mybinder.org grafana 图表显示了有关 mybinder.org 上的 BinderHub 部署的活动和状态信息
- mybinder.org 计费存储库包含与运行 mybinder.org 相关的云成本信息
- mybinder.org 站点可靠性指南是运营团队和社区共享最佳实践和有关在 mybinder.org 上运行公共 BinderHub 部署的信息的资源
- mybinder.org 事件报告页面包含公共部署中发生事件的列表,以及解决这些事件的步骤。
加入或联系 Binder 社区
与所有 Project Jupyter 工作一样,Binder 项目是一个开源且社区驱动的项目。我们希望您加入我们的社区并贡献代码、时间、评论或赞赏。
- JupyterHub 团队指南是 JupyterHub 社区共享信息、团队实践和重要信息的资源。
- JupyterHub 团队页面列出了 JupyterHub 和 Binder 团队的当前成员。
- JupyterHub 贡献指南是了解如何为 Binder 项目做出贡献的绝佳起点。
- Binder Gitter 频道是 Binder 社区中发生大量实时对话的地方。
- Binder 社区论坛 有很多社区互动和关于使用、运行和为 Binder 做贡献的有用信息。