【社内勉強会報告】「あなたもOSSにTRY！～Djangoコントリビュート報告～」

# はじめに
こんにちは！
今年の4月に新卒で入社しました。[AXLBIT株式会社](https://axlbit.com/)開発部の@ax-nakamuraです。

今回は、2023年5月9日に行われた社内勉強会の内容を記事にまとめます。
勉強会のテーマは　**「あなたもOSSにTRY！~Djangoコントリビュート報告~」** でした。
この記事では、Djangoコントリビュートに挑戦した社員によるOSSへの貢献体験の報告をお届けします。

この記事では、勉強会の内容を踏まえつつ
>1. **OSSコントリビューションとは?**
>
>1. **OSSのコントリビューションの参加方法**
>
>    - **Djangoコントリビュートの参加方法**
>1. **Djangoコントリビュートにおける初心者向けタスクの見つけ方**
>
>1. **Djangoコントリビュートでの開発の流れ**
>
>1. **Q＆A**
>


という流れで、お話します。

# OSSコントリビューションとは？

**【基本用語解説】**
**OSS**：オープンソースソフトウェア。誰でもアクセスできるように設計されたコード。プロの企業ではなく有志のエンジニアによって作られているので安価に使うことができる。

**コントリビューション**：OSSのコードのバグの発見、修正、リリースノート等ドキュメントの執筆、翻訳といったOSSへの貢献活動。

**コントリビューター**：OSSのコントリビューションに参加している人のこと。

**コアコミッター**：コントリビューションに積極的に寄与する、OSSの中心的な人物。

# OSSコントリビューションの参加方法
OSSの公式サイトの中に「貢献する」といったコントリビュートにかかわるページを発見することができます。
ここからコントリビューションに参加します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346634/74a23e1f-37d1-703c-6bf0-160125b7b6ff.png" width="400px">
▲TensorFlowのコントリビューション画面
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346634/704c3002-4023-128f-088d-52fb0bee49a0.png" width="400px">
▲Reactのコントリビューション画面

## Djangoコントリビュートの参加方法

今回は**Django**を例に進めていきます！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346634/741bf6e5-f0a1-2ef9-3894-49bc2bfc8c85.png" width="400px">

公式サイトの「COMMUNITY[^1]」からコントリビュートの情報が見られます。
Contribution to Django[^2]では参加要件が詳細に記載されています。

Djangoにおけるコードの記法やルールも載っているので、ここの確認から始めましょう。
初めてのコントリビューター向けにドキュメントもまとめられています(Advice for new contributors[^3])。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346634/ea3c3c9d-295b-0414-027c-cf28d8364194.png" width="400px">

▲Community画面

---
次に、「ISSUES>View Tickets[^4]」から、実際に現在共有されているタスクチケットを確認します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346634/f09a1121-f896-be58-e413-26db57ef0c37.png" width="400px">

▲ISSUES画面



|  タブの名前  |  意味  |
| ---- | ---- |
|  Status  |  new=誰も着手していない<br>assingned=誰かが担当についている<br>closed=解決済み  |
|  Owner  |  担当者の名前  |
|  Type  |  タスクの種類  |
|  Component  |  関連するコンポーネント  |
|  Version  |  チケットの対象バージョン  |

ここでFiltersの機能を使うと、自分に合ったタスクを見つけやすくなります。

# Djangoコントリビュートにおける初心者向けタスクの見つけ方
**①フィルタでEasy_pickingとタグ付けされたチケットを選ぶ**
Tiketsの欄には様々なフィルタがあり、Easy pickingsは初心者でも手の付けやすい簡単なタスクを集めています。

**②チケットの内容がリリースノート修正やドキュメント作成などを選ぶ**
文章を書くものであれば、テストもしなくてよく、コード修正と比べるとハードルは低そうです。

# Djangoコントリビュートでの開発の流れ

**① チケットを選び、担当者になる。**

**② GitHubのDjangoのリポジトリから該当バージョンのコードをクローンしてくる**

**③ 初回テストをする**

**④ 作業ブランチを切って開発する**

**⑤ テストをする**

**⑥ プルリクを出し、コアコミッターからの許諾を待つ**

**⑦ ④～⑥を繰り返し、許可が出たら開発終了！**

# Q&A
実際に参加した社員(@ax-tabu)にコントリビュートについてインタビューしてみました！

**Q. 今回参加した理由は何ですか？**
**A.** もともとOSS参加には興味があって、どのソフトウェアで参加しようか考えていたところでした。普段使っているソフトウェアのコミット履歴に自分の名前が載るのは名誉なことだと思い、参加しました。また、少しでも恩返しできれば、という気持ちもありました！

**Q. 報酬はもらえますか？**
**A. 報酬などはありません。** 世界中で使われているソフトウェアのコミット履歴に自分の名前が載るということが何にも代えがたい報酬のようなものですね！

**Q. assignedのタスクでも略奪ができるって本当ですか？**
**A. すでにassignedになっているタスクでも、先に修正を終わらせてプルリクを出してしまえば、略奪することはできると思います！** 実際に自分も、どうやって修正すべきか考えているうちに他の人にタスクをとられてしまいました...。

**Q. 大体チケットを選んでからタスク完了までにどれぐらいかかりましたか？**
**A.** タスクにもよりますが、**1日でタスクを終え、3日目にプルリクが取り込まれました。** その間もコアコミッタ―の人がプルリクに改善点のコメントを残してくれたり、次にやるべきことを指示してくれたりしたので、タスクが進めやすかったです！

**Q. コアコミッターとのやり取りはどうやって行うんですか？**
**A.** **djangoのタスクのチケットシステム内**でやり取りを行う場合もありますし、**プルリクのコメント**でやり取りを行う場合もあります！もちろん**すべて英語**です！自分の場合、初めてのOSS参加であることを伝えると、「ようこそ！」と温かいメッセージもいただきました。



# おわりに

今回発表を聞いてからDjangoコントリビュートについて調べてみて、予想以上に開発環境が整っていて驚きました。チケットは分類されていてわかりやすく、できそうなものを選んで取り組むことができます。
普段会社で扱うコードしか見る機会がないので、OSSのコントリビュートに参加すると色んなコードの書き方やルールに触れられて勉強になりそうだと思いました！

皆さんも機会があればぜひ挑戦してみてください！

# 参考文献
[^1]:[Django COMMUNITY](https://www.djangoproject.com/community/)
[^2]:[Contribution to Django](https://docs.djangoproject.com/en/dev/internals/contributing/)
[^3]:[Advice for new contributors](https://docs.djangoproject.com/en/dev/internals/contributing/new-contributors/)
[^4]:[View Tickets](https://www.djangoproject.com/community/)