Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オープンソースソフトウェアへの解像度🔬

 オープンソースソフトウェアへの解像度🔬

情報科学若手の会#58 の招待講演の発表資料です。一部当日の発表では公開し、Speaker Deck では非公開にしているスライドがあります。
https://wakate.org/2025/08/18/58th-general/

---

情報科学若手の会では昨年に須田氏による「なぜオープンソースソフトウェアにコントリビュートすべきなのか」という招待講演が行われました。こちらの講演ではオープンソースソフトウェア(OSS)へ貢献する意義が明確になったかと思います。今年の本公演では、メンテナ視点でOSSへの貢献や運営が実際にはどのように行われているか、その実情をお伝えします。

私はこれまで 4 年以上にわたってコンテナランタイム youki の開発をリードしてきました。この 4 年以上のメンテナ経験に基づき、OSS運営の裏側にある課題や意思決定の実際を、具体的な事例と共に解説します。また、一例ではありますが、持続的なOSS運営、つまり常に開発が続き成長をするOSSのために意識してきた観点についても紹介します。本公演を通じて、OSSへの解像度が高まり、効果的な貢献へのイメージを掴んでいただければ幸いです。

Avatar for うたもく

うたもく

October 11, 2025
Tweet

More Decks by うたもく

Other Decks in Programming

