Bering Note – formerly 流沙河鎮

情報技術系のこと書きます。

翻訳: OpenSearchへのコントリビューションのはじめかた: 私の経験に基づくビギナーズガイド

本投稿は OpenSearch Project Blog "How to start contributing to OpenSearch: A beginner’s guide based on my journey" の日本語訳です。


OpenSearchは、開発者や組織がスケーラブルでリアルタイムな検索ソリューションを構築できる強力なオープンソースの検索・分析エンジンです。学生、開発者、オープンソース愛好家を問わず、OpenSearchへの貢献はあなたのスキルと評価を大きく向上させることができます。

このブログ記事では以下について説明します:

  • OpenSearchの紹介
  • コントリビューションすることのメリット
  • コントリビューションできる主要分野
  • 初めてのコードのコントリビューションへのステップバイステップガイド
  • 成功のための個人的なヒント

それでは始めましょう!

OpenSearchとは?

OpenSearchは、オープンソースの分散型検索・分析エンジンです。2021年にElasticsearchのフォークとして作成され、Apache Luceneライブラリをベースにしています。このプロジェクトは、Linux Foundation傘下のOpenSearch Software Foundationによってホストされています。

130以上のGitHubリポジトリを持つOpenSearchには、JavaPython、Kotlin、TypeScript、JavaScriptなど、さまざまなプログラミング言語で構築されたコンポーネントプラグインがあります。この多様性により、フロントエンド開発者、機械学習(ML)エンジニア、バックエンドシステムに興味がある人など、誰もが参加できる場所があります。

なぜOpenSearchにコントリビュートすべきか?

1. 学習と成長

コントリビュートすることで、実際のプロジェクトでの実践的な経験を積むことができます。ダミープロジェクトとは異なり、ここではコミュニティが直面している実際の問題を解決します。

2. 好きな技術で作業する

日々の仕事では、お気に入りの技術スタックを使えないこともあるでしょう。OpenSearchのようなオープンソースプロジェクトは、情熱を持っている分野を探求し、構築するための遊び場となります。私の場合、AI/MLへの強い関心がOpenSearch ML Commonsプラグインへの貢献の動機となりました。

3. 評判を築く

大小を問わず、すべての貢献があなたの公開ポートフォリオに追加されます。キャリアの見通しを向上させ、オープンソースコミュニティでの存在感を確立できます。

4. インパクトを与える

あなたのコード、レビュー、またはドキュメントは、世界中の何千人ものコミュニティメンバーによって使用される可能性があります。ミッションクリティカルなシステムを支えるプロジェクトを改善しているのです。

OpenSearchへの貢献分野

OpenSearchへ有意義な貢献をするために、コーディングの達人である必要はありません。このプロジェクトは、あなたの背景やスキルレベルに関係なく、さまざまな参加方法を提供しています。

  • コード貢献は最も直接的な支援方法です。バグ修正、小さな機能強化、既存コードのリファクタリングから始めることができます。自信がついてきたら、より大きな機能やパフォーマンスの改善に取り組むかもしれません。
  • バグ報告は重要です。OpenSearchを使用していて問題に遭遇した場合、詳細な手順、ログ、スクリーンショットとともにGitHubに報告することで、開発者がより迅速に問題を特定し解決するのに役立ちます。
  • issueのトリアージにより、バグの検証、イシューの説明の改善、可能な解決策の提案などでメンテナーを支援できます。
  • コードレビューは貢献の全体的な品質を向上させるだけでなく、コードベースとプロジェクト標準の理解を深めます。
  • 機能のテストを開発中またはリリース前の段階で行うことで、最終製品を形作る貴重なユーザーフィードバックを提供できます。
  • ドキュメント作業は高く評価されます。既存のドキュメントの更新、チュートリアルの執筆、インストール手順の明確化など。
  • ブログやVlogで経験、解決策、ユースケースについて発信することで、認知度を高め、他の人の貢献を促すことができます。

OpenSearchプロジェクトGitHubの概要

GitHubOpenSearchプロジェクトにアクセスしてください。以下に関連する130以上のリポジトリがあります:

興味とプログラミングスキルに基づいてリポジトリを選択してください。私はOpenSearch Coreから始め、その後ML分野に飛び込むためにML Commonsを探求しました。

ステップバイステップ:初めての貢献方法

ステップ1:GitHubのセットアップとリポジトリの選択

取り組もうとしているコントリビューション内容が所属組織のガイドラインに沿っており、組織によって制限されていないことを確認してください。

ステップ2:開発環境のセットアップ

特定のリポジトリの開発者ガイド(DEVELOPER_GUIDE.md)に従ってください。
OpenSearch Coreの場合、通常以下が必要です:

まず、コードを変更せずにビルドとテストを実行します。成功したら、ログを追加するなどの小さな変更を試して、すべてが正しく設定されていることを確認します。

ステップ3:「good first issue」を見つける

GitHubのIssuesタブで「good first issue」ラベルが付いたissueを検索します。これらは新しいコントリビュータが簡単にオンボーディングできるように厳選されています。作業を開始する前に、Asigneeを確認し、コメントを読んで、他の誰かがすでに作業していないことを確認してください。

成功のためのヒント:私の経験から学んだこと

適切な「good first issue」を選ぶのは難しく感じるかもしれませんが、いくつかの実践的な戦略に焦点を当てることで、私の旅はよりスムーズで実りあるものになりました。
以下は、私が成功するのに役立ち、エコシステムに新しく参加する他の人にも役立つ重要な教訓です。

バグのテストや修正から始める

OpenSearchの旅を始めるとき、私は貢献できそうなバグのテストや修正を探しました。これらは通常、自己完結型で低リスクのイシューであり、複雑なビジネスロジックの変更を含みません。そのため、威圧感が少なく、プロジェクトの構造を理解するのに最適です。例えば、私の最初のコントリビューションはOpenSearch CoreとML Commonsへのもので、テストイシューの修正やテストカバレッジの改善に取り組みました。この種のバグはレビューも早く、プロジェクトのワークフローやコーディング標準を学んでいる段階では重要な早期フィードバックを提供します。テストバグの修正は自信を与えてくれ、リポジトリへの親しみを築くのに役立ちました。

github.com

専門分野で作業する

自分の強みを活かすことは、早期に有意義な貢献をする素晴らしい方法です。私にはOpenJDKのバックグラウンドがあるため、自分の経験に合ったイシュー、特にロケール処理と国際化に関連するものを探しました。そのようなタスクの1つは、非推奨のロケールプロバイダーCompatをCommon Locale Data Repository(CLDR)に置き換えることでした。すでに知っていることを活用することで、立ち上がりの時間が短縮され、インパクトが増加します。

github.com

スタックトレース付きのissueを選ぶ

GitHub issueにスタックトレースが含まれている場合、それは問題への道しるべとなります。失敗が発生した正確な場所(多くの場合、クラスとメソッドまで)を教えてくれます。これらのタイプのissueは、コードベースの関連部分に直接ジャンプできるため、デバッグがはるかに簡単でした。多くの推測作業を排除し、バグの再現と修正に集中できます。これは、コードベースのナビゲートが困難になりがちな大規模プロジェクトで特に役立ちます。

github.com

よく説明されているissueを探す

一部のメンテナーは、バグレポートや機能リクエストを書く際に非常に丁寧です。issueを説明するだけでなく、有用なコンテキスト、潜在的な解決策、コードのどの部分が影響を受けるかについての注記も提供します。初心者にとって、これらは千金の価値があります。ミニチュートリアルとして機能し、問題の理解と修正にかかる時間を大幅に短縮できます。

記憶に残る例の1つは、EncryptorImplinitMasterKey()メソッドに関連するパフォーマンスイシューでした。レポートはCountDownLatchの使用をボトルネックとして明確に特定し、ActionListenerに置き換えることを提案していました。このようなガイダンスがあれば、修正を行うことははるかに近づきやすく、満足感のあるものになりました。

github.com

*ヒント:複雑なバグを解決しようとするよりも、最初のいくつかのプルリクエスト(PR)を通じて貢献プロセスを学ぶことに焦点を当てましょう。

作業するissueを決定したら、コメントを残して自分に割り当てます。これにより、他の人が知らずに同じissueに取り組むのを防ぐことができます。

ステップ4:修正を行いPRを作成する
  • mainから新しいブランチを作成
  • 変更を加えてコミット
  • ブランチをプッシュしてPRを作成
  • リポジトリのPRテンプレートに従い、CIチェックを待つ
  • レビューコメントに応答し、必要に応じてPRを修正

コミュニティとの関わり

Slack

最良の方法の1つは、SlackでOpenSearchコミュニティに参加することです。Dashboards、Search、MLなどの主要コンポーネントには、それぞれ専用のチャンネルがあります。これらのスペースは、質問をしたり、実装の詳細を議論したり、進捗を共有したりするのに最適です。遠慮なく連絡してください。メンテナーや他のコントリビュータは一般的に非常に歓迎的で親切で、特に新しいコントリビュータに対してそうです。これらのチャンネルで活発に活動することは、学習曲線を加速させるだけでなく、進行中の開発について最新の情報を得るのにも役立ちます。

Slackリンク:Slack workspace - OpenSearch

トリアージミーティング

OpenSearchは、メンテナーがissueをレビューし優先順位を付ける定期的なトリアージミーティングを開催しています。これらのミーティングに参加することは、プロジェクトにとって何が重要かを知る素晴らしい方法です。また、自己紹介をし、興味を表明し、どこから始めるべきかガイダンスを求める完璧な機会でもあります。メンテナーはこれらのミーティング中に初心者向けのissueを提案することが多く、スキルに合ったものを見つけやすくなります。

ミーティング招待リンク:OpenSearch Community & Triage Meetings Events

YouTube

OpenSearchYouTubeチャンネルには、チュートリアル、デモ、コミュニティトークなど、有用なコンテンツが満載です。これらのビデオは、さまざまなコンポーネントがどのように機能し、人々がどのように使用または貢献しているかについて深い洞察を提供します。これらを見ることで、エコシステムをよりよく理解できました。

YouTubeチャンネルリンク:OpenSearch - YouTube

ミートアップとカンファレンス

ローカルのOpenSearchコミュニティミートアップやOpenSearchConイベントへの参加は、他のコントリビュータやメンテナーとつながる別の素晴らしい方法です。これらの対面イベントは、リアルタイムのコラボレーションを促進し、ネットワークを構築し、プロジェクトへの関与を深めるのに役立ちます。

お近くのユーザーグループを見つけてください:User Groups - OpenSearch

最終ステップ:サブミットして関与し続ける

最初のPRを提出した後は、以下にも挑戦してください:

  • GitHubリポジトリをウォッチ
  • 他の人のPRをレビュー
  • コミュニティイベントに参加
  • 学んだことをブログ投稿やイベントトークで共有

あなたのオープンソースの旅が本格的に始まりました!
OpenSearchは単なるツールではなく、コミュニティです。テストバグを修正するにせよ、新機能を構築するにせよ、あなたの貢献は重要です。

私のアドバイス
小さく始め、着実に成長し、助けを求めることを決してためらわないでください。コミュニティの誰もがあなたの成功を見たいと思っています。