Slide 1

Slide 1 text

CNCF Project の作者が 考えている OSS の運営 Toru Komatsu, @utam0k 1

Slide 2

Slide 2 text

3-shake 技術顧問 OSS Activities Maintainer opencontainers/runtime-spec youki-dev/youki Reviewer containerd/runwasi Member kubernetes org(sig-scheduling/node) Community CNCF Ambassador, CNCJ @utam0k Toru Komatsu 2

Slide 3

Slide 3 text

目次 1. youki 2. OSS の⽣態 3. 新規コントリビュータ 4. OSS のリーダーシップ 3 💡ある程度の規模の OSS の趣味メンテナが考えている一例

Slide 4

Slide 4 text

youki 01 4

Slide 5

Slide 5 text

youki 概要 / 規模感 youki : OCI Container Runtime in Rust コミュニティベース の運⽤ Repository: youki-dev/youki 📈 2021/03 ~ 🌟 6.4K 👥 メンテナ 6 ⼈ CNCF Sandbox Project 5

Slide 6

Slide 6 text

youki 概要 / 規模感 他の⼈が本格的に使い始めて 1.5 年くらい経過 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 6

Slide 7

Slide 7 text

2021/06/08 7

Slide 8

Slide 8 text

OSS の⽣態 01 8

Slide 9

Slide 9 text

OSS の生態 🪸突然のサンゴ礁 ✓ ⾃⼰成⻑と継承 サンゴは少しずつ成⻑を続け、サンゴ礁を拡⼤ ✓ 共⽣ サンゴ礁には多くの⿂や⽣物が住んでおり、それぞれが独⾃の役 割を果たす ✓ 外部環境 温度や⽔質の影響を受けやすく、放置すると「⽩化現象」が起き る 9

Slide 10

Slide 10 text

OSS の生態 🪸突然のサンゴ礁 ✓ ⾃⼰成⻑と継承 サンゴは少しずつ成⻑を続け、サンゴ礁を拡⼤ ✓ 共⽣ サンゴ礁には多くの⿂や⽣物が住んでおり、それぞれが独⾃の役 割を果たす ✓ 外部環境 温度や⽔質の影響を受けやすく、放置すると「⽩化現象」が起き る 10

Slide 11

Slide 11 text

OSS の生態 自己成長と継承 💀 過去の紆余曲折💀 機能 A 機能 B 初期の意思決定 時 Fujita, K. et al. (2015). Nature in the Ryukyu Archipelago 11

Slide 12

Slide 12 text

OSS の生態 🪸突然のサンゴ礁 ✓ ⾃⼰成⻑と継承 サンゴは少しずつ成⻑を続け、サンゴ礁を拡⼤ ✓ 共⽣ サンゴ礁には多くの⿂や⽣物が住んでおり、それぞれが独⾃の役 割を果たす ✓ 外部環境 温度や⽔質の影響を受けやすく、放置すると「⽩化現象」が起き る 12

Slide 13

Slide 13 text

OSS の生態 共生 13 OSS A OSS B OSS C OSS D OSS E 依 存

Slide 14

Slide 14 text

OSS の生態 共生 - 実例 ① checkpoint-restore/rust-criu#13 (メンテナンスが活発ではない) 依存しているライブラリがある⽇突然壊れることもある ⾃動⽣成ファイルのバージョン管理をしていなくて不安定 → youki 側で原因を究明して PR 14 💡依存した OSS と共に改善することも必要

Slide 15

Slide 15 text

OSS の生態 共生 - 実例 ② youki-dev/oci-spec-rs from youki-dev/youki#162 コンテナの仕様で定められている JSON をパースするライブラリ oci-spec-rs を作る前にも似たようなライブラリはあった 結果的に... ○ youki で使⽤しているため新仕様が即時に反映 ○ コンテナの仕様のメンテナがメンテしている ○ Rust界隈でのデファクトになった ○ Runtimeだけではなく、youki では使わない Image / Distribution もサ ポート 15

Slide 16

Slide 16 text

OSS の生態 🪸突然のサンゴ礁 ✓ ⾃⼰成⻑と継承 サンゴは少しずつ成⻑を続け、サンゴ礁を拡⼤ ✓ 共⽣ サンゴ礁には多くの⿂や⽣物が住んでおり、それぞれが独⾃の役 割を果たす ✓ 外部環境 温度や⽔質の影響を受けやすく、放置すると「⽩化現象」が起き る 16

Slide 17

Slide 17 text

OSS の生態 外部環境 17 Rust Trend Web Assembly CNCF OCI

Slide 18

Slide 18 text

