Skip to content

Contributing

Contributions are welcome. The legal part comes first because it blocks merging.

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.

Terminal window
pnpm install
pnpm build
pnpm dev

Before opening a pull request:

Terminal window
pnpm typecheck
pnpm test

TypeScript runs strict, with noUncheckedIndexedAccess and exactOptionalPropertyTypes. Both are load bearing. Please do not loosen them to make a change fit.

  • 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, and helpers.ts has 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.

Do not open a public issue. Mail hello@rootstuff.io with details and a reproduction if you have one.