PharosVPN
§09 · community

AGPL-3.0-or-later · DCO · no CLA

Community.

PharosVPN is open source on purpose. The licence asks commercial users to contribute back, not to pay. The contribution model is chosen to keep the code yours, not ours.

where the code lives

One GitHub org, four repos.

File bugs and feature requests in the relevant repo. Cross-cutting questions about the architecture belong on PharosVPN/docs.

licence · AGPL-3.0-or-later

Why AGPL.

Every PharosVPN repo is licenced under AGPL-3.0-or-later. We chose the AGPL because the thing we want from commercial users is contribution, not payment. The AGPL's network copyleft clause forces anyone running a modified version as a service to publish their modifications — forced contribution, not forced payment.

That is the business model. There is no commercial edition, no paid tier, no CLA-backed plan to relicense.

What that means in practice

  • You can run PharosVPN for any purpose — personal or commercial — at no cost beyond your cloud bill.
  • You can modify it freely, including for use behind your own service.
  • If you run a modified version as a network-accessible service, AGPL §13 asks you to make your modifications available to your users.
  • Linking your proprietary code against PharosVPN libraries is governed by the AGPL's standard terms — read them carefully if that's your situation.

read AGPL-3.0 ↗

contributions · DCO, no CLA

DCO, not CLA.

Contributions are accepted under the Developer Certificate of Origin — sign off each commit with git commit -s. That appends a Signed-off-by: Your Name <[email protected]> trailer, which is your statement that you wrote the patch or otherwise have the right to contribute it under the project's licence.

We don't ask contributors to sign a Contributor License Agreement. A CLA gives the project's maintainers the right to relicense contributors' code later. Since we have no plan to relicence away from the AGPL, asking you to sign one would just be a speed bump.

how to contribute

A pull request, signed off, against the right repo.

  • Cross-cutting design changes go to docs/DESIGN.md first. If code and the document disagree, the document is wrong — fix it in the same PR.
  • Component-local changes go to the component's repo. Each repo carries a CONTRIBUTING.md and a BUILD.md.
  • Protobuf contracts live in docs/proto/. No subproject hand-rolls message types.
  • Status: pre-alpha. The design is locked; the code is scaffolding. The most useful contributions right now are stress-testing the architecture by trying to build against it.