Thank you for your interest in contributing! This project tracks open source contributions across a GitHub organization and we welcome help of all kinds: bug fixes, features, documentation, and testing.
This project embraces AI-assisted development — we built parts of it with AI tools and encourage contributors to use them responsibly.
- Bug reports — Open an issue describing the problem, steps to reproduce, and expected behavior.
- Feature requests — Open an issue to discuss before implementing.
- Code — Fix bugs or implement features. See the workflow below.
- Documentation — Improve the README, AGENTS.md, GEMINI.md, or inline comments.
- Testing — Try deploying it, report what breaks, suggest improvements.
For substantial new features, please open an issue first to discuss the approach. This prevents wasted effort.
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/<your-username>/Opensource-Contribution-Leaderboard.git cd Opensource-Contribution-Leaderboard
- Add the upstream remote:
git remote add upstream https://github.com/RocketChat/Opensource-Contribution-Leaderboard.git
# Install all dependencies (root + server + admin)
npm run add
# Terminal 1 — frontend with hot reload
NODE_OPTIONS=--openssl-legacy-provider npm start
# Terminal 2 — backend server
npm run serveFrontend at http://localhost:8080.
For production build:
NODE_OPTIONS=--openssl-legacy-provider npm run build
cd dist/server
node app.jsSee README.md for full config setup.
Always branch off main and target main in your PR:
git checkout main
git pull upstream main
git checkout -b your-feature-branchUse descriptive branch names: fix/dark-mode-flash, feat/new-api-endpoint, docs/update-readme.
- Write clear, concise commit messages in English.
- Use the imperative mood: "Add dark mode" not "Added dark mode".
- Reference related issues when relevant:
Fix table rendering (#42). - Keep commits focused — one logical change per commit.
Rebase your branch onto upstream main before opening a PR:
git fetch upstream
git rebase upstream/main- Hidden rank column — The rank column and some stats are intentionally invisible. Admins can select-all and copy the table for one-stroke data capture. Do not "fix" this visibility.
- Keep it simple — Avoid over-engineering. no unnecessary abstractions.
We fully embrace AI-assisted development (Copilot, Cursor, Windsurf, Gemini, ChatGPT, Claude, etc.). The project includes context files specifically for AI agents:
When opening a PR with AI-assisted code, please note the level of AI involvement:
| Level | Meaning |
|---|---|
| Fully AI-generated | AI wrote the code; you reviewed and validated it |
| Mostly AI-generated | AI produced the draft; you made significant modifications |
| AI-assisted | You led the work; AI provided suggestions or completions |
| Human-written | No AI involvement |
There is no stigma attached to any level — what matters is the quality of the contribution.
Using AI to generate code does not reduce your responsibility as the contributor. Before opening a PR with AI-generated code:
- Read and understand every line of the generated code.
- Test it locally — run
npm start+npm run serveand verify your changes work. - Check for security issues — AI models can generate subtly insecure code. Review carefully.
- Verify correctness — AI-generated logic can be plausible-sounding but wrong. Validate behavior, not just syntax.
- Respect the design decisions above — AI agents love to "improve" things that are intentional.
PRs where it is clear the contributor has not read or tested the AI-generated code will be closed without review.
AI-generated contributions are held to the same quality bar as human-written code:
- It must work. Test it locally before submitting.
- It must be consistent with the existing codebase style.
- It must not introduce unnecessary abstractions, dead code, or over-engineering.
- It must respect the project's design decisions (hidden rank column, no database, no containers).
- Before opening a PR: Test your changes locally (
npm start+npm run serve). - Keep PRs focused — one logical change per PR. Don't bundle unrelated changes.
- Prefer small PRs — 200 lines across 5 files is much easier to review than 2000 lines across 30 files.
- Fill in the PR description — explain what the change does and why.
- Note AI involvement — use the disclosure levels above.
- Link related issues if applicable.
- Respond to review comments within a reasonable time.
- When you update a PR in response to feedback, note what changed.
- If you disagree with feedback, engage respectfully and explain your reasoning.
Review for:
- Correctness — Does the code do what it claims?
- Security — Especially for AI-generated code.
- Simplicity — Is there a simpler solution? Does this add unnecessary complexity?
- Consistency — Does it match the existing codebase style?
- Design decisions — Does it respect the hidden rank column, no-database, and no-container rules?
- GitHub Issues — Bug reports, feature requests, design discussions.
- Pull Request comments — Code-specific feedback.
- Rocket.Chat open server — General discussion.
When in doubt, open an issue before writing code.
By contributing, you agree that your contributions will be licensed under the project's MIT License.