Skip to content

Commit 41d2be2

Browse files
chore: relicense to AGPL-3.0 with dual-licensing and contributor CLA (#24)
Relicense devcoach from Apache-2.0 to AGPL-3.0-only (strong copyleft, dual-licensed with a separate commercial option). Update the license across LICENSE, package.json, the mcpb and plugin manifests, the Homebrew formula generator, the README (badge + License section + Licensing FAQ), and the docs site (new License page + footer copyright). Add GitHub-native contribution infrastructure: a contributor CLA enforced by the CLA Assistant workflow, plus a Code of Conduct, a Security policy, issue and pull-request templates, and CODEOWNERS. Versions published before this change remain under Apache-2.0.
1 parent efe6d90 commit 41d2be2

22 files changed

Lines changed: 1186 additions & 213 deletions

.github/CODEOWNERS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Every change requires review from the maintainer.
2+
# This auto-requests @UltimaPhoenix as a reviewer on all pull requests.
3+
* @UltimaPhoenix

.github/FUNDING.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Funding / sponsorship links shown on the repo's "Sponsor" button.
2+
# Uncomment and fill in once the corresponding account is set up.
3+
# github: [UltimaPhoenix]
4+
# custom: ["https://github.com/UltimaPhoenix/dev-coach#license"]
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: 🐞 Bug report
2+
description: Something in devcoach isn't working as expected.
3+
title: "[Bug]: "
4+
labels: ["bug"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: Thanks for taking the time to report a bug. Please fill in the details below.
9+
- type: textarea
10+
id: what-happened
11+
attributes:
12+
label: What happened?
13+
description: A clear description of the bug, and what you expected instead.
14+
placeholder: When I run `devcoach …`, I expected … but got …
15+
validations:
16+
required: true
17+
- type: textarea
18+
id: repro
19+
attributes:
20+
label: Steps to reproduce
21+
description: Minimal steps so we can reproduce it.
22+
placeholder: |
23+
1. Run `npx -y devcoach …`
24+
2. …
25+
3. See error
26+
validations:
27+
required: true
28+
- type: input
29+
id: version
30+
attributes:
31+
label: devcoach version
32+
description: Output of `npx devcoach --version`.
33+
placeholder: 0.5.0
34+
validations:
35+
required: true
36+
- type: dropdown
37+
id: surface
38+
attributes:
39+
label: Where did it happen?
40+
options:
41+
- MCP server (Claude Code / Desktop / other agent)
42+
- CLI
43+
- Web dashboard (UI)
44+
- Claude Desktop extension (.mcpb)
45+
- Other / not sure
46+
validations:
47+
required: true
48+
- type: input
49+
id: environment
50+
attributes:
51+
label: Environment
52+
description: OS and Node version (`node --version`).
53+
placeholder: macOS 15 · Node 24.3.0
54+
validations:
55+
required: true
56+
- type: textarea
57+
id: logs
58+
attributes:
59+
label: Logs / screenshots
60+
description: Any relevant error output. This will be rendered as code, so no backticks needed.
61+
render: shell
62+
validations:
63+
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: 📚 Documentation
4+
url: https://ultimaphoenix.github.io/dev-coach/
5+
about: Check the docs first — installation, usage, and reference guides.
6+
- name: 💬 Questions & ideas
7+
url: https://github.com/UltimaPhoenix/dev-coach/discussions
8+
about: Ask a question or float an idea in Discussions instead of opening an issue.
9+
- name: 🔒 Report a security vulnerability
10+
url: https://github.com/UltimaPhoenix/dev-coach/security/advisories/new
11+
about: Please report vulnerabilities privately, not as a public issue.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: 💡 Feature request
2+
description: Suggest an idea or improvement for devcoach.
3+
title: "[Feature]: "
4+
labels: ["enhancement"]
5+
body:
6+
- type: textarea
7+
id: problem
8+
attributes:
9+
label: What problem does this solve?
10+
description: Describe the need or pain point. "I'm always frustrated when …"
11+
validations:
12+
required: true
13+
- type: textarea
14+
id: proposal
15+
attributes:
16+
label: Proposed solution
17+
description: What would you like devcoach to do?
18+
validations:
19+
required: true
20+
- type: textarea
21+
id: alternatives
22+
attributes:
23+
label: Alternatives considered
24+
description: Any other approaches or workarounds you've thought about.
25+
validations:
26+
required: false
27+
- type: checkboxes
28+
id: scope
29+
attributes:
30+
label: Confirmation
31+
options:
32+
- label: This fits devcoach's scope (a local, progressive technical coach), and I searched existing issues first.
33+
required: true

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<!-- Thanks for contributing to devcoach! Please fill this in so the change is easy to review. -->
2+
3+
## What & why
4+
5+
<!-- What does this PR change, and why? Link any related issue (e.g. "Closes #123"). -->
6+
7+
## Changes
8+
9+
<!-- Briefly list the notable changes. State clearly anything you modified in existing behaviour. -->
10+
11+
-
12+
13+
## Checklist
14+
15+
- [ ] `npm run lint` passes (Biome)
16+
- [ ] `npm run typecheck` passes
17+
- [ ] `npm run test:cov` passes (coverage stays ≥ 80% lines)
18+
- [ ] I kept the PR focused (one logical change)
19+
- [ ] I updated docs / `CHANGELOG.md` where relevant
20+
- [ ] I have read and will sign the [Contributor License Agreement](../CLA.md) — the CLA Assistant
21+
bot will prompt me on this PR. I understand my contribution may be licensed under **both**
22+
AGPL-3.0 and a commercial license.
23+
24+
> By submitting this pull request, I confirm that my contribution is made under the terms of the
25+
> project's license and the CLA.

.github/workflows/cla.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: CLA Assistant
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
pull_request_target:
7+
types: [opened, synchronize]
8+
9+
permissions:
10+
actions: write
11+
contents: write
12+
pull-requests: write
13+
statuses: write
14+
15+
jobs:
16+
cla:
17+
name: CLA Assistant
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: CLA Assistant
21+
if: >-
22+
(github.event.comment.body == 'recheck' ||
23+
github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') ||
24+
github.event_name == 'pull_request_target'
25+
uses: contributor-assistant/github-action@v2.6.1
26+
env:
27+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28+
with:
29+
path-to-signatures: signatures/version1/cla.json
30+
path-to-document: https://github.com/UltimaPhoenix/dev-coach/blob/main/CLA.md
31+
branch: cla-signatures
32+
allowlist: UltimaPhoenix,dependabot[bot],github-actions[bot]
33+
custom-pr-sign-comment: I have read the CLA Document and I hereby sign the CLA
34+
custom-notsigned-prcomment: >-
35+
Thank you for your contribution! Before we can merge it, please read our
36+
[Contributor License Agreement](https://github.com/UltimaPhoenix/dev-coach/blob/main/CLA.md)
37+
and sign it by posting the following comment on this pull request:
38+
custom-allsigned-prcomment: ✅ All contributors have signed the CLA.

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@ Notable changes to devcoach. Versions follow [Semantic Versioning](https://semve
44

55
---
66

7+
## [Unreleased]
8+
9+
### Changed
10+
- **License**: relicensed from **Apache-2.0** to **AGPL-3.0-only** (`LICENSE`). devcoach stays free and
11+
open source; a separate commercial license is available for proprietary/closed use. Versions
12+
published before this change remain under Apache-2.0.
13+
14+
### Added
15+
- **Contributor License Agreement** (`CLA.md`) enforced by a CLA Assistant workflow, enabling the
16+
AGPL + commercial dual-licensing model
17+
- **Community health files**: `CODE_OF_CONDUCT.md`, `SECURITY.md`, issue & pull-request templates,
18+
`CODEOWNERS`, and a **License & commercial use** docs page
19+
20+
---
21+
722
## [0.3.66] — unreleased
823

924
### Changed

CLA.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# devcoach Individual Contributor License Agreement (CLA)
2+
3+
Thank you for your interest in contributing to **devcoach** ("the Project"), maintained by
4+
**UltimaPhoenix** ("the Maintainer").
5+
6+
This Contributor License Agreement ("Agreement") sets out the terms under which You contribute. It
7+
protects You, the Maintainer, and the users of the Project, and it allows the Project to be offered
8+
under **both** the open-source AGPL-3.0 license **and** a separate commercial license. Please read it
9+
carefully before submitting a Contribution.
10+
11+
By submitting a Contribution to the Project (for example, by opening a pull request), You accept and
12+
agree to the following terms for Your present and future Contributions.
13+
14+
## 1. Definitions
15+
16+
- **"You" / "Your"** means the individual or legal entity that owns, or is legally entitled to grant
17+
the licenses for, the copyright in the Contribution and that submits it to the Project.
18+
- **"Contribution"** means any original work of authorship, including any modifications or additions
19+
to existing work, that You intentionally submit to the Project in any form (code, documentation,
20+
configuration, etc.).
21+
22+
## 2. Copyright license
23+
24+
You grant to the Maintainer and to recipients of software distributed by the Maintainer a perpetual,
25+
worldwide, non-exclusive, royalty-free, irrevocable copyright license to reproduce, prepare
26+
derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contribution
27+
and such derivative works.
28+
29+
**You expressly agree that the Maintainer may license Your Contribution under any terms, including the
30+
GNU Affero General Public License v3.0, any other open-source license, and proprietary/commercial
31+
license terms.** This dual-licensing right is essential to the Project's sustainability.
32+
33+
## 3. Patent license
34+
35+
You grant to the Maintainer and to recipients of software distributed by the Maintainer a perpetual,
36+
worldwide, non-exclusive, royalty-free, irrevocable (except as stated below) patent license to make,
37+
have made, use, offer to sell, sell, import, and otherwise transfer Your Contribution. This license
38+
applies only to those patent claims licensable by You that are necessarily infringed by Your
39+
Contribution alone or by the combination of Your Contribution with the Project. If any entity
40+
institutes patent litigation alleging that Your Contribution, or the Project to which You
41+
contributed, constitutes direct or contributory patent infringement, then any patent licenses granted
42+
under this Agreement for that Contribution shall terminate as of the date such litigation is filed.
43+
44+
## 4. Your representations
45+
46+
- The Contribution is Your original creation and You have the right to grant the licenses above.
47+
- If Your employer has rights to intellectual property You create, You represent that You have
48+
received permission to make the Contribution on behalf of that employer, or that Your employer has
49+
waived such rights for the Contribution.
50+
- To Your knowledge, the Contribution does not violate any third-party license, patent, copyright,
51+
trademark, or other right.
52+
- Each part of Your Contribution that is not Your original creation is identified as such, together
53+
with its source and any license or restriction You are aware of.
54+
55+
## 5. No obligation
56+
57+
You are not expected to provide support for Your Contribution, except to the extent You desire to do
58+
so. The Contribution is provided "as is", without warranty of any kind, express or implied.
59+
60+
---
61+
62+
By signing electronically via the CLA Assistant bot on your pull request — that is, by commenting the
63+
exact phrase **`I have read the CLA Document and I hereby sign the CLA`** — You agree to the terms of
64+
this Agreement for all of Your current and future Contributions to the Project.

0 commit comments

Comments
 (0)