Thank you for your interest in contributing to ForgeDock. Before you submit a pull request, please read this document carefully — especially the DCO requirement.
ForgeDock is dual-licensed: open-source contributions are licensed under AGPL-3.0, and RapierCraft Studios offers a separate commercial license for proprietary use. To support this model, all contributions must include a DCO sign-off.
The Developer Certificate of Origin is a lightweight way for contributors to certify that they wrote (or have the right to submit) the code they are contributing. By signing off, you confirm:
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.
ForgeDock uses a dual-license model (AGPL-3.0 + commercial). For RapierCraft Studios to offer a commercial license that covers contributed code, we need a clear record of each contributor's intent to grant rights. The DCO provides this record without requiring contributors to sign a separate legal agreement.
Add a Signed-off-by: trailer to each commit using git commit -s:
git commit -s -m "feat: add new pipeline phase"This appends the following to your commit message:
Signed-off-by: Your Name <your.email@example.com>
The name and email must match your Git identity. To set them:
git config user.name "Your Name"
git config user.email "your.email@example.com"If your PR has commits without a Signed-off-by line, you can amend them:
Single commit:
git commit --amend -s --no-edit
git push --force-with-leaseMultiple commits (interactive rebase):
git rebase --signoff HEAD~N # N = number of commits to fix
git push --force-with-leaseAll pull requests are checked by the DCO GitHub Action. The check must pass before a PR can be merged. Bot accounts (github-actions[bot], dependabot[bot]) are automatically exempt.
- Fork the repository and clone your fork.
- Create a feature branch from
main(or the relevant milestone branch). - Make your changes, following the pipeline conventions.
- Sign off all commits with
git commit -s. - Open a pull request — the PR template will remind you.
- Follow existing conventions in the file you are editing.
- Command prompts (
commands/*.md) use the established pattern documented in WORKFLOW.md. - No emojis in code or documentation unless they already exist in the file.
All source files must include SPDX license headers. Use the following patterns:
JavaScript / Node.js (.mjs, .js):
Place immediately after the shebang line (if present), otherwise at the top of the file:
// SPDX-FileCopyrightText: Copyright (c) RapierCraft Studios
// SPDX-License-Identifier: AGPL-3.0-or-laterMarkdown (.md) — files with YAML frontmatter:
Place immediately after the closing --- of the frontmatter block:
---
description: ...
---
<!-- SPDX-FileCopyrightText: Copyright (c) RapierCraft Studios -->
<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->Markdown (.md) — files without frontmatter:
Place at the very top of the file:
<!-- SPDX-FileCopyrightText: Copyright (c) RapierCraft Studios -->
<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->Files that cannot contain comments (.json, binary):
Create a sibling .license file with the same name plus .license extension (REUSE spec §5.2):
bin/github-app-manifest.json.license:
SPDX-FileCopyrightText: Copyright (c) RapierCraft Studios
SPDX-License-Identifier: AGPL-3.0-or-later
The AGPL-3.0-or-later identifier covers the open-source license. A separate commercial license is available for proprietary use — see COMMERCIAL-LICENSE.md for details.
Open an issue or start a discussion on GitHub.