什么是 Binder 项目?
Binder 项目为每个人提供了一个轻松分享计算环境的平台。它允许用户指定自定义环境,并通过一个链接进行分享。使用场景包括研讨会、科学工作流以及团队间的流程简化与分享。
Binder 项目通过利用社区开发的可复现性标准,构建出能够奖励可复现数据科学最佳实践的工具。当代码仓库遵循这些最佳实践并托管在在线仓库中时,Binder 会自动构建一个任何人都可以访问的可链接环境。
Binder 有哪些用途?
- 教学与培训 - Binder 让您可以与学生分享交互式数据分析环境的链接。这对于研讨会、教程和课程来说非常有用,能让学生更快地开始运行代码。例如,Software Carpentry 在他们的 Python 新手课程中就使用了 Binder 链接。
- 技术文档 - Binder 工具可用于为文档和工具演示提供交互性。它已被广泛使用(例如在 Scipy 和 Pycon 研讨会上。“你是否也喜欢把研讨会的前半段时间花在解决如何安装各种软件上?”)。例如,scikit-learn 的文档使用 Binder 来让用户尝试他们的示例。
- 开放教育资源 - 想要分享使用数据科学且可公开访问的教育材料吗?Binder 可以为读者提供交互性,让他们在您的内容中获得更丰富的体验。例如,加州大学伯克利分校使用 Binder 让其他人可以与开放的数据科学教科书进行互动。
- 可复现的科学分析 - Binder 允许您将交互式环境与您的代码和分析一起分享。您可以分享一个链接,让其他人能够复现您的工作并与之互动。例如,Neurolibre 项目使用 Binder 来复现神经科学分析。
Binder 项目的指导原则
Binder 项目在设计其技术和相关实践时遵循以下原则。这并非详尽的列表。
- 代码仓库应同时对人类和机器可读。
- 如果存在现有规范和标准,则应加以使用。在采纳新规范时,应与 Binder 所服务的社区协商。
- 支持多种语言和接口。尽可能做到与工作流无关。
- 保持轻量级和范围明确,但要能扩展到新的工作流、平台、云供应商等。
简而言之,如果您遵循计算科学的最佳实践,您的代码仓库应该就能与 Binder 兼容。
Binder 技术栈包含哪些内容?
Binder 完全由开源基础设施栈驱动。其主要两个工具是 BinderHub 和 repo2docker。BinderHub 是一个开源工具,用于在云端部署 Binder 服务;repo2docker 则用于从 Git 仓库生成可复现的 Docker 镜像。Binder 团队还在 mybinder.org 上运行一个公共的 BinderHub 部署,作为面向社区的免费公共服务。
repo2docker
repo2docker 是一个轻量级工具,可将代码仓库转换为可复现的 Docker 镜像。它定义了可复现执行环境规范,该规范用于定义将仓库配置文件转换为 Docker 镜像的规则。
repo2docker 被 BinderHub 广泛使用,但也可以作为独立的命令行工具运行,用于生成您自己的、可在 Jupyter 服务器上运行的可复现 Docker 镜像。
要了解更多关于 repo2docker 的信息,请参阅 repo2docker 文档。
BinderHub
BinderHub 是一个 Web 应用程序,允许用户从代码仓库创建可共享、可交互、可复现的环境。它使用 repo2docker 为每个环境生成 Docker 镜像,并使用 JupyterHub 从这些镜像中提供交互式用户会话。
BinderHub 是一个基于 Kubernetes 构建的 Web 应用程序,而 Kubernetes 是另一个用于管理云基础设施的开源工具。它与云和硬件无关,这使其具有可扩展性和灵活性,能够适应多种用例和社区。在 mybinder.org 上就有一个 BinderHub 的部署实例。
要了解如何部署自己的 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 项目是一个开源且由社区驱动的项目。我们非常欢迎您加入我们的社区,贡献代码、时间、意见或支持。
- Binder Zulip 频道是 Binder 社区进行实时交流的地方。该频道与 JupyterHub 项目共享。
- Binder 社区论坛有大量的社区互动和关于使用、运行以及为 Binder 做贡献的有用信息。
- JupyterHub 贡献指南是开始学习如何为 Binder 项目做贡献的绝佳起点。
- JupyterHub 团队指南是 JupyterHub 社区用于分享信息、团队实践和重要信息的资源。
- JupyterHub 团队页面列出了 JupyterHub 和 Binder 团队的现任成员。