Skip to content

Latest commit

 

History

History
151 lines (112 loc) · 8.9 KB

CONTRIBUTING.md

File metadata and controls

151 lines (112 loc) · 8.9 KB

JDimへコントリビュートする

はじめに、ガイドを読む時間を取っていただきありがとうございます。 👍
私達はJDimを開発・保守してくためにパッチを歓迎しています! 💞

JDimへのコントリビュート方法を案内します。

  • 🔰 まずはJDimproved/JDimをforkしてリポジトリを用意し、ローカルにcloneしてJDimをビルドしてみましょう。 → README.md
  • 🔍 IssuesPull requestsを確認すると興味関心のあるトピックが見つかるかもしれません。
  • 🌏 Linux板@5ちゃんねるのJD/JDimスレで質問やバグ報告をすることもできます。
  • 💟 JDimはボランティアによって開発・保守されています。 そのため速やかに返信することが難しい場合がありますが予めご了承ください。

❓ 質問をしたい

Discussionsを開いて質問をします。 → New discussion

使い方や設定方法の情報はオンラインマニュアルや 2ch/5chのスレッド・過去ログにありますのでそちらも参照してください。

🪲 バグを報告したい

Issueを開いてバグを報告します。 → Issue: 不具合(バグ)の報告

以下の情報は原因特定の手がかりになりますのでご報告くださいますようお願いいたします。

  • 動作環境(クリップボードへのコピーを利用してください)
  • やりたいこと・期待する動作
  • バグが現れるまでの手順・操作
  • 実際の結果・エラーメッセージ

バグなのかはっきりしない場合はDiscussionsで質問してみてください。 → New discussion

💪 機能のリクエストをしたい

Issueを開いて欲しい機能の要望を出しフィードバックを集めます。 → Issue: 機能の変更
可能ならコードを書き始めてください。実証用でもコードがあると具体的なフィードバックが集まりやすいです。

📬 Pull requestを提出する

Pull requestはmasterブランチに対してお願いいたします。

  • 文書やソースコードのタイプミス修正、バグ修正、文書の改善、機能の改善などは直接PRを受け付けています。
  • ユーザーインタフェースの変更や互換性に影響が出る修正は最初にissueを開いて意見・要望をお伝えいただければ幸いです。
  • 影響が大きい変更はRFCプロセスが必要になる場合があります。
  • オンラインマニュアルの編集については docs/README.md を参照してください。
  • テストケースを追加して動作をチェックすることもできます。詳細は test/README.md を参照してください。

📝 C++ソースコードを修正するときの注意

  • C++17の機能を使う。迷ったときはC++ Core Guidelinesを参考にする。
  • CIのビルドで失敗する機能は使わなくてもビルドできるようにする。(下記参照)
  • コーディングスタイルは周囲のコードになるべく合わせる。
  • ソースコードを修正したときはビルド可能なことチェックする。
  • 修正前よりコンパイル時警告を増やさないように気をつける。
  • ファイルの作成、ファイル間で内容のコピーを行うときライセンスに注意する点があります。(下記参照)

C++17で追加された標準ライブラリのうちg++ 10またはclang++ 11がサポートしていないものに注意

JDimの動作環境に合わない標準ライブラリ ヘッダー gcc clang
Standardization of Parallelism TS <execution> 9 n/a
Hardware interference size 12 19
Polymorphic memory resources <memory_resources> 9 16
Mathematical special functions 7 n/a
Elementary string conversions (floating-point support) <charconv> 11 n/a
DR17: std::hash<std::filesystem::path> 11.4 17

⛓️ Unity buildの注意

ビルドツールMesonは複数のソースファイルを1つに結合してコンパイルする Unity build という機能があります(デフォルトは無効)。 機能を有効に設定してソースファイルを結合するとマクロや変数などの名前が衝突してコンパイルに失敗することがあります。

ビルドの問題を見つけたときはバグ報告や修正のPull requestをいただけると幸いです。

  • 名前が衝突したときは名称を変更したり入れ子の名前空間の中に入れるなどで衝突を回避できます。
    // 入れ子の名前空間の例
    namespace Outer::priv { constexpr int kBufferSize = 1024; }
    
    using namespace Outer;
    use_value( priv::kBufferSize );
  • #defineマクロによる意図しない定義変更(上書き)に注意してください。 コンパイラーがマクロの警告を出したときはマクロ以外の方法が使えないかチェックしてみてください。
Unity buildの使い方

setupサブコマンドで-Dunity=onを指定します。 ビルドオプション-Dunity_size=Nで1つに結合するファイル数を変更できます。

meson setup builddir -Dunity=on -Dunity_size=10
ninja -C builddir

ソースコードのファイルを新しく作成するときは

ファイルの冒頭に GPL-2.0-or-later を表示するSPDX形式のコメントを追加してください。

// SPDX-License-Identifier: GPL-2.0-or-later
ソースコード以外のファイルを新しく作成するときは

ソースコードと同様にファイルの冒頭にライセンスを表示するSPDXのコメントを追加してください。 コメントが書けないファイル形式のときはコミットメッセージにファイル名とライセンスを書いて指定できます (未指定のときはGPL-2.0-or-later)。

JDimのプログラムに影響しないドキュメントやメタデータなどのファイルはGPLと互換性のある寛容なライセンスを使用しても問題ありません。

ファイルの内容を移動、コピーするときの取り扱い

GPL-2.0-or-later のファイルに GPL2 の内容をコピーしないよう注意してください。

コピー元 コピー先 可否
GPL2 GPL-2.0-or-later ❌ ライセンスがGPL2に変わるためコピーは避ける ※
GPL-2.0-or-later GPL2 ✔️ コピーしてよい

※ ライセンス変更に承諾した貢献者が書いた修正であり既存の改変ではなく新しく追加したコードブロックであるならコピーしてもよい

ファイルのライセンスついては RFC 0013: ライセンス GPL-2.0-or-later を導入する も参照してください。