什麼是 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 團隊的現任成員。