この記事は,東京大学工学部電子情報工学科・電気電子工学科(通称EEIC)の3年後期実験の一つである「大規模ソフトウェアを手探る」のレポートとして,書かれたものです。
Issueの見つけ方
「大規模ソフトウェアを手探る」という実験で私たちの班はOSSのお絵かきソフトであるinkscapeを題材として選択し、バグを修正してマージするところまでできました。環境構築、バグの直しかたについては以下の概要記事から参照してください。
Inkscapeを手探る
inkscapeを題材にすると決めてから私たちは自分たちでInkscapeを触ってみて付け加えたい機能を探す他に既存のIssueをみて、自分たちにも解決できるバグが報告されていないか探しました。
Issue 一覧
GitLab
Issue一覧は開発したいOSSの左側の項目一覧からIssueという項目から探すことができます。
GitHub
GitHubページなら上の項目の中のIssueから一覧を見ることができます。
labelでIssueを探す。
初めてだとどれがはじめやすいIssueなのかみてもわからないので、いくつかある初心者用のラベルがついているIssueからみていくとわかりやすいです。
初心者ラベルにはeasy-fix
やgood first issue
などがあります。
これらのタグがついているIssueは比較的楽だったりします。
比較的簡単なIssueの例
実際にeasy-fix
のラベルがついていて簡単に直せそうだと見つけたIssueを紹介したいと思います。 (残念なことに取り掛かる前に別の人にMRを出されてしまった。)
Prevent deleting locked guides - Inkscape
これはお絵かきアプリInkscapeのバグについてのIssueで内容としてはguideという機能を使うときにある線をロックした場合deleteボタンでは削除できないはずなのに、削除できてしまうという内容です。実際にこのIssueがまだopenのときに確認したところ確かにロックされているのに削除できてしまう状態でした。
バグの内容を聞いただけだと何がよくないのかわからず直すのが難しいバグに思えますが、InkscapeのdeveloperがこのIssueにコメントをつけておりそれが解決のヒントとなります。
わかりやすく言い換えると「desktop-events.cppファイルの中のsp_guide_removeを呼び出すときにlockされているかどうかをチャックすればいいだけだからeasy-fix
だね」
つまりlockされている時だけsp_guide_removeを呼び出すようにすればいいということ。簡単に聞こえてきた。
実際のMRではどのように直されたかコードをみてみる。
Prevent locked guides from being deleted
コメントのとおりにsp_guide_removeが呼び出される前にguide->getLocked()がTrueかFalseかを確かめているだけ。コードにするとif文一つ付け加えただけである。
このIssueは見つけてから取り掛かるまでに時間を置いてしまったこともあり、実際に自分で直すことはできなかったが、if文一つ付け加えるだけでIssueを直すことができるということを学ぶことができたよいIssueであった。
Issueを見つけた後は?
Issueを見つけた後は実際にコードを変更してバグを直してMRなりPRをだしてOSSに貢献しましょう。
Issueを見つけた後のMRを出すまでの動きは次の記事でまとめました。
OSS開発初めかた (GitLabにある本家にマージ) - Qiita