🔥

LFX Mentorship ProgramでOSS Prometheusの開発に参加した

2024/08/25に公開


こんにちは!😸 
LFX Mentorship Programの第二ターム(6-8月) Prometheusのプロジェクトに採択され、そのメンターシップも残すところあと1週間となりました。
プログラム中の開発についての技術的な詳細については他の記事にまわし、この記事ではメンターシップについての紹介と、参加しての感想の共有をしたいと思います。

LFX Mentorship Programとは

LFX Mentorship Programは、Linux Foundationが提供するグローバルなオープンソースのメンターシッププログラムです。Googleの主催するGSoC(Google Summer of Code)をご存知の方は、それのLinux財団がやっている版だと思っていただけると良いと思います。 GSoCは2005年に始まりましたが、Linux財団は2019年からメンターシッププログラムを開始しました。 GSoCは年に一回ですが、LFXでは年に3回ものチャンスがあり、雑感ですが参加条件やスケジュールを柔軟に対応しているような印象があります。

https://mentorship.lfx.linuxfoundation.org/#projects_all

 メンターシッププログラムではLinux kernelやRISC-V、CNCFのOSSなどの様々なプロジェクトから選ぶことができます。メンティーはメンター(多くはそのOSSのメンテナ)から指導を受けながらそのOSSの開発に取り組むことができます。期間はフルタイムの場合は3ヶ月、パートタイムの場合は6ヶ月です。プログラム中に前半と後半で達成度の評価があり、それぞれで良い評価を受けると2700ドルずつ、つまりトータルで5400ドルの奨学金を受け取ることができます(日本在住の場合)。

応募の仕方や参加条件などについて、正確な情報は公式のDocを確認してください
https://docs.linuxfoundation.org/lfx/mentorship
また、CNCFのSlackの#mentoringチャンネルで質問することもできます。

参加したプロジェクト

CNCF - Prometheus: Prometheus Remote Write Benchmarking Capabilities (2024 Term 2)

PrometheusはRemote WriteというPrometheusで収集したメトリクスを他の時系列データベースに送信する機能を持っています。ただ、その送信にかなりのコストがかかってしまうこともあり、Remote Write 2.0で実装とワイヤーフォーマットが大幅に変更される予定です。Prometheus自体のベンチマーキングツール(Prombench)は、未だその新しい機能のベンチマーキングに対応していないので、そのツールを拡張するのがこのプログラムのタスクです。ただし、考えうる実装/既存機能の改善点は多くあるので、このプログラムが終わってからも開発を続ける予定です。
技術的な詳細は他記事で書こうと思っています。
一つ目のPR: https://github.com/prometheus-community/avalanche/pull/64

応募にあたって

Proposalとカバーレター、Resumeを提出しました。また、応募前からメンテナにSlackでコンタクトを取りました。

プロジェクトを選ぶ

CNCFはGithubでプロジェクトのリストを管理しているので、LFXの公式ページに正式に載る前に気になるプロジェクトがあるかを確認することができます。ここに載っていなくても、自分で取り組みたいアイデアやIssueをメンテナに掛け合ってメンターシッププログラムとしてもらう人もいます。

Proposal

https://docs.google.com/document/d/1ItHPdtXnAuDG59fkFWzkeCH3Nq1wAcr9ZmC1sUGZZGo/edit?usp=sharing
(実際に提出したProposalのコピーです)
Prometheusで使われているProposalのフォーマットを使用しました。

これまでの他のProposalも参考にし、非常に勉強になりました。
https://github.com/prometheus/proposals/tree/main/proposals
https://github.com/prometheus/proposals/issues

提出する前にメンテナの方に何度かチェックしてもらったり、2回ほどmeetingしていただきました。また、プログラム開始前にPRは作っていませんでしたが、環境構築の質問もしていたので、応募前にしっかり接点を持つことができたと思います。

応募した理由

有名OSSの開発に関わってみたいなと思っていたのですが、大きいコードを書いたり機能を追加するような貢献をするハードルが高かったので、学生のうちのこういったメンターシッププログラムに参加できたらいいなと思っていました。また、将来的に海外の企業でエンジニアとして働いてみたいと思っているので、英語でいろんな国の人と開発することのファーストステップとしても良いと思いました。

半年ほど前にISUCONの勉強を下の本を読みながらしており、初めて監視ツールや負荷テストに関するソフトウェアを使いました。それをきっかけにパフォーマンス改善や監視ツールに興味を持って学んでいました。そこで、それらの技術がどのように動いているのかなどにも興味を持っていたので、より深く理解して実践するためにPromethusのプロジェクトに参加しました。
https://amzn.asia/d/e0XhNxq

あとは、シンプルに勢いです。技術力に全く自信はありませんでしたが、そう言ってると一生踏み出すこともなさそうなので、勢いです。

あとGoの修行ʕ◔ϖ◔ʔ。

参加した感想

通常は3ヶ月のプログラムですが、今回はCNCF側の都合で2ヶ月半でした。そのような短い期間ではありましたが、非常に多く学ぶことができました。複雑なコードの中に並行処理を追加したり、今まで個人開発などで書いてきたものよりずっと複雑なコードを読み書きし、可読性や拡張性の高いコードを書くことを学べました。また、初めてKubernetes(主にKIND)を使ったのですが、古い設定の修正を通して多くを学べました(最近やっと動くようになったのでこれからさらに組み込む予定😺)。
 メンターはPrometheusのメンテナで普段はGrafanaのエンジニアをされている方が二人ついてくださいました。スペインとカナダに住んでいるので、3人の間の時差がかなり大きく、ほとんど毎回のMeetingが23時からでした。初めての英語でコミュニケーションをとりながらの開発でしたが、ChatGPTでMeeting前に英語の準備をするなどして、意外となんとかなったので自信になりました。メンターがとても親切で優しく、説明しながらDocにまとめてくださるなどンネイティブのフォローに慣れている様子だったので、そのおかげも大きいです。今の英語力だと、そのように教える側になるのは厳しいこともわかったので頑張りたいです。k8sのマニフェストの修正の際にはインド人の学生と協力していたのですが、モチベーションも技術力も高く親切で刺激になりました、
また、メンターには今後のキャリア(特にEUやNAでの就業、リモートの仕事)についての相談にも載っていただきました。ジュニアでの就職は市場の状況的に難しいですが、今後数年のうちにチャレンジしたいです。さまざまな事情が重なり、大学生のうちに長期の留学をすることはできませんでしたが、そのようなキャリアの実現に向けて大きく踏み出せたと思います。
 あと1週間でプログラム自体は終わりますが、まだやることはたくさんあるのでこれからも継続してコントリビュートしていきたいと思います🔥 ベンチマークの開発がひと段落着く頃には、もっとコアな機能を実装できるようになりたいです。


一回目の評価で突破した時のメール。人生で初めてのドルの報酬😎😸✌️

Discussion