Open8

nixpkgsのコントリビュータになろう

natsukiumnatsukium

このスクラップのゴール

執筆速度が遅すぎて完成するまで記事を公開しないという進め方では知識が失われてしまう
そこで散逸的にスクラップとして情報を公開し、ある程度出揃った時点で記事としてまとめて公開する
スクラップ内の情報について正しさは保証しないし、文章としての整合性も重視しない

natsukiumnatsukium

貢献の種類

  • パッケージの更新
    • 単純にバージョンとハッシュさえ更新すれば良いもの
    • 依存やビルドの更新、他のパッケージとの整合性を取る必要があるもの
  • 新規パッケージの追加
  • 壊れたパッケージの修正
  • ビルド環境改善
    • stdenvbuildXXXPackage をはじめとするもの
natsukiumnatsukium

ZHFについて

NixOSは毎年5月と11月にstableがリリースされる
リリース前約3週間の期間はZHF(Zero Hydra Failures)というキャンペーンが行われる
24.05では2024-05-08~2024-05-31の期間が予定されている

  • 前提
    • HydraというのはNixOSを支えるビルドシステムであり、nixpkgsで配布され、かつ自由なライセンスをもつパッケージはほとんど全てこのHydraによってビルドされる

リリース前にはNixOSの品質を高めるためにHydra上でビルドできなかったパッケージを修正するZHFが行われる

現在ビルドに失敗するパッケージは以下のURLで一覧できる
https://hydra.nixos.org/jobset/nixos/trunk-combined

こちらは現在ビルドに失敗するパッケージの中で、他のパッケージに与える影響が大きいものから順に表示する
https://malob.github.io/nix-review-tools-reports/nixpkgs:trunk/nixpkgs_trunk_1805965.html

過去のZHFの様子は以下のissueを眺めると良い
https://github.com/NixOS/nixpkgs/issues/265948
https://github.com/NixOS/nixpkgs/issues/230712

ZHFとラベリングされたPRは以下の通り
https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+is%3Apr+label%3A"0.kind%3A+ZHF+Fixes"

natsukiumnatsukium

PRを投げるまで

パッケージの選び方

新規パッケージ

困ったときにどうするか

  • nixpkgsのissueやPRで他のコントリビュータに意見を仰ぐ
  • discourseでスレッドを立てる
  • matrixで聞く
natsukiumnatsukium

PRを投げたら

レビューを待つ

PRに rebuild-linux-2500 のようなラベルが付与されたらPRの向き先を master から staging に変更する
このとき手順を誤ると多くの人にメンションが飛んでしまうので次のドキュメントを読みながら作業すること
ただしもし失敗してもPRを新たに作り直せばいいので心配しすぎる必要はない

レビューを受けたら

Q&A 誰にも見てもらえない、どうしたらいい?

パッケージの更新

そのパッケージのメンテナには通知が届くため、アクティブなメンテナであれば待てば見てもらえる可能性がある
見てもらえない、或いは見てもらったがコミッタではなくマージできないなら以前そのパッケージに対するPRをマージしたコミッタにメンションすると良いかも

natsukiumnatsukium

Appendix 他者のPRのレビュー

完璧にできる必要はない
簡単なところだと以下の項目に着目すると良い

  • コミットメッセージが規則に則っているか
  • パッケージの更新の際にきちんとハッシュも更新されているか
  • そのパッケージが実際にビルドできて動作するか

基本的なところだが案外できていないPRも多い