OSS の生態 OSS🪸の具体的なメンテナンス ⾃⼰成⻑と継承 ○ Issue のトリアージ / PRのレビュー 共⽣ ○ ライブラリのアップデート、フィードバック 外部環境 ○ 外部への貢献 ○ 外部からの提案についての判断、コミュニケーション 18

Slide 19

Slide 19 text

新規コントリビュータ 02 19

Slide 20

Slide 20 text

新規コントリビュータ OSS における新規コントリビュータの意味 OSS はコントリビュータがいないと成り⽴たないので重要 メンテナ には⼊れ替わりや休みなどが発⽣する → ⼊れ替わりが定期的に発⽣する 新規コントリビュータ = 強く関⼼を持ってくれている ○ 将来のメンテナ候補でもある 20

Slide 21

Slide 21 text

新規コントリビュータ 新規コントリビュータの環境作り 📢 後押し 対外発表 Good First Issue 21

Slide 22

Slide 22 text

新規コントリビュータ 環境作り / 対外発表 📢 “継続的な” 発信は不可⽋ → 将来のコントリビュータへの認知 e.g., youki 🌐Reddit / Hacker News / This Week in Rust 📝Blogs ■ 2021年に今更コンテナ⼊⾨した僕の最初の⼀歩, 2021 ■ Hello, youki!, 2021 ■ Announcing Youki 0.0.4, 2022 🗣Talks ■ 「あれ、コンテナって何だっけ?」から⽣まれた Rust で書かれた コンテナランタ イム youkiの話 @ ODC2021 ■ Rust 🤝 Container Runtime @ Rust.Tokyo 2021 ■ 詳説 OCIコンテナランタイム youki @ 第15回 コンテナ技術の情報交換会 ■ Possibility of OCI Container Runtime with Rust @ KubeDay Japan 2022 22

Slide 23

Slide 23 text

新規コントリビュータ 余談: バズる とはいえ、⼩⼿先のテクニックはある Tech1 他の OSS を参考に README.md をちゃんとかく Tech2 X / Reddit / HN → GitHub Trends Tech3 すぐに動かせる環境を⽤意 README.md を⽤意するだけでは重い腰は上がらない Tech4 バズったら震源地を把握 GitHub の Traffic ページを⾒る 23 23 💡バズると効率は良いが、結局は準備と中⾝と継続が⼤事。 準備と中⾝が良いとだいたい誰かが⾒つけてくれる。

Slide 24

Slide 24 text

新規コントリビュータ 新規コントリビュータの環境作り 📢 後押し 対外発表 Good First Issue 24

Slide 25

Slide 25 text

初めての貢献者が取り組みやすいと “メンテナが思っている” issue GitHub ではよくラベルがついている 新規コントリビュータ 環境作り / good first issue 取り組みやすい good first issue ✓ お⼿本がある ✓ 環境構築、ユニットテストが容易 ✓ コンフリクトが起きにくい ✓ ⼤きなデザインの決定をする余地がない 25 good first issue

Slide 26

Slide 26 text

新規コントリビュータ 新規コントリビュータの環境作り 📢 後押し 対外発表 Good First Issue 26

Slide 27

Slide 27 text

新規コントリビュータ 新規コントリビュータの環境作り / 後押し メンテナが後押しをしよう! = メンテナに頼ろう ✓ 具体的な Issue を提供、割り当てる ✓ なぜやるのか?コンテキストを伝える ✓ ⽇本語でのサポート 27 💡メンテナはあなたを向いていることを強く伝える OSSは素晴らしい! ”機会があれば” コントリビューションをしたい よくあるパターン

Slide 28

Slide 28 text

新規コントリビュータ コントリビュータの成熟 28 小さなバグ修正 ドキュメントの更新 利用者 メンテナ 大きな機能実装

Slide 29

Slide 29 text

新規コントリビュータ コントリビュータの成熟 29 小さなバグ修正 ドキュメントの更新 利用者 メンテナ 大きな機能実装 🧱 勇気の壁 🧱 🧱 知識‧経験の壁 🧱 🧱 ⽣活の壁 🧱

Slide 30

Slide 30 text

新規コントリビュータ コントリビュータの成熟 30 小さなバグ修正 ドキュメントの更新 利用者 メンテナ 大きな機能実装 🧱 勇気の壁 🧱 🧱 知識‧経験の壁 🧱 🧱 ⽣活の壁 🧱

Slide 31

Slide 31 text

新規コントリビュータ コントリビュータの成熟 31 小さなバグ修正 ドキュメントの更新 利用者 メンテナ 大きな機能実装 🧱 勇気の壁 🧱 🧱 知識‧経験の壁 🧱 🧱 ⽣活の壁 🧱

