Symbolの開発への貢献の仕方

#はじめに
来年2021年のはじめにSymbolのメインネットのローンチが予定されています。

これからローンチに向け、テストネットでのテストが活発になってくると思います。
不具合を発見したり、改善提案など思いついた場合、
どうやって開発者に伝えたらよいかわからなくて、そのままにしてしまう人も
でてくるかもしれません。
そんなときの一助になればと思って本記事を翻訳してみました。

catapult-serverをはじめ、Symbolのさまざまなプロジェクトは、
以下でオープンソースプロジェクトとして開発されています。

[https://github.com/nemtech/](https://github.com/nemtech/)


つまり、誰でもいつでも直接開発者に意見や提案を伝えることができるということです。

最初にイシュー(不具合報告)やプルリク(修正提案)を出すとき、ちょっと不安になるかもしれません。
しかし、そんなに難しくないので全然大丈夫です。すぐ慣れます。
開発のみなさんは、非常にやさしくて親切です。
やりとりは英語になりますが、[DeepL](https://www.deepl.com/translator)で問題なしです。

まあ、とにかく、一度実際に、やってみてください^^

なお、以下は、本家のsymbol-bootstrapのレポジトリの「[Contributing to symbol-bootstrap](https://github.com/nemtech/symbol-bootstrap/blob/main/CONTRIBUTING.md
)」という文書の邦訳です。
基本的に、Symbolのその他のプロジェクトも同じ手順で大丈夫と思います。

(なお、最後のプルリクの手順が簡素すぎてわかりにくいかもしれないので、後で補足するかもしれない)

今後さらに日本からの直接の貢献がどんどん増えていってほしいなと思っています。


# symbol-bootstrapへの貢献の仕方
まずはじめに、symbol-bootstrapへの貢献を検討していただきありがとうございます。

まさに、あなたような方が、symbol-bootstrapをこんな素晴らしいツールにしているのです！

symbol-bootstrap はオープンソースプロジェクトです。
私たち開発者一同はコミュニティ、そう、あなたからの貢献を本当に心よりお待ちしております。

symbol-bootstrapに貢献する方法ですが、次のようにたくさんあります。
- チュートリアルやブログの記事を書いたり、
- ドキュメントの改善してみたり、
- バグレポートや機能要求の出してみたり、
- そして、symbol-bootstrap本体のための修正や機能拡張用のコードを書いてみたりなどなど

本書では、symbol-bootstrapへ貢献するときのガイドラインを記述しています。

開発者は、オープンソースプロジェクトの管理や開発でかなり忙しくしています。
このガイドラインに従っていただけるということは、彼らの時間を尊重しているということを彼らに伝えることになります。

開発者は、あなたに時間を尊重していただいたということに応えるため、あなたが提出してくれたイシュー(不具合報告)に対し、真摯に対処し、変更についての評価をしてくれるでしょう。
また、あなたのプルリクエスト(変更提案)を最終的にまとめる手助けをしてくれると思います。

あと、注意点です。
**サポートの質問などには、イシュートラッカーを利用しないようお願いいたします。あくまでも不具合報などのみに利用してください。**

## バグ報告

catapult-server のバグを見つけたと思ったら、まず最新バージョンのsymbol-bootstrap でテストしているかどうかを確認してください。

あなたの問題はすでに修正されているかもしれません。
そうでない場合は、GitHub のイシューリストを検索してみてください。
同様の問題をすでに誰かが提出して議論されているかもしれません。

それから、そのバグを再現方法を準備していただけると非常に助かります。
開発者がバグを確認するために実行できる小さなテストケースを提供していただけると、さらに助かります。
そうすることで、問題の発見や修正が容易になります。

次のテンプレートを参考にしてください。
(実際に出すときは英語版でお願いします)

* 日本語版

> **期待するふるまい**
> 期待する正しいふるまいを簡単にわかりやすく説明してください。
> **今のふるまい**
> 現時点でのふるまいを簡潔に説明してください。 
> **再現手順**
> 問題を再現するためのステップバイステップの説明をお願いします。より素早く問題を検出するためです。

* 英語版

> **Expected Behaviour**\
> Short and expressive sentence explaining what the code should do.\
> **Current Behaviour**\
> A short sentence enplaning what the code does. \
> **Steps to reproduce**\
> For faster issue detection, we would need a step by step description do reproduce the issue.

問題解決のため、できるだけ多くの情報を提供していただくようお願いいたします。

不具合を発見した場合は、[ここ][github-issues]からイシューを提出してください。

https://github.com/nemtech/symbol-bootstrap/issues



## 機能の追加要望
もし、あなたがいまのsymbol-bootstrapにはない機能を望んでいることに気がついたとしたら、あなたはおそらく一人ではありません。
同じようなニーズを持つ他の人がいるはずです。
symbol-bootstrapが今日持っている機能の多くは、ユーザーが必要性を感じたからこそ追加されたものです。
GitHubのイシューリストでイシューを提出して、あなたが見たい機能、なぜそれが必要なのか、そしてどのように動作するべきかを記述してください。

## コードおよびドキュメントの変更の貢献について

ここでは、もしあなたがsymbol-bootstrapに対し、バグフィックスや提案したい新機能を持っていた場合について記述します。

その場合、まずそれについての同じようなイシューがないかどうか調べて、なければイシューを提出してください。

そして、そのイシューの中で、何をしたいかを話してみてください。

もしかしたら、誰かがすでにそれに取り組んでいるかもしれませんし、変更を実装する前に知っておくべき特定の問題があるかもしれません。

私たちは、あなたのコードを取り込むために、あなたと一緒に作業することを楽しみにしています。
問題を修正するためには多くのアプローチがあり、コードを書きすぎる前に最適なアプローチを見つけることが重要です。

### ライセンスの注意点

あなたがコードを投稿するとき、あなたはその投稿があなたのオリジナル作品であり、その作品をプロジェクトのオープンソースライセンスに基づいてプロジェクトにライセンスすることを保証するものとします。

このことを明示しているかどうかに関わらず、プルリクエストや電子メール、その他の手段で著作権で保護された素材を提出することで、あなたはその素材をプロジェクトのオープンソースライセンスの下でライセンスすることに同意し、それを行う法的権限を持っていることを保証するものとします。


### レポジトリのフォークおよびクローン

コードやドキュメントを修正するときには、メインの catapult-server コードまたはドキュメンテーションリポジトリをフォークして、ローカルマシンにクローンする必要があります。

ヘルプは [github](https://help.github.com/articles/fork-a-repo/) のヘルプページを参照してください。

https://help.github.com/articles/fork-a-repo/

本プロジェクトでの詳細な手順は以下で説明します。。


### 修正の提案(プルリクエスト)

変更とテストの準備ができたら、レビューのために提出します。

1. 変更をテストしてください。 テストスイートを実行して、何も壊れていないことを確認してください。
2. プルリクエストを提出してください。 
3. ローカルの変更をリポジトリのフォークされたコピーにプッシュし、プルリクエストを提出してください。
4. プルリクエストでは、変更内容をまとめたタイトルを選び、本文には変更内容の詳細を記載してください。また、議論が行われているissueの番号(例えば "Closes #123 "など)も記載してください。

その後、座ってしばらく待っていてください。
おそらくプルリクエストについての議論があるでしょう。
そして、変更が必要な場合は、あなたのプルリクエストをsymbol-bootstrapにマージするためにあなたと一緒に作業したいと思います。

*CONTRIBUTING.mdは[CONTRIBUTING-template.md](https://github.com/nayafia/contributing-template/blob/master/CONTRIBUTING-template.md)* , [elasticsearch/CONTRIBUTING](https://github.com/elastic/elasticsearch/blob/master/CONTRIBUTING.md) と[spark/CONTRIBUTING](https://github.com/apache/spark/blob/master/CONTRIBUTING.md)をベースに作成されました。

[github-issues]: https://github.com/nemtech/symbol-bootstrap/issues