The repository's own .github, now that it is public
SPEC 2.2a says INBUXA writes its own when the repository is first published, and it is. Until now the public repository carried Stalwart's: a security policy telling people to report vulnerabilities to Stalwart Labs, and a contributing guide whose policy is that pull requests from anyone not on upstream's vouched list are closed automatically. Neither is this project's, and both were being offered to anyone who looked. So: a security policy that says where to send a report, and what happens if it turns out to be upstream's bug rather than ours; a contributing guide that says what a fork of someone else's code needs from a contributor, including the clean-room question, since the record has to stay true; the Contributor Covenant; and a sponsor link. Upstream's two security documents move to .github-upstream/ beside its workflows -- kept, not used, not presented as ours. CI builds the server and compiles every test target, and deliberately runs no suite. The unit tests only build with the integration crate in the graph, and the integration suites want a STORE, fixed ports and a container apiece, so running them here would mean a tick that skipped everything or a cross that means "the runner has no Redis". The workflow says as much, so nobody has to rediscover it. Also ignores /artifact: two hand-built binaries, ~190 MB, one `git add -A` away from a public repository.
This commit is contained in:
+47
-43
@@ -1,61 +1,65 @@
|
||||
# Contributing
|
||||
|
||||
Thank you for your interest in contributing to Stalwart. We appreciate the support and enthusiasm of the open-source community. To keep the project maintainable and the review process sustainable, contributions are subject to the policies described below. Please read them in full before opening a pull request.
|
||||
Patches, bug reports and questions are welcome.
|
||||
|
||||
## Vouched Contributors Only
|
||||
## Before a pull request
|
||||
|
||||
Due to the high volume of low-quality, AI-generated submissions, pull requests are limited to a list of vouched contributors. Pull requests opened by anyone who is not on this list are closed automatically.
|
||||
**Open an issue first for anything substantial.** A feature or a refactor is
|
||||
worth agreeing on before it is written, because this is a fork that tracks
|
||||
upstream: a change that moves code around costs a conflict on every import,
|
||||
and it should be worth that.
|
||||
|
||||
To be added as a vouched contributor, post a message at [support.stalw.art](https://support.stalw.art) explaining the code changes you would like to submit, and include a link to the proposed change (a branch, diff, or draft). Once a maintainer has reviewed your request and vouched for you, you will be able to open pull requests directly.
|
||||
Small fixes — a bug, a typo, a test — need no ceremony. Send them.
|
||||
|
||||
This policy lets us focus limited review capacity on contributions from people who have taken the time to understand the codebase and discuss their changes first.
|
||||
## What this repository is
|
||||
|
||||
## What Contributions Are Accepted
|
||||
INBUXA is a fork of Stalwart, taken under the AGPL-3.0-only half of its dual
|
||||
licence, with nine features rebuilt independently. Two things follow:
|
||||
|
||||
At this stage of the project we accept a narrow set of contributions:
|
||||
- **The clean room is real.** The rebuilt features in `crates/features` were
|
||||
written from specifications in `docs/spec/features/`, by people who had not
|
||||
read Stalwart's Enterprise source. If you have read it, say so in the pull
|
||||
request and it will be reviewed with that in mind, or declined for the parts
|
||||
it touches. Nothing about this is personal: the project's defence of
|
||||
independent creation is a record, and the record has to be true.
|
||||
- **Upstream files stay recognisable.** Changes to files that came from
|
||||
upstream are kept small and marked with an `inbuxa:` comment saying which
|
||||
requirement they serve, so the next import merges cleanly and a reader can
|
||||
tell fork from base. New work belongs in the fork's own crates where it can.
|
||||
|
||||
- **Bug fixes.** Corrections to existing, incorrect behavior are welcome. Please include steps to reproduce the bug and describe the fix.
|
||||
- **Translations.** Additions and corrections to existing translations are welcome.
|
||||
## Licence and provenance
|
||||
|
||||
New features are generally **not** accepted, unless they involve only a few lines of code. Larger features fall outside the scope of what we can review and integrate while the architecture is still evolving.
|
||||
Contributions are under AGPL-3.0-only. Keep upstream's copyright headers where
|
||||
they are; if you change a file that came from upstream, leave its "Modified by
|
||||
Coffey Labs" line in place. New files carry:
|
||||
|
||||
If you would like to see a new feature, please request it at [support.stalw.art](https://support.stalw.art) under the **Feature Ideas** category rather than opening a pull request. This lets the community discuss and prioritize ideas before any code is written.
|
||||
```
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Coffey Labs
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
```
|
||||
|
||||
## No AI-Generated Code
|
||||
If you bring in code from another project, it stays under its own licence and
|
||||
its notice goes in `THIRD-PARTY.md`. `tools/fork/strip.py` reports any file
|
||||
that is missing from there on every import.
|
||||
|
||||
AI-generated code is not accepted in this project.
|
||||
## Running the tests
|
||||
|
||||
Even the most advanced models write inefficient Rust code. Beyond raw performance, AI creates technical debt by generating large amounts of code that not even the authors who submitted it can fully understand or maintain. Reviewing and untangling such contributions costs the maintainers far more time than it saves.
|
||||
`cargo test -p tests` runs what needs nothing but a store on disk. The rest
|
||||
need containers, a particular backend, or a copy of real data, and are
|
||||
`#[ignore]`d:
|
||||
|
||||
Using AI as a fancy autocomplete is perfectly fine. What matters is that every line generated by a model is read, understood, and reviewed by a human before it is submitted. You are responsible for every line in your pull request, regardless of how it was produced. If you cannot explain why a change is written the way it is, it is not ready to be submitted.
|
||||
- `docs/spec/container-tests.md` — the suites that need containers, with the
|
||||
`STORE` each one wants and what a plain regression leaves failing.
|
||||
- `docs/spec/compat-tests.md` — the compatibility set, which needs a copy of a
|
||||
real server's data.
|
||||
|
||||
## Pull Request Process
|
||||
Run one suite at a time. They bind fixed ports, and the timing checks flake if
|
||||
two run at once.
|
||||
|
||||
Once you are a vouched contributor:
|
||||
## Commit messages
|
||||
|
||||
1. Keep each pull request small and focused on a single logical change.
|
||||
2. Match the style and conventions of the surrounding code.
|
||||
3. Make sure the project builds and the test suite passes before opening the pull request.
|
||||
4. In the pull request description, explain what the change does and why, and link to the [support.stalw.art](https://support.stalw.art) discussion where the change was vouched.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
|
||||
|
||||
You can read the full Code of Conduct [here](https://github.com/stalwartlabs/.github/blob/main/CODE_OF_CONDUCT.md).
|
||||
|
||||
## Licensing
|
||||
|
||||
This project is licensed under the Affero General Public License (AGPL) version 3.0. By contributing to this project, you agree that your contributions will be licensed under the AGPL-3.0 license.
|
||||
|
||||
## Fiduciary Contributor License Agreement
|
||||
|
||||
Before making any contributions, all contributors are required to sign the Fiduciary Contributor License Agreement (FLA). The FLA is a legal agreement that assigns the copyright of contributions to a designated fiduciary, who manages these rights on behalf of the project. This arrangement ensures that the software remains free and open, even as contributors come and go.
|
||||
|
||||
Key points of the FLA:
|
||||
|
||||
- Ensures the software remains free and open source
|
||||
- Protects the project from potential copyright issues
|
||||
- Includes a reversion clause: if the fiduciary violates Free Software principles, rights revert to the original contributors
|
||||
|
||||
For more details about the FLA, please refer to the [FLA FAQ](https://fsfe.org/activities/fla/fla.en.html).
|
||||
Say what changed and why, in prose, wrapped at 72 characters or so. The why is
|
||||
the part that is hard to recover later. No tool trailers.
|
||||
|
||||
Reference in New Issue
Block a user