Slide 32

Slide 32 text

新規コントリビュータ コントリビュータの成熟 32 小さなバグ修正 ドキュメントの更新 利用者 メンテナ 大きな機能実装 🧱 勇気の壁 🧱 🧱 知識‧経験の壁 🧱 🧱 ⽣活の壁 🧱 ここでの離脱率が高い(体感) そしてここで抜けられるとつらい😿

Slide 33

Slide 33 text

新規コントリビュータ コントリビュータの成熟 33 小さなバグ修正 ドキュメントの更新 利用者 メンテナ 大きな機能実装 🧱 勇気の壁 🧱 🧱 知識‧経験の壁 🧱 🧱 ⽣活の壁 🧱 👀 やりきってもらえるかな 👀 どのくらい急ぎのをお任せしてもいいかな 👀 今までどのくらい OSS に関わってきたかな

Slide 34

Slide 34 text

新規コントリビュータ コントリビュータの成熟 34 小さなバグ修正 ドキュメントの更新 利用者 メンテナ 大きな機能実装 🧱 勇気の壁 🧱 🧱 知識‧経験の壁 🧱 🧱 ⽣活の壁 🧱 OSS のリーダー陣 やることは? 報われるのか?

Slide 35

Slide 35 text

OSS のリーダーシップ 03 35

Slide 36

Slide 36 text

OSS のリーダーシップ メンテナの影響力 メンテナの振舞は OSS の⾊としてなんとなくあらわれる ○ どこにでも🎨⽂化はある ○ レビューのコメントなどが時と共に成熟し⽂化となる youki のケース ○ issue を⽴てた⼈にチャレンジを促す ○ 新しいことにチャレンジする / 古いものはサポートしない 36 I have fun implementing this. In fact, this may be the most important.

Slide 37

Slide 37 text

OSS のリーダーシップ メンテナの役割 37 辛い決断も e.g., io_uring 活用にチャレンジする野心的なプロジェクトがあり 実装までして動かしたが、思ったパフォーマンスがでなくて断念 🎨 設計の最終決定 ✓ ガバナンス, セキュリティ, ドキュメント etc ✓ OSS が 呼吸 をできるようにする 🧹OSS で必要で誰もやってくれないことを拾う

Slide 38

Slide 38 text

OSS のリーダーシップ メンテナの役割 38 辛い決断も😿 e.g., io_uring 活用にチャレンジする野心的なプロジェクトがあり 実装までして動かしたが、思ったパフォーマンスがでなくて断念 🎨 設計の最終決定 ✓ ガバナンス, セキュリティ, ドキュメント etc ✓ OSS が 呼吸 をできるようにする 🧹OSS で必要で誰もやってくれないことを拾う

Slide 39

Slide 39 text

OSS のリーダーシップ メンテナの役割 39 辛い決断も😿 e.g., io_uring 活用にチャレンジする野心的なプロジェクトがあり 実装までして動かしたが、思ったパフォーマンスがでなくて断念 🎨 設計の最終決定 ✓ ガバナンス, セキュリティ, ドキュメント etc ✓ OSS が 呼吸 をできるようにする 🧹OSS で必要で誰もやってくれないことを拾う 📈コード以外にOSS に求められるものは増加の⼀途

Slide 40

Slide 40 text

OSS のリーダーシップ OSS がメンテナに与えれるもの メンテナで得たマネジメントスキルは他でも役⽴つ ✓ 他の OSS の雰囲気を読み取る ✓ どういう issue を作ると受け⼊れてもらいやすいか youki でのやり⽅「メンテナのキャリアに貢献する」 転職時の⼀定は信頼できる評価となる org の遷移: 個⼈ → containers → CNCF Project 40 󰤇 やりがいベースに全てを頼る

Slide 41

Slide 41 text

まとめ 04 41

Slide 42

Slide 42 text

まとめ OSS の⽣態 🪸 ✓ ⾃⼰成⻑と継承 ✓ 共⽣ ✓ 外部環境 新規コントリビュータ ⛰ ✓ 対外発表 ✓ Good First Issue ✓ 後押し OSS のリーダーシップ 42 小さなバグ修正 ドキュメントの更新 利用者 メンテナ 大きな機能実装 💡ある程度の規模の OSS の趣味メンテナが考えている一例

Slide 43

Slide 43 text

おわりに あなたはなぜ OSS にコントリビューションするべきか? 「なぜオープンソースソフトウェアにコントリビュートす aaaaaべきなのか」, Akihiro Suda -san, 2024 この発表が OSS 貢献のモチベーションに繋がれば幸いです /assign me 43 Happy Hacking ;)