Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

OSS開発初めかた (Issueの見つけ方)

この記事は,東京大学工学部電子情報工学科・電気電子工学科(通称EEIC)の3年後期実験の一つである「大規模ソフトウェアを手探る」のレポートとして,書かれたものです。

Issueの見つけ方

「大規模ソフトウェアを手探る」という実験で私たちの班はOSSのお絵かきソフトであるinkscapeを題材として選択し、バグを修正してマージするところまでできました。環境構築、バグの直しかたについては以下の概要記事から参照してください。
Inkscapeを手探る

inkscapeを題材にすると決めてから私たちは自分たちでInkscapeを触ってみて付け加えたい機能を探す他に既存のIssueをみて、自分たちにも解決できるバグが報告されていないか探しました。

Issue 一覧

GitLab

Issue一覧は開発したいOSSの左側の項目一覧からIssueという項目から探すことができます。
image.png

GitHub

GitHubページなら上の項目の中のIssueから一覧を見ることができます。
image.png

labelでIssueを探す。

初めてだとどれがはじめやすいIssueなのかみてもわからないので、いくつかある初心者用のラベルがついているIssueからみていくとわかりやすいです。
初心者ラベルにはeasy-fix やgood first issueなどがあります。
image.png
image.png

これらのタグがついているIssueは比較的楽だったりします。

比較的簡単なIssueの例

実際にeasy-fixのラベルがついていて簡単に直せそうだと見つけたIssueを紹介したいと思います。 (残念なことに取り掛かる前に別の人にMRを出されてしまった。)
Prevent deleting locked guides - Inkscape
image.png
これはお絵かきアプリInkscapeのバグについてのIssueで内容としてはguideという機能を使うときにある線をロックした場合deleteボタンでは削除できないはずなのに、削除できてしまうという内容です。実際にこのIssueがまだopenのときに確認したところ確かにロックされているのに削除できてしまう状態でした。

バグの内容を聞いただけだと何がよくないのかわからず直すのが難しいバグに思えますが、InkscapeのdeveloperがこのIssueにコメントをつけておりそれが解決のヒントとなります。image.png
わかりやすく言い換えると「desktop-events.cppファイルの中のsp_guide_removeを呼び出すときにlockされているかどうかをチャックすればいいだけだからeasy-fixだね」

つまりlockされている時だけsp_guide_removeを呼び出すようにすればいいということ。簡単に聞こえてきた。
実際のMRではどのように直されたかコードをみてみる。
Prevent locked guides from being deleted
image.png
コメントのとおりにsp_guide_removeが呼び出される前にguide->getLocked()がTrueかFalseかを確かめているだけ。コードにするとif文一つ付け加えただけである。

このIssueは見つけてから取り掛かるまでに時間を置いてしまったこともあり、実際に自分で直すことはできなかったが、if文一つ付け加えるだけでIssueを直すことができるということを学ぶことができたよいIssueであった。

Issueを見つけた後は?

Issueを見つけた後は実際にコードを変更してバグを直してMRなりPRをだしてOSSに貢献しましょう。
Issueを見つけた後のMRを出すまでの動きは次の記事でまとめました。
OSS開発初めかた (GitLabにある本家にマージ) - Qiita

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away