跳到主要內容

2016-06-03

時間:14:00 UTC

Hangout 連結: https://hangouts.google.com/call/v5olhwzpfzgzpoq5i3wthjpqpie

出席者

Ray, Matt, Jonathan, Phil, Jonas, Michael, Philippe, John, Bjorn Gruning, Jan

常設項目

  • 有多少個儲存庫?
  • 有多少位貢獻者?
  • 新的核心開發人員?

議程

  • PyPI metadata 冗餘

  • Python3 vs Python==3

  • 如何從 Python==2 環境依賴需要 Python 3 的應用程式 (包括建置依賴項)

  • 「子環境依賴項」是一種可能的替代方案

  • 新增 soname 意味著共存。這並非總是可行。在這些情況下新增 soname?

  • 啟動:有時需要較舊的依賴項來建置當前的事物 (循環依賴項也可能需要子環境)

  • Conda build 以取得拆分建置

    *   runtime packages will have sonames
    • 開發套件不會 - 它們將具有版本。這會強制執行互斥性。給定開發套件的版本,然後適當地決定執行時期依賴項 soname。
  • 在 SciPy 2016 (7 月 11-17 日) 提出的子環境黑客松

  • 底層封裝

  • NetCDF (還有 curl/ca-certificates 和 Perl 套件) - 完成了嗎?

    *   curl and ca-certificates are done and available. 

    *

    • Perl 與此流程不再相關
  • GitHub 速率限制。我們還可以如何進一步緩解這些問題?

  • 為套件新增命名空間 `node-`、`ruby-`、`perl-`,為何不包括 `python-` ;-)
    • 「實用性勝過純粹性」;-)
    • 至少一開始是這樣,但我認為這並非普遍適用。
    • 在 Continuum 提出的其中一件事是主要命名空間的概念 - 有效地定義了套件命名空間的預設前綴。這可能是兩全其美的最佳方案。您也可以有排序的優先順序:先搜尋 python-*,然後搜尋 node-*,最後搜尋沒有前綴的完整套件名稱。此優先順序可以由每個環境的 condarc 定義,初始設定取決於安裝哪些套件。例如,首先使用 python 安裝建立環境將使 python 成為主要環境。
    • 我可以理解這種吸引力,但它似乎是造成相當大混亂的潛在根源 (例如,為什麼在此環境中安裝 x 的方式與在彼環境中不同?)。如果命名空間實際上是新語法的一部分,而不是套件名稱的前綴,那麼這可能會更可行。
    • 當然,這是合理的 - 將命名空間搜尋功能設為使用者定義的便利功能,而不是自動決定的功能。
    • 值得記住的是,Python 命名變更將與現有的 Continuum 套件有很大的區別。因此,不應輕易做出此決定。
  • 這裡要考慮的另一件事可能是新的 metadata。例如,我們可以指定套件的主要語言。然後,我們可以指定給 `conda install` 我們想要套件的這種語言。可能的語法可能包括類似於上述語法的語法。不確定如果我們想要錯誤、警告並安裝所有內容或其他內容,我們要如何處理衝突。

  • 我們可能會考慮一個更簡單的想法,其中包括 Michael 上面提到的一些想法,但可以在不變更 `conda` 或套件 metadata 的情況下實作,那就是將套件放置在標籤頻道中。這樣,所有 Python 套件都將位於 `conda-forge/label/python` 中。這樣,人們只需新增此標籤頻道即可獲得他們想要的所有 `python` 套件。當啟用多個標籤時,它仍然有點脆弱,但也許這可以利用 Michael Grant 開發的頻道解析功能。

  • PR 審查

    *   Treat every PR as a Work in Progress. At least let PRs sit for a few hours before merging them.
    • 當我們提出澄清問題時,請等待回覆,並在收到回覆之前避免採取行動。
    • 尊重第一位審查者,不要用不同的措辭重複她/他的審查意見。這對提交 PR 的人來說也是不好的,因為這會造成混淆。
    • 避免千刀萬剮:許多小的「吹毛求疵」評論可能會嚇跑新的貢獻者 (ping Mike S ;-)
  • 通知 (我們如何掌握它們)

  • 更多編譯器樂趣

  • MSYS2

    *   Discussing Ray Donnelly's work on MSYS2 packages and how we want to use and integrate these into conda-forge.
    • 一些要考慮的用例:OpenBLAS、FFTW、建置工具,以及其他?
  • 二進位資料

    *   Do we include it in recipes?
    • 如果有的話,我們允許哪些種類 (例如圖示)?
    • 我們如何驗證授權?
    • 我們如何驗證它們是安全的?
  • OpenBLAS (在 Windows 上)

  • 開發版本:它們在哪裡發布?

    *   Do we do them at conda-forge?

    * Maybe add a label.

    * Do we let others do them with a feedstock on their own repo?
    • 我們如何強制執行我們決定的任何事情?
  • Conda-forge 安裝程式

    *   We have Python 3.5 now
    • 仍然需要 `conda`。
    • 新的儲存庫?
    • 我們在哪裡託管安裝程式?Git 標籤?
  • GitHub 速率限制。我們還可以如何進一步緩解這些問題?

    *   GitHub letter ( [](https://docs.google.com/document/d/19HLtYPwg6IKAwmxPwL7Vd3AX0n47ANP-ZTpZROn-Cwc/edit?pref=2&pli=1)[https://docs.google.com/document/d/19HLtYPwg6IKAwmxPwL7Vd3AX0n47ANP-ZTpZROn-Cwc/edit?pref=2&pli=1](https://docs.google.com/document/d/19HLtYPwg6IKAwmxPwL7Vd3AX0n47ANP-ZTpZROn-Cwc/edit?pref=2&pli=1) ).
  • 頻道鏡像。

  • Feedstock 歷史

    *   Is it sacred?
    • 我們是否要變基/強制推送?

          *   If so, under what conditions?
      • 我們如何避免多人同時執行此操作?
  • 考慮申請成為 Numfocus 贊助的專案。

  • 以 SONAME 命名原生程式庫套件 -> conda forge/conda forge.github.io#157

  • Continuum metadata 請求:我們可以將這些添加到 linter 嗎?

    *   example metadata: [](https://github.com/ContinuumIO/anaconda-recipes/blob/master/anaconda-build/meta.yaml#L36-L44)[https://github.com/ContinuumIO/anaconda-recipes/blob/master/anaconda-build/meta.yaml#L36-L44](https://github.com/ContinuumIO/anaconda-recipes/blob/master/anaconda-build/meta.yaml#L36-L44)
    • 另外,區分摘要 (限制為 77 或 80 個字元) 和描述 (無限制)
  • Google Hangouts 的最大容量為 10 人。是否值得考慮其他溝通方式,以便所有想參與的人都能參與?

筆記

自上次會議以來已 3 週

587 個儲存庫,105 位貢獻者 (但有些是機器人)

建議將 Patrick Snape 加入為核心開發人員

PyPI metadata 冗餘

Jinja 模板可能適用於從 PyPI metadata 填入此資料

關於如何維護純 Python 套件的 conda 套件的問題,建議使用現有的 feedstock 設定。似乎所有在場的人都同意這一點。

PyPI RSS/Twitter 檢查新版本

GitHub 發布的 Atom feeds

以 soname 命名程式庫套件

libpng16/17,必須更新和重新編譯釘住版本可能會導致問題。

建議將套件名稱更改為 soname (libpng16、libpng17...),然後多個版本變更

標頭呢?它們是未版本化的。

我們可以在單一環境中安裝同一程式庫的多個版本嗎?

從程式庫中分離開發套件 (包含標頭)?

我們可以按版本號碼追蹤標頭嗎?

當我們將同一程式庫的多個版本載入記憶體時,符號解析是否有效?-- 可能無效

遮蔽系統程式庫可能會導致問題

開發套件將是互斥的、版本化的

程式庫套件以 soname 命名

需要確保同一程式庫的兩個版本的標頭不能被帶入同一個建置環境中,否則會導致問題

conda build 需要支援拆分套件,良好的測試案例

決策

  • 將 soname 新增至執行時期套件
  • 開發套件將會版本化,但不包含 soname
  • 任務:Jan 將寫下 libpng soname 命名的提案 -> conda forge/libpng feedstock#7
  • 任務:在 conda-build 中拆分套件,在儲存庫中開啟 issue

Python 3 vs python==3

「子環境」,以允許在同一環境中存取 Python 2 和 3。

我們是否希望能夠在同一環境中擁有多個執行時期

並非真的想要這樣做,conda 環境很便宜

子環境對於啟動自託管編譯器是必要的。也許可以在 SciPy 上討論/研究這個問題

與 NumFocus 協會

需要三位沒有共同隸屬關係的成員

可以獲得非營利組織地位

為更大/更長時間的建置服務提供資金

Qt 建置和其他長時間的建置

也可以使用 Travis/其他工具來延長建置時間

如果能擁有我們自己的伺服器就好了

Rackspace 與 NumFocus 合作並提供免費的 VM 時間

向更廣泛的社群尋求幫助,包括伺服器、套件託管等

為套件新增命名空間

這應該是必要條件嗎?

以語言作為前綴

資料夾?

numpy 呢?應該是 python-numpy 嗎

安裝時呢?

  • conda install python-numpy python-scipy?

這將需要變更 conda

警告

為所有非 python 套件加上前綴

僅限依賴項套件,pandas 依賴於 python-pandas

GCC

配方是否應該使用編譯器和版本進行註解

僅檢查版本的 gcc 套件

gcc 開發套件真的很神奇

conda-forge docker 映像檔 ( https://github.com/conda-forge/docker-images/tree/fbde090bd608caa720d5caad861aa382a8bf3f5c/linux-anvil )

討論編譯器的特別會議 (也包括 MSYS2 嗎?)

  • 下週四下午 2:00 UTC (6 月 9 日星期四)
  • 查看彼此的 docker 映像檔

下次一般會議在三週後

  • 下午 2:00 UTC (6 月 24 日星期五)

SciPy、BOFs、Sprints、第一天的 Lighting talk

  • 我想準備一個簡短的介紹「如何使用 conda-forge」,展示從 staged-recipes 到更新 feedstock 的工作流程。可以在 BOF 或另一個 lightning talk 中進行。(最好在 Jonathan 的 LT 之後。)