什麼是 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(一個在雲端部署 Binder 服務的開源工具)以及 repo2docker(能從 Git 儲存庫生成可再現 Docker 映像檔的工具)。Binder 團隊也在 mybinder.org 上運行公用 BinderHub 部署,作為提供給社群的免費公用服務。
repo2docker
repo2docker 是一款輕量級工具,可將程式碼儲存庫轉換為可再現的 Docker 映像檔。它定義了可再現執行環境規格,用於定義將儲存庫組態檔案轉換為 Docker 映像檔的規則。
repo2docker 被 BinderHub 廣泛使用,但也可以作為獨立的命令列工具運行,以生成您自己可在 Jupyter 伺服器上運行的可再現 Docker 映像檔。
若要了解更多關於 repo2docker 的資訊,請參閱 repo2docker 文件。
BinderHub
BinderHub 是一款網頁應用程式,允許使用者從程式碼儲存庫建立可分享、互動且可再現的環境。它使用 repo2docker 為每個環境生成 Docker 映像檔,並使用 JupyterHub 從這些映像檔提供互動式使用者工作階段。
BinderHub 是建立在 Kubernetes(另一款用於管理雲端基礎架構的開源工具)之上的網頁應用程式。它與雲端和硬體無關,使其具備可擴充性與靈活性,並能適應多種應用場景與社群。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 專案是一個開源且由社群驅動的專案。我們非常歡迎您加入我們的社群,並貢獻程式碼、時間、建議或給予肯定。
- Binder Zulip 頻道是 Binder 社群進行即時交流的地方。此頻道與 JupyterHub 專案共用。
- Binder 社群論壇擁有豐富的社群互動,以及關於使用、運行和貢獻 Binder 的實用資訊。
- JupyterHub 貢獻指南是開始了解如何向 Binder 專案做出貢獻的絕佳起點。
- JupyterHub Team Compass 是 JupyterHub 社群分享資訊、團隊實踐和重要資訊的資源。
- JupyterHub 團隊頁面列出了 JupyterHub 和 Binder 團隊的目前成員。