Contributing
Contributions are welcome. The legal part comes first because it blocks merging.
The CLA
Section titled “The CLA”Slick requires a Contributor License Agreement. You keep the copyright in your work and grant the project the right to distribute it, including under commercial terms alongside the AGPL. That last clause is why the agreement exists: without consolidated rights the project could never offer a commercial license without tracking down every past contributor.
Open a pull request and a bot will link you to sign. It is once per person.
If you would rather not sign, open an issue describing the change instead.
Getting set up
Section titled “Getting set up”pnpm installpnpm buildpnpm devBefore opening a pull request:
pnpm typecheckpnpm testTypeScript runs strict, with noUncheckedIndexedAccess and
exactOptionalPropertyTypes. Both are load bearing. Please do not loosen them
to make a change fit.
What good looks like here
Section titled “What good looks like here”- Match the surrounding code. Naming, comment density, and idiom vary by file. Follow the file you are in.
- Comments explain why. The ones worth writing record a decision or a trap. Narration of the next line is not.
- Server changes need a test.
apps/server/test/runs against a real app with a temporary database, andhelpers.tshas the fixtures. - Sync protocol changes deserve extra care. The event log, hello and resume, and the gateway are where bugs are silent and data shaped.
- Run it. For anything with a user interface, open the app and look at the result before opening the pull request.
Reporting security issues
Section titled “Reporting security issues”Do not open a public issue. Mail hello@rootstuff.io with details and a
reproduction if you have one.