Project
Contributing
Contribute to the Phelix CLI: the licensing model, development setup, commit conventions, the DCO sign-off, and the Contributor License Agreement.
Thanks for your interest in improving Phelix. Contributions to the CLI are welcome - bug fixes, new features, docs, tests, and platform support all help. Please read this page before opening a pull request.
Licensing model - what this means for contributors
Phelix is source-available, not classic open source. The CLI is licensed under the Functional Source License (FSL-1.1-ALv2). You may use, study, modify, and redistribute the code for almost any purpose except a Competing Use, and each released version converts to Apache 2.0 two years after its release. See Licensing for the full picture.
- In scope: anything that makes the CLI better - features, fixes, performance, docs, tests, new platform/toolchain support. There is no limit on the kinds of CLI features you can add.
- Out of scope: work whose purpose is to wire the CLI up to a competing dashboard/backend or hosted service. That is a Competing Use, not a contribution. Repointing the CLI at your own self-hosted backend for your own use is fine; shipping that as a rival product is not.
- Your contribution is accepted into Phelix under the same FSL license.
Before you start
- Search existing issues and discussions first.
- For anything non-trivial, open an issue describing the problem and your proposed approach before writing code.
- Keep pull requests focused; one logical change per PR is much easier to review.
Development setup
Phelix is a single Go binary. You need Go 1.27+ (see go.mod). There is no Makefile and no CI config - go build, go test, and gofmt are the gates.
# buildgo build -o phelix./phelix version # testsgo test ./... # all testsgo test -short ./... # skips the one process-spawning test (internal/app) # formatting gate (must be clean) + vetgofmt -l cmd internal config main.gogo vet ./...Commit & PR conventions
- Conventional commits, with an optional leading emoji:
✨ feat(scope): …,🐛 fix(scope): …,📝 docs(scope): …. - Run
gofmtandgo vetbefore pushing; keepgofmt -loutput empty. - Add or update tests for behavior changes, following the existing seam-injection test style.
- Describe what changed and why in the PR body; link the issue.
Certify your work - Developer Certificate of Origin
Every commit must be signed off to certify you have the right to submit it under the project's license. This is the Developer Certificate of Origin 1.1. Add the sign-off automatically with git commit -s, which appends a Signed-off-by: Your Name <you@example.com> line. By signing off you certify:
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 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.Contributor License Agreement
Because Phelix is maintained under a source-available license that converts to Apache 2.0 over time, contributors grant Mohammad Abdorrahmani enough rights to keep the whole codebase under one clean, consistent license. You keep your copyright - this is a license to us, not an assignment. By submitting a Contribution you agree to the following.
- Copyright license. A perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to reproduce, prepare derivative works of, publicly display and perform, sublicense, and distribute your Contribution, and to relicense it as part of Phelix under the FSL, under Apache 2.0 (including the automatic future-license conversion), and under a separate commercial license.
- Patent license. A perpetual, worldwide, non-exclusive, royalty-free, irrevocable (except as stated) patent license covering claims necessarily infringed by your Contribution alone or combined with the project. Instituting patent litigation over the Contribution or project terminates the patent licenses you granted for it.
- Representations. Each Contribution is your original creation (or you have the rights to submit it), you are entitled to grant these licenses, and you have any needed employer permission. Flag any third-party material or license constraints.
- No obligation. The maintainer is not obligated to use, merge, or ship any Contribution. Contributions are provided "AS IS", without warranty of any kind.
How agreement is recorded
- Signing off your commits (
git commit -s) is required on every commit and certifies origin under the DCO. - Opening a pull request indicates you have read and agree to the CLA for the Contributions in that PR. For your first PR, comment: "I have read the CONTRIBUTING guide and I agree to the Phelix CLA."
- Contributing on behalf of a company? Have someone authorized to bind it confirm agreement in the PR, or contact the maintainers to arrange an entity CLA.