Transcript

  1. Preferred Networks, Inc. オンプレML基盤の開発 ・ 運 用 OSS Activities Maintainer:

    youki-dev/youki opencontainers/runtime-spec Reviewer: Kubernetes SIG-Scheduling containerd/runwasi Community: CNCF Ambassador, CNCJ Board Member @utam0k Toru Komatsu 2
  2. はじめに 今年は OSS 貢献の昨年のなぜからどうやってについてなに か助けになる話をできればと思っています。 人 それぞれ貢 献のやり 方 はあります。効果的な

    OSS 貢献をするために OSS の運営やメンテナの視点について解像度を 高 めるとよ いのでは?という仮説のもと、私の経験の話ができればと思っ ています。 4
  3. お品書き 1 . 題材の概要 2 . OSS の運 用 3

    . OSS のリーダーシップ 4 . OSS 貢献の連続性 5 . OSS へ 飛 び込む 6 . OSS を楽しむ 7
  4. youki
 ֓ཁ / ن໛ײ OCI Container Runtime in Rust 自

    作コンテナランタイムとして始めた コミュニティベース の運 用 Repository: youki-dev/youki 📈 202 1 / 03 ~ 🌟 7 K 👥 メンテナ 7 人 CNCF Sandbox Project 9 youki
  5. 1 0 Kubernetes Container Container Runtime High-Level Low-Level OCI Runtime

    Spec Container Runtime I nterface youki
 ֓ཁ / ن໛ײ
  6. ଞͷਓ͕ຊ֨తʹ࢖͍࢝Ίͯ 2 ೥͘Β͍ܦա runwasi KubeCon NA 2024 - Running WebAssembly

    (Wasm) Workloads Side-by-Side with Container Workloads - Jiaxiao Zhou, Microsoft Syd-OCI FOSDEM 2025 - Syd+Youki=Syd-OCI: Introduction to a Secure Container Runtime for Linux 1 1 youki
 ֓ཁ / ن໛ײ
  7. OSS の運営 OSS と町作り ✓ 発展 OSS は常に整備され、発展を期待されている ✓ 町同

    士 の関係 OSS は 自己 完結するものは少なく、他の OSS との関係を持つ ✓ 外部環境 外部の 大 きな環境変化に 大 きく左右される 1 3
  8. OSS の運営 発展 ✓ 発展 OSS は常に整備され、発展を期待されている ✓ 町同 士

    の関係 OSS は 自己 完結するものは少なく、他の OSS との関係を持つ ✓ 外部環境 外部の 大 きな環境変化に 大 きく左右される 1 4
  9. OSS の運営 発展 1 5 1 5 初期の意思決定 過去の紆余曲折 新機能

    B 新機能 A Rust の採 用 ライブラリを細かく切る いろいろな機能を ライブラリにする 新機能 B 新機能 A youki の例
  10. OSS の運営 OSS と町作り ✓ 発展 OSS は常に整備され、発展を期待されている ✓ 町同

    士 の関係 OSS は 自己 完結するものは少なく、他の OSS との関係を持つ ✓ 外部環境 外部の 大 きな環境変化に 大 きく左右される 1 6
  11. OSS の運営 町同 士 の関係 - 実例 1 checkpoint-restore/rust-criu# 1

    3 (メンテナンスが活発ではなかった) ‣依存しているライブラリがある 日 突然壊れることもある ‣ 自 動 生 成ファイルのバージョン管理をしていなくて不安定 • → youki 側で原因を究明して PR 1 8 💡ґଘͨ͠ OSS ͱڞʹվળ͢Δ͜ͱ΋ඞཁ
  12. OSS の運営 町同 士 の関係 - 実例 2 youki-dev/oci-spec-rs from

    youki-dev/youki# 16 2 コンテナの仕様で定められている JSON をパースするライブラリ oci-spec-rs を作る前にも似たようなライブラリはあった 結果的に... ‣youki で使 用 しているため新仕様が即時に反映 ‣コンテナの仕様のメンテナがメンテしている ‣Rust界隈でのデファクトになった ‣Runtimeだけではなく、youki では使わない Image / Distribution もサポート 1 9
  13. OSS の運営 外部環境 ✓ 発展 OSS は常に整備され、発展を期待されている ✓ 町同 士

    の関係 OSS は 自己 完結するものは少なく、他の OSS との関係を持つ ✓ 外部環境 外部の 大 きな環境変化に 大 きく左右される 2 0
  14. OSS ͷӡӦ
 ॅਓ OSS の町にもいろいろな住 人 がいる ‣利 用 者

    • スポンサー ‣コントリビュータ • コミッター • レビュワー ‣メンテナ ‣たまに邪悪な 人 も 2 2
  15. 新規コントリビュータ 環境作り / 対外発表 📢 “継続的な” 発信は不可 欠 → 将来のコントリビュータへの認知

    youki の例: 🌐 Reddit / Hacker News / This Week in Rust 📝 Blogs ▪ 2021年に今更コンテナ 入門 した僕の最初の 一 歩, 2021 ▪ Hello, youki!, 2 0 2 1 ▪ Announcing Youki 0 . 0 . 4 , 2 0 2 2 🗣 Talks ▪ 「あれ、コンテナって何だっけ?」から 生 まれた Rust で書かれた コンテナランタイム youkiの話 @ ODC 2 0 2 1 ▪ Rust 🤝 Container Runtime @ Rust.Tokyo 2 0 2 1 ▪ 詳説 OCIコンテナランタイム youki @ 第15回 コンテナ技術の情報交換会 ▪ Possibility of OCI Container Runtime with Rust @ KubeDay Japan 2 0 2 2 2 6
  16. 新規コントリビュータ 余談: バズる とはいえ、 小手 先のテクニックはある Tech 1 他の OSS

    を参考に README.md をちゃんとかく Tech 2 X / Reddit / HN → GitHub Trends Tech 3 すぐに動かせる環境を 用 意 README.md を 用 意するだけでは重い腰は上がらない Tech 4 バズったら震源地を把握 GitHub の Traffic ページを 見 る 💡バズると効率は良いが、結局は準備と中 身 と継続が 大 事。 準備と中 身 が良いとだいたい誰かが 見 つけてくれる。 2 7
  17. 初めての貢献者が取り組みやすいと “メンテナが思っている” issue GitHub ではよくラベルがついている 新規コントリビュータ 環境作り / good first

    issue औΓ૊Έ΍͍͢ good first issue ✓ ͓खຊ͕͋Δ ✓ ؀ڥߏஙɺϢχοτςετ͕༰қ ✓ ίϯϑϦΫτ͕ى͖ʹ͍͘ ✓ େ͖ͳσβΠϯͷܾఆΛ͢Δ༨஍͕ͳ͍ 2 9 good first issue
  18. 新規コントリビュータ 新規コントリビュータの環境作り / 後押し メンテナが後押しをしよう! = メンテナに頼ろう ✓具体的な Issue を提供、割り当てる

    ✓なぜやるのか?コンテキストを伝える ✓ 日 本語でのサポート 3 1 💡メンテナはあなたを向いていることを強く伝える OSSは素晴らしい! ”機会があれば” コントリビューションをしたい Α͋͘Δύλʔϯ
  19. 新規コントリビュータ コントリビュータの成熟 3 6 খ͞ͳόάमਖ਼
 υΩϡϝϯτͷߋ৽ ར༻ऀ ϝϯςφ େ͖ͳػೳ࣮૷ 🧱

    ༐ؾͷน 🧱 🧱 ஌ࣝɾܦݧͷน 🧱 🧱 ੜ׆ͷน 🧱 ここでの離脱率が 高 い(体感) そしてここで抜けられるとつらい😿
  20. 新規コントリビュータ コントリビュータの成熟 3 7 খ͞ͳόάमਖ਼
 υΩϡϝϯτͷߋ৽ ར༻ऀ ϝϯςφ େ͖ͳػೳ࣮૷ 🧱

    ༐ؾͷน 🧱 🧱 ஌ࣝɾܦݧͷน 🧱 🧱 ੜ׆ͷน 🧱 👀 やりきってもらえるかな 👀 どのくらい急ぎのをお任せしてもいいかな 👀 今までどのくらい OSS に関わってきたかな
  21. 新規コントリビュータ コントリビュータの成熟 3 8 খ͞ͳόάमਖ਼
 υΩϡϝϯτͷߋ৽ ར༻ऀ ϝϯςφ େ͖ͳػೳ࣮૷ 🧱

    ༐ؾͷน 🧱 🧱 ஌ࣝɾܦݧͷน 🧱 🧱 ੜ׆ͷน 🧱 OSS ͷϦʔμʔਞ ΍Δ͜ͱ͸ʁ ใΘΕΔͷ͔ʁ
  22. OSS のリーダーシップ メンテナの影響 力 メンテナの振舞は OSS の 色 としてなんとなくあらわれる ‣どこにでも🎨

    文 化はある ‣レビューのコメントなどが時と共に成熟し 文 化となる youki のケース ‣issue を 立 てた 人 にチャレンジを促す ‣新しいことにチャレンジする / 古いものはサポートしない 4 0 I have fun implementing this. In fact, this may be the most important.
  23. OSS のリーダーシップ メンテナの役割 4 1 辛 い決断も e.g., io_uring 活

    用 にチャレンジする野 心 的なプロジェクトがあり 実装までして動かしたが、思ったパフォーマンスがでなくて断念 🎨 ઃܭͷ࠷ऴܾఆ ✓ Issue トリアージ、ガバナンス、セキュリティ、ドキュメント etc ✓ OSS が 呼吸 をできるようにする 🧹OSS ͰඞཁͰ୭΋΍ͬͯ͘Εͳ͍͜ͱΛर͏
  24. OSS のリーダーシップ メンテナの役割 4 2 辛 い決断も e.g., io_uring 活

    用 にチャレンジする野 心 的なプロジェクトがあり 実装までして動かしたが、思ったパフォーマンスがでなくて断念 🎨 ઃܭͷ࠷ऴܾఆ ✓ Issue トリアージ、ガバナンス、セキュリティ、ドキュメント etc ✓ OSS が 呼吸 をできるようにする 🧹OSS ͰඞཁͰ୭΋΍ͬͯ͘Εͳ͍͜ͱΛर͏
  25. OSS のリーダーシップ メンテナの役割 4 3 辛 い決断も e.g., io_uring 活

    用 にチャレンジする野 心 的なプロジェクトがあり 実装までして動かしたが、思ったパフォーマンスがでなくて断念 🎨 ઃܭͷ࠷ऴܾఆ ✓ Issue トリアージ、ガバナンス、セキュリティ、ドキュメント etc ✓ OSS が 呼吸 をできるようにする 🧹OSS ͰඞཁͰ୭΋΍ͬͯ͘Εͳ͍͜ͱΛर͏ 📈ίʔυҎ֎ʹOSS ʹٻΊΒΕΔ΋ͷ͸૿ՃͷҰ్
  26. OSS のリーダーシップ OSS がメンテナに与えれるもの メンテナで得たマネジメントスキルは他でも役 立 つ ✓ 他の OSS

    の雰囲気を読み取る ✓ どういう issue を作ると受け 入 れてもらいやすいか ✓ 仕事のマネージャー業務 youki でのやり 方 「メンテナのキャリアに貢献する」 ある程度の規模になっていると転職時の 一 定は信頼できる評価となる org の遷移: 個 人 → containers → CNCF Project 4 4 🤷 ΍Γ͕͍ϕʔεʹશͯΛཔΔ
  27. Preferred Networks, Inc. オンプレML基盤の開発 ・ 運 用 OSS Activities Maintainer:

    youki-dev/youki opencontainers/runtime-spec Reviewer: Kubernetes SIG-Scheduling containerd/runwasi Community: CNCF Ambassador, CNCJ Board Member Toru Komatsu 4 7 始まりの街 @utam0k
  28. 4 8

  29. OSS 貢献の連続性 メンテナが1つの OSS に対する活動で完結することは少ない ‣ 自 分の OSS を利

    用 している OSS のメンテナに ‣周辺エコシステムとのコミュニケーション ‣隣の分野の OSS へチャレンジ 4 9
  30. OSS 貢献の連続性 メンテナが1つの OSS に対する活動で完結することは少ない ‣ 自 分の OSS を利

    用 している OSS のメンテナに ‣周辺エコシステムとのコミュニケーション ‣隣の分野の OSS へチャレンジ 5 0
  31. OSS は 自 分の上にも下にも OSS が積み重なっている 5 1 OSS 貢献の連続性

    自 分の OSS を利 用 している OSS のメンテナに
  32. issue「 君の OSS を 自 分の OSS で使おうとしたら壊れた」 ‣ 「runwasi

    で youki をこういう使い 方 したいけどインタ フェースが 足 りていない」 • runwasi: Kubernetes で WASM を扱えるようにする OSS ‣ 「何で壊れるんだろう」「どういう使い 方 をしているん だ」と結局コードを読むことになる ‣ 相互の OSS を修正することも → そのままメンテナに 5 2 OSS 貢献の連続性 自 分の OSS を利 用 している OSS のメンテナに
  33. メンテナが1つの OSS に対する活動で完結することは少ない ‣ 自 分の OSS を利 用 している

    OSS のメンテナに ‣周辺エコシステムとのコミュニケーション ‣隣の分野の OSS へチャレンジ 5 3 OSS 貢献の連続性 自 分の OSS を利 用 している OSS のメンテナに
  34. OSS 貢献の連続性 周辺エコシステムとのコミュニケーション 5 6 標準化や OSS 開発を 支 援してくれる団体

    e.g., OCI: Open Container Initiative ‣コンテナの仕様の標準化団体 ‣主要なコンテナ実装のリードがメンテナ • 新機能について議論 • セキュリティ関連について協 力
  35. OSS ߩݙͷ࿈ଓੑ メンテナが1つの OSS に対する活動で完結することは少ない ‣ 自 分の OSS を利

    用 している OSS のメンテナに ‣周辺エコシステムとのコミュニケーション ‣隣の分野の OSS へチャレンジ 5 7
  36. OSS 貢献の連続性 隣の分野の OSS へチャレンジ issue「 X と合わせて使おうとしたら壊れた」 ‣「docker run

    のこのオプションを使って youki を使おうとし たら壊れた」 ‣「Kubernetes から youki を使おうとしたら壊れた」 メンテナをしているとお隣の OSS を使う機会を強制的に得る ‣お隣の OSS の知 見 がたまって、コントリビューション可能に 5 8
  37. OSS へ 飛 び込む 新規コントリビュータという冒険 新しい冒険はいつだって怖さとわくわくがある ‣わくわく • 新しいことを学べる •

    自 分が純粋な新規コントリビュータから始まる ‣怖さ • 的外れなことなどを 言 っていないかな • 迷惑になっていないかな 6 1
  38. OSS へ 飛 び込む OSS への解像度を 高 める 仕事 ‣仕事で利

    用 する/している 趣味 ‣趣味開発ツールとして使ってみる • 個 人見 解: 言 語よりも興味を持てるかが重要 ‣解説記事を書いてみる / どこかで発表をしてみる 6 3
  39. OSS へ 飛 び込む 飛 び込む準備 小 /中規模 ‣整備が 行

    き届いていないことが多いので雰囲気を読む 大 規模 ‣ルールがかっちりしているので流れを知ってから 飛 び込む ‣ 文 化を知る • Repository の Watch 機能を利 用 して毎 日 の通知を眺める • 誰にレビューリクエストを送るのが適切か? どういうところをレビューでケアされやすいか? ‣とはいえ、間違っていてもみんな教えてくれる 6 4
  40. OSS へ 飛 び込む 飛 び込む 方 法1 Good First

    Issue ‣Issue の 一 覧から Good First Issue ラベルを探す • 最近は ☔ umbrella Issue となっていることも多い ‣ 人 気の OSS だとかなり争奪戦になる • Good First Issue を集めたサイトがあり、そこからのリポジトリへのアクセスはそこそこある 方 法2 バグを踏む ‣解像度を 高 めるのにバグや困りごとに直 面 ‣バグや困りごとが出るくらいまで解像度を 高 めておきたい • Alpha 機能や latest を使うと結構バグはある 方 法3 メンテナに聞いてみる ‣実はメンテナの脳内には Issue にしていないものがいっぱいある ‣毎 日 Watch していると誰に聞けばよいかわかってくる 6 5
  41. OSS へ 飛 び込む Kubernetes への 飛 び込み 方 例

    - 解像度を 高 める まずは触る ‣ 自 宅に Kubernetes を置いてみる ‣Kubernetes を仕事で触り始める • 特にスケジューラ周り ‣youki の Kubernetes サポート 眺める ‣kubernetes/kubernetes の通知をすべてオンにしてみる ‣LWKD(Last Week in Kubernetes Development) を読んでみる ‣マージされた PR を毎 日生 成 AI でサマライズする コミュニティに 入 ってみる ‣KubeCon に 行 ってみる 6 6
  42. OSS へ 飛 び込む Kubernetes への 飛 び込み 方 例

    - 解像度を 高 める コードやアーキテクチャを知る ‣Kubernetes はコンポーネントがわかれていて、 SIG というのに分かれている • スケジューラは SIG-Scheduling ‣スケジューラに関する解説記事や公式ドキュメン トを読む ‣スケジューラのプラグインを開発してみる 6 7 コミュニティを知る ‣ロールという概念がある • Member → Reviewer → Approver • Watch していると Approver でもアクティブな 人 は 少ないことに気がつく • どのあたりの時間帯が 一 番活動が活発か ‣当時は AI/ML に向けてパフォーマンスが懸念 • クラスタが 大 きくなったり、貴重なリソースをどう 扱うかが重要 • PFN でも重要な課題 • コミュニティの向かう先に合う貢献が必要 ‣ 文 化を知る
  43. OSS へ 飛 び込む Kubernetes への 飛 び込み 方 例

    - 飛 び込む バグの修正 ‣社内のユースケースでバグを践む • Blog: Kubernetes における cgroup v 2 での Out-Of-Memory 問題の解決 小 さな機能/バグ修正提案 ‣スケジューラプラグインの開発をしていて欲しい機能を提案 ‣コミュニティが 力 を 入 れているところの機能強化 • e.g., スケジューラのパフォーマンス計測周りのツールの機能強化(社内でも利 用 していた) Issue を探す ‣途中で落ちてしまっている Issue や PR の回収 • 自 動 Close する bot などをキャッチ メンテナに会う、聞く ‣新しい実装 Issue ができたら教えてもらえた ‣OSS 開発は時差ありの 非 同期開発だからこそ会う機会は重要 6 8
  44. OSS を楽しむ 新しい技術や知 見 の獲得 7 0 新しい機能の実装 ‣仕様を実装するケースでは仕様を読み解くことで新しい知 見

    を得る メンテナ ‣他の 人 の提案のなかで知らない知識に出会える ‣コードレビューで新しいアーキテクチャを知る
  45. OSS を楽しむ OSS を成 長 をさせる 7 1 ‣0から OSS

    を作り溝を超える ‣マジョリティが既にいる OSS へのコントリビューション • 書いたコードが世界中のいろいろなところで動くおもしろさ イノベータ アーリーアダプタ アーリーマジョリティ レイトマジョリティ ラガード 2 . 5 % 1 3 . 5 % 3 4 % 3 4 % 1 6 %
  46. OSS を楽しむ 新規コントリビュータの成 長 を 見 守る 7 2 খ͞ͳόάमਖ਼


    υΩϡϝϯτͷߋ৽ ར༻ऀ ϝϯςφ େ͖ͳػೳ࣮૷ メンテナは他 人 に動いてもらう必要がある
  47. OSS を楽しむ 影響 力 と責任と楽しさ 小 さなバグ修正 ドキュメントの更新 利 用

    者 メンテナ 大 きな機能実装 7 3 影響 力 と責任 視野 より遠くOSSの世界を 見 ることができる👀