🐬

MariaDBにコントリビュートするまで

2022/05/17に公開

2022年の3月ごろからMariaDBへのコントリビュートを始めた。

MariaDBという割と大きなOSSに、こんな自分でもコミットすることができたということを伝えるために過程や学んだことを書き残していきます。

自己紹介

たけきよ(@takekiy)と言います。
4月から新卒でエンジニアとして働いています。
3月まではOSSにコントリビュートしてみたいな〜と思いながら何もしていないただの学生でした。

MariaDBとは

MariaDBとは、MySQLから派生したRDBMSです。
コードを見ると分かりますが、MySQLと共通する部分もかなり多いです。
実際に、テストケースは /mysql-test というディレクトリに格納されていたり、あげればキリがありません。

また、日本人でMariaDBのメンテナの方がいらっしゃり、環境構築などに関してはメンテナの方が書かれたブログ Debugging MySQL/MariaDB (1): Build and Test を参考にすると良いと思います。

ちなみに自分はこの方のTwitterを見てコントリビュートを決意しました。

issue

MariaDBでは、JIRAを使ってissueを管理しています。
Slackのコミュニティやメーリングリストもありますが、issueを探すだけならばJIRAを見るだけで十分のように思います。

JIRAには、beginner-friendlyタグがあり、とっつきやすいissueを探すこともできます。
が、全く初心者向けでないissueにもこのタグがつけられていることもあるので少し罠である。

おすすめは以下の特徴を持つissueです。

  • crashバグ
  • first bad commitが小さい

first bad commitを特定するためにはgit-bisectを使用する必要がありますが、issueによってはすでに特定されているものもあるので、たまにJIRAを眺めておくととっつきやすいissueに出会えるかもしれない。

ここからは、実際に自分がPull Requestを出したissueを紹介しながら、JIRAの見方などを紹介していきます。

こちらがissueです。
Spider Storage Engineにおいて、一時テーブルを作ることを禁止するというissueです。

JIRAのなかでまず注目すべき部分は、issueのdescriptionやcommentです。
もちろん書かれている情報を一通り見る必要がありますが、実際にコントリビュートを行うにあたっては、以下の2つをしっかりと確認する必要があります。

  1. Fix Version/s
  2. status

Fix Version/sについて
Fix Version/sとは、パッチがマージされるべきブランチを指します。

そのため、Fix Version/sに記載されているなかで最も古いバージョンからブランチを派生させ、そのブランチにPull Requestを投げます。

statusについて
statusとは、文字通りそのissueの状態を表します。

statusがconfirmedなものは、Fix Version/sなどがメンテナによって確認されたissueを指します。
一方で、statusがopenのissueはFix Version/sなどが確認されていないissueを指します。

しかし、statusがconfirmedな場合でも、Fix Version/sが正確でない場合もあるため、念のため前後のバージョンでissueが再現しないか確認しておくと良いです。

実際のデバッグに関しては、実例で学ぶ MySQL/MariaDB デバッグを参考にしてください。

コミットしてみて

学ぶことが多い

自分のスキル不足もありますが、圧倒的に学ぶことが多いです。
DBエンジンの内部を少しずつ知っていける喜びもありますし、開発に関するお作法なども学ぶことができます。

コード全体を最初から理解しなくても良い

小さいissueに取り掛かるだけなら、コード全体の流れを理解する必要は必ずしもないと思います。
(もちろん取り組むissueによりますが!)

取り組むissueに関するコードの流れを追うだけならば全体を理解する必要は必ずしもないです。
というよりも巨大なOSSのコード全体を把握するのは不可能に近いと思います。

自分は、MySQL/MariaDBのコードの流れなどをざっくりと知るためにExpert MySQLの前半部分を読みました。

怖がる必要はない

この感想の部分を伝えたくてこの記事を書きました。

OSSというと、エンジニアの精鋭が集まって議論したり開発しているイメージでした。
もちろんメンテナや長年開発している方達は、とてもハイレベルであることは間違い無いです。

ただ、OSSにコントリビュートをしてみるという障壁を越えるだけならば、ハイレベルである必要は必ずしもないということを伝えたいです。

もちろん技術や英語のレベルが高いに越したことはないですが、自分のようなただの学生でもMariaDBというOSSにコントリビュートすることができたので、少しでも興味があれば絶対に可能だと思います。

さいごに

自分がMariaDBのコントリビュートを始めた経緯や気づきをまとめました。

OSSに興味はあるけど何をすればいいかわからない〜という方(特に学生の方)の背中を少しでも押せればと思います。

再掲になりますが、少しでもMariaDBのコントリビュートに興味を持った方がいればDebugging MySQL/MariaDB (1): Build and Testを是非読んでみてください。

Discussion