サイト内の現在位置を表示しています。

ブログ

OSS貢献活動

Kubernetes Upstream Training のご紹介

2022年6月29日公開

本記事では Kubernetes Upstream Training の概要とこれまでの開催の様子を紹介します。

Kubernetes Upstream Training とは、CNCF (Cloud Native Computing Foundation) のホストするプロジェクトである Kubernetes の開発コミュニティ (アップストリームコミュニティとも呼ばれます) での貢献活動 (コントリビューション) を実施するために必要な作業と手順、そして考え方を紹介し、実際のコントリビューション作業をハンズオンで体験できる日本語のトレーニングです。これまでに、日本のクラウドネイティブ関連イベントやカンファレンスで7回開催しています。講師は主に NECソリューションイノベータの Kubernetes コミュニティのコントリビュータが実施していますが、これまで日立のコントリビュータの方とも一緒に講師を行なったこともあります。

同じトレーニングは KubeCon+CloudNativeCon の併設イベントである Kubernetes Contributor Summit で New Contributor Workshop という名前で現地 (アメリカやヨーロッパの都市) で英語で実施されていました。Kubernetes Upstream Training はその日本語版という位置づけですが、オリジナルコンテンツとして頻出の英語や言い回し、コミュニケーションのコツなどを追加した内容になっています。

upstream_training-01

このトレーニングでは new windowkubernetes-sigs/contributor-playground/japan リポジトリを使っています。このリポジトリに対して、Kubernetes コミュニティで開発参加する際の作業を実際に行い、サンプルの PullRequest (改善提案) 作成からレビューを経てリポジトリに取り込まれるまでの流れを手を動かしながら体験することができます。また本トレーニングはダミーではなく実際の作業フローをそのまま体験します。つまり Kubernetes 関連のリポジトリで貢献活動をするための準備作業 (コントリビューションのライセンス合意や Git の設定など) も同時に完了することになり、トレーニング後からすぐに貢献活動を開始可能です。

開催の経緯

2019年の KubeCon + CloudNativeCon EU 2019 (スペイン バルセロナ開催) に参加した折に、New Contributor Workshop の内容は日本においてもコントリビュータを増やすための教材として適していると考え、現地で日本でのトレーニング開催を相談したのが始まりでした。日本語でのトレーニング開催は快く賛成してもらえ、そこから準備が始まります。Kubernetes コミュニティに限らず、OSS コミュニティはこういった提案は歓迎してくれることが多いと思います。OSS コミュニティが Open にしているのはソースコードだけでなく、コミュニティの運営方針にも現れているのだと感じた瞬間でした。

トレーニングの狙い

我々が日本で開催しようと考えた理由は、日本の少し独特な事情にあります。

OSS はコミュニティの大きさが非常に重要です。それは世界規模でのコミュニティの大きさもさることながら各国のローカルコミュニティの大きさも同じく重要です。OSS は社会人も学生も所属団体にも関係なく、参加者がお互いに価値を享受できるモデルです。コミュニティが大きいほど活発で多様な議論がおこり、ソフトウェアやシステムの機能、品質の向上が期待できます。同じソフトウェアを使う場合でも国や業種ごとにユースケースが異なることがあるため、ローカル コミュニティの大きさは重要となります。

当時から日本では CloudNativeDays や Kubernetes Meetup Tokyo など、Kubernetes やクラウドネイティブ技術を扱ったイベントが定期的に開催されており、規模も大きくなっていました。そういった場では、Kubernetes などを活用した日本企業の事例紹介や、ノウハウなどが共有されていたわけですが、一方で Kubernetes コミュニティへのコントリビューションを行う人は日本では比較的少ないと感じていました。そういった Kubernetes のユーザだけでなく、コントリビューションできる人が増えたほうが日本のコミュニティはさらに大きく多様性のあるものになっていくはずです。当然、日本ならではのユースケースに対する機能実装なども日本のコミュニティが大きいほうが賛同者が多くなります。

しかしそこには壁があると感じていました。

まず言語の壁。Kubernetes コミュニティは英語でのコミュニケーションが基本です。Kubernetes コミュニティでの貢献方法を説明するドキュメントも存在していましたが英語で書かれていました。日本の人にとっては貢献方法も日本語で知ることができればコントリビューション活動を開始しやすいはずです。

次に文化の壁。Kubernetes コミュニティを始めとする OSS のコミュニティは、議論のネタを出し、改善案をディスカッションし、方向性が決まり、実装されるという流れが多いです。全員が参加者であり、全員で方向性を決めていくわけです。これらは日本の人にとっては特殊と思われる方も多いと思います。日本ではアーキテクトなどの上位技術者がシステム設計などを行い、実装は別の人が行うという流れが一般的ではないでしょうか?つまり、日本での業務遂行のスタイルや日本の学生が受けている授業のスタイルとは違うのが OSS コミュニティのスタイルです。実際にコントリビューション活動を経験すると自然とそのスタイルに慣れるのですが、始めるための第一歩を踏み出すのが難しいのではないかと感じていました。

最後に、コミュニティへの貢献には開発者目線でコードを書くことだけではなく、ユーザー目線でのドキュメントの整備やバグ報告、コミュニティ運営目線でのレポートや発表、プロセスの整備など、様々な種類があることを知ってもらうことです。このトレーニングをコミュニティのリポジトリ上ですべてオープンに行うことでコミュニティにトレーニングの結果をフィードバックし、トレーニングに参加すること自体もコミュニティ運営目線での貢献の一つとなっていることを感じていただければと考えました。また、このトレーニングの様子を Kubernetes Contributor Summit で発表することでもコミュニティへのフィードバックとさせていただいています。

Kubernetes Upstream Training を開催する狙いはここにあります。トレーニングは全て日本語であり、トレーニングを通してコントリビューションの流れを実際に経験できるわけです。これらの活動を通して、少しずつでも日本の Kubernetes コミュニティ、クラウドネイティブコミュニティ、OSS コミュニティを大きくすることができると考えました。

K8sContributorSummit2019.jpg

開催履歴

これまで Kubernetes Upstream Training は以下の7つのイベントで併設開催しています。

1. 2019-07-22 CloudNative Days Tokyo 2019

2. 2019-12-09 Okinawa Open Days 2019

3. 2020-06-13 KubeFest Tokyo 2020 (リモート開催)

4. 2020-09-07 CloudNative Days Tokyo 2020 (リモート開催)
5. 2021-03-10 CloudNative Days Spring 2021 Online (リモート開催)
6. 2021-11-02 CloudNative Days Tokyo 2021 (リモート開催)
7. 2021-12-13 Open Source Summit Japan 2021 (リモート開催)
upstream_training-02

興味のある人に参加してもらうため、クラウドネイティブ関連のイベントの併設開催という形式でトレーニングを実施してきました。特定のイベントだけで実施しているというわけでもなく、イベントの事務局の方からお声がけいただいたイベントについては全て開催してきています。直近では Linux Foundation のイベントである Open Source Summit Japan 2021 にて併設開催させていただきました。

COVID-19 の影響もあり、KubeFest Tokyo 2020 からはリモートでの開催形式となっています。それまでは同じ場所で顔を合わせながら現地で実施していたため、リモートでの開催に多少の不安がありましたが、これまでの経験や準備のおかげか、問題なくトレーニングを実施できました。

気付きと改善

リモート開催の利点

既に書いていますが、2020年からはリモート開催となっています。リモート開催を通して当初は想定していなかった利点がありました。まず、参加者が全国から集まるようになったということです。それまでは主に東京で開催されていたイベントの併設でしたので、必然的に参加者は東京に来る必要がありましたが、リモート開催では地理的要因は関係ありません。登録すればどこからでも参加可能です。加えて、学生の参加も増えたと感じています。それまでも学生がトレーニングに参加することはありましたが、リモート参加の形態だと参加しやすいと感じてくれるのか、学生の参加者を目にする機会が増えました。物理的に会うわけではないため、他の社会人参加者との年齢の違いを意識しなくても良くなったからなのかもしれません。このようにリモート開催というのは地理的要因などを始めとした各種の制約を超えた参加を可能とする可能性があると感じています。

オンデマンドな学習コンテンツ

各種イベントで併設開催していますが、イベントのスケジュールによっては他のセッションと重なってしまう、参加者が限られてしまう、という課題から、イベント主催者と協力して自習できるコンテンツも用意し、時間的な制約の解決も行っています。

アンケートフィードバック (資料アップデート)

これまでの開催を通して受講者アンケートを取っていますが、回答には「より具体的な開発のシーンを知りたい」という要望が比較的多かったため資料をアップデートしました。講師の関わっているリポジトリでの開発手法を簡単に説明するページを追加すると同時に、Kubernetes の公式ウェブサイトである new windowkubernetes.io の内容が管理されたリポジトリ (new windowkubernetes/websiteリポジトリ) に対する貢献方法の手順も追加しました。これらを通してアンケートに書かれた要望に応えると同時に、コミュニティに入るための第一歩として比較的簡単な website を追加し、貢献活動のはじめの一歩をなるべく簡単に始められるように考えた結果です。実際、トレーニング後に参加者が website リポジトリでコントリビューション活動を開始しているのを見かけています。今後もアンケートの要望を取り入れられるよう継続して検討していきたいと考えています。

今後の予定

次回のトレーニングは2022年秋に開催予定の CloudNative Days Tokyo 2022 で併設開催の予定となっています。興味を持たれた方は是非参加をご検討ください。OSS への貢献活動というと仰々しく感じる方もいるかもしれませんが、そんなことはありません。トレーニングを受けていただければ Kubernetes コミュニティでの貢献活動の意義と実践的な手順を体験しながら得ることができます。実際にやってみると思ったよりも簡単に始められることが実感できると思います。

皆さんで OSS コミュニティを盛り上げていきませんか。

執筆者

稲生 章人 (Akihito Inou)
NECソリューションイノベータ (NEC Solution Innovators, Ltd.)

Kubernetes コミュニティにおいて基盤のライフサイクル マネジメントの領域に参加しています。現在はコントローラ実装に関わる kubebuilder-declarative-pattern の Approver を務めています。また、社内外問わず日本のコントリビューターを増やすための活動として Kubernetes Upstream Training の講師を務めています。(2022年6月時点の情報)

Akihito Inou