GROMACS への貢献

GROMACS は、コミュニティ主導のプロジェクトであり、皆様からの貢献を歓迎しています。貢献は、ドキュメントの改善、バグの修正パッチ、フォーラムでのアドバイス、問題を再現するためのバグ報告、および新しい機能の追加など、さまざまな形で歓迎されます。

GROMACS に新しい機能を追加する予定がある場合は、ぜひ早期に私たちにご連絡ください。新しい機能は、素晴らしい研究につながる可能性があり、私たちはそれを歓迎します。しかし、その後のコードのメンテナンスには、あなたと、あなたと同じような科学的な情熱を持たない他の人からの、初期段階での取り組みと長期的なコミットメントが必要です。まず、以下のページをよく読んでください。また、開発者フォーラム で議論に参加することもお勧めします。gmx-developers mailing list archive を参照することも役立つ場合があります。計画段階でも、私たちがお手伝いできる場合があります!

多くの場合、ドキュメントはソースコードと一緒に、gitリポジトリ内にあります。 ソースコードへの変更を提案する場合は、同じメカニズムを使用して貢献できます。 また、同様の方法でレビューされます。

チェックリスト

GROMACS にコードを提出する前に、以下のすべての項目を確認してください。

  • 有用性: ソフトウェアは、科学コミュニティ全体で広く利用できるものである必要があります。 小規模なプロジェクトがソフトウェアを使用することは歓迎されますが、限定的な用途しか持たないソフトウェアの維持には対応できません。 ソフトウェアが実際に利用されていることを示すには、すでに利用している人がいることを示すのが有効な手段です。 科学論文も有効な手段ですが、理想的には、複数の研究グループからの論文で、その方法が広く採用されていることを示す必要があります。

  • 議論の促進: 他の開発者と、例えば `開発者フォーラム`_や `Issueトラッカー`_などで連絡を取り、あなたの計画の概要を伝えてください。これにより、重複した作業や無駄な作業を防ぐことができます。また、関連する他のプロジェクトに関する情報を、フォーラム、Issueトラッカー、および文献やWWWで検索することも有効です。

  • 検証可能: 新しい方法を提案した場合、最初に確認が通った場合は、物理的な観点からそれが正しいかどうかを簡単に検証できるようにする必要があります。これには、能力のある大学院生があなたの方法を適切に使用できるように、ソースコードとユーザーガイドおよび/またはリファレンスマニュアルに追加された内容の両方で、詳細なドキュメントが含まれている必要があります。ソースコードのドキュメントは、保守と将来の開発にも役立ちます。

    これにより、コードにユニットテストを含めることが可能になります。詳細は、新しいテストを作成する方法 のセクションを参照してください。

    また、コードの自動的な高レベルテストも必要です。なぜなら、コードの詳細を理解していない人が、依存しているインフラを変更できるようにする必要があるからです。|Gromacs|は、:doc:`GitLab <gitlab-ci>`を用いた自動継続的インテグレーションテストを使用しており、提案された変更があなたのコードに影響を与えるかどうかについて、迅速なフィードバックを得る必要があります。これにより、あなたの機能を使用するユーザーは、あなたが貢献した機能に基づいて、|Gromacs|の新しいバージョンがリリースされた後に、信頼できる結果に基づいて、質の高い研究を継続できます。

  • コードの変更プロセス: コードの正確性、品質、およびパフォーマンスを確認することは、信頼できる科学的結果を提供する高品質なソフトウェアを開発するために不可欠な非常に時間のかかるプロセスです。しかし、人間は忙しく、注意の持続時間が短いため、10,000行のコードに影響を与える提案された変更は、他の開発者からのレビューに対する大きな関心を引くとは限りません。また、ローカルのGitコミット履歴には、貢献したいバージョンに存在しない変更が多数含まれている可能性があり、それらを合理的にレビューすることはできません。そのため、プロセスをより管理しやすい段階に分割することが考えられます。

    • 必要な :doc:`mdpの設定<../user-guide/mdp-options>`を読み取り、および :ref:`tpr`を作成する機能。

    • mdrun の機能により、あなたの機能の最も基本的な実行を行うことができます。

    • さらに、ご自身の機能のための追加機能や/または最適化、および

    • シミュレーション結果を効果的に活用するための、分析ツールの機能。

    ぜひ、`開発者フォーラム`などでご連絡いただき、こちらでアイデアを交換してください。

  • 迅速性: 毎年、|Gromacs|のリリースを行います。機能の凍結(およびGitブランチのフォーク)は、事前に6ヶ月以上前に合意された固定の日付で行います。フォークとリリース前に、品質テストを行うには1ヶ月以上の期間が必要です。そのため、リリース前に特定の種類の潜在的にリスクの高い変更を受け入れることができません。 (メインブランチは、あらゆる種類の変更を受け入れるように維持されますが、多くのコア開発者の注目はリリースプロセスに集中する可能性があります。) 大きな変更を提案する場合は、

    • 小さな変更をまとめたグループを作成する。

    • 事前に、誰がコードレビューを行うかを決定し、

    • レビューと改善のために、それらを**少なくとも**その日付の数か月前に用意してください。 わずかな変更でも、最後の1か月あたりには他の人がレビューする可能性は低いでしょう!

  • コーディングスタイル: 以下の点にご注意ください。 * コードが、コーディングスタイル および コードのフォーマット ガイドラインに準拠していることを確認してください。これにより、両者の間でスムーズなコードレビューが可能になります。 GROMACS には、これらを支援するためのいくつかのツールが組み込まれています。詳細は、関連するドキュメント を参照してください。

  • コードのドキュメント: 正しいコードのドキュメントを確保するため、以下の手順に従ってください。doxygen の使用に関する指示を参照してください。さらに、新しい機能はマニュアルおよび、必要に応じてユーザーガイドにも記載する必要があります。

  • コードのスタイルに加えて、:ref:`コミットのスタイル <code-commitstyle>`に関する指示にも従ってください。これにより、コードレビューのプロセスも円滑に進みます。

コードの提出準備

GROMACS は、:doc:`change-management のために git を使用します。 「プルリクエスト」を受け入れる代わりに、GROMACS の変更は、gitlab でホストされている main ブランチの最先端に個別のコミットとして提出されます。 変更の準備、提出、およびパッチの管理には、ある程度のセットアップが必要です。 詳細は、`:doc:`change-management を参照してください。

  • GROMACS git リポジトリへのアクセス

  • リポジトリの構造

  • マージコミットなしでのソース管理

  • git の使用方法、これは他の開発ワークフローではあまり一般的でない可能性があります。

代替案

GROMACS は、GitHub で公開されているミラー版が https://github.com/gromacs/gromacs にあります。ご自身の GitHub アカウントでプロジェクトをフォークし、その方法で機能を公開することも可能です。これにより、機能のコアへの貢献を支持するユーザーを増やし、プロジェクトへの貢献を促進することができます。ただし、このプロセスも、ここで説明されている残りの条件に従う必要があります。GROMACS をフォークする場合は、CMake 変数 GMX_VERSION_STRING_OF_FORK を適切な説明文に設定してください。詳細は、cmake/gmxVersionInfo.cmake を参照してください。

GROMACS の安定した API を開発するためのプロジェクトが現在進行中です。これにより、コア機能の品質を維持しながら、革新を促進する優れたツールとなることが期待されます。API が利用可能になった際には、ご自身の機能をこの API に移行することを検討してください。開発者フォーラム で情報を共有し続けることで、そのような機能が利用可能になったことをいち早く知ることができます!

他に質問はありますか?

これらの点についてご不明な点がございましたら、または、貢献に関するアイデアについてフィードバックをいただきたい場合は、`開発者フォーラム`_を通じてお気軽にお問い合わせください。 もし、あなたのコードが|Gromacs|コミュニティ全体にとって興味深いものであれば、それをメインのソースツリーに含めるプロセスを支援させていただきます。

機能の削除

以下のような状況で必要となることがあり、その場合は:ref: deprecation-policy のポリシーに従ってください。また、ユーザー向けには、「メジャーリリース」の:ref: release-notes に、廃止予定の機能を含む、予定されている変更のリストが記載されています。