Hi, I could find no written rules for contributors, so new contributors (me included) keep making the same mistakes in PRs. I collected what Juliusz wrote about this in reviews on the list and on GitHub since 2020, and put it into the draft below. Comments are welcome. A few things I could not find: 1. Is a short first line enough for a commit message, or do you want a body too? 2. Is there a style for Go, CSS and JS beyond the surrounding code? 3. What testing do you expect for UI changes? 4. Should this be a CONTRIBUTING.md file, or a section of the README? Thanks, -- Valent # Contributing to Galene Galene is distributed under the MIT licence, and all contributions are published under the same licence. No CLA is required. ## Where to send You may either send patches to the mailing list , or submit a pull request on GitHub. Please use one or the other, not both. General and technical discussion belongs on the mailing list, not on GitHub. Bug reports go to GitHub issues. Ideas are welcome, even if they are not accompanied with patches. ## What is likely to be accepted Galene is meant to be easy to install and to have minimal dependencies. Before writing a large feature, please ask on the list. - Respect user privacy. Contributions that expose private user data, such as IP addresses or user names, will not be accepted. - Don't harm performance, especially in the server. - Avoid heavy libraries, unless they are loaded lazily. Anything that requires an external daemon (e.g. an SQL server) is out of the question. - Explain what problem the change solves. Once a feature is included, it is difficult to remove, so only features that are actually needed are included. Please don't be discouraged if your first attempt is not accepted. ## Preparing a pull request - Use a dedicated branch for each pull request, based on current master. - Every commit should be a self-contained change. Unrelated changes go into a separate pull request. - Every commit must compile and must not break any functionality. - No merge commits. Rebase on master instead. - Squash your work-in-progress commits before submitting (use `git rebase -i`). When you fix something during review, squash the fix into the commit it belongs to. - Don't leave commented-out code. - Remove "WIP" from the title when the pull request is ready for review. ## Commit messages The first line is a short summary of what the commit does, starting with a verb and ending with a period: Handle overflow in the user list. If needed, add a blank line and a short paragraph that explains the problem and the solution. Don't describe the history of the pull request. A verbose commit message is not more useful than a short one. ## Code - Follow the style of the surrounding code. - Add tests for server code where it makes sense. - The JavaScript code is checked with the TypeScript compiler. Please check your changes with `tsc` before submitting. - Comments should explain why, not what. Don't paraphrase the code and don't repeat the documentation; such comments get out of sync when the code changes. - Prefer short, simple code. Code that is verbose or redundant is hard to review and hard to maintain. - In the client, avoid making the logic depend on details of the user interface. ## Review Please answer questions during review. Pull requests without a reply from the submitter are eventually closed.