We're thrilled that you're interested in contributing to Rocket.Chat! Your help is invaluable to us, whether you're a seasoned open-source contributor or just starting out. If you're new to the open-source world, we recommend starting with GitHub's comprehensive guide to familiarize yourself with the basics. And if it's your first time contributing to Rocket.Chat, please go through our Code of Conduct and contribution process.
Getting started
Our projects are readily available for you to explore and contribute to. You can find them here. Once you've found a project that piques your interest, navigate to the Issues tab. If you come across an issue you'd like to work on, simply leave a comment. We'll mark you as the Assignee to the issue and add an In Progress label.
If you're already working on a pull request for a particular issue, you can link the issue to your pull request. Alternatively, you can write Closes #ISSUE_NUMBER
in your comment, where the ISSUE_NUMBER
is the number at the end of the issue's URL.
Assigned issues: You may notice that some issues already have an assignee. These are trusted individuals, often core team members, who are responsible for resolving the issue. However, this doesn't mean you can't contribute! All issues are open for contribution, and any help is greatly appreciated. We encourage you to work on any issue that interests you and share your progress with the community in the comments.
Remember, multiple people can work on the same issue, so don't be discouraged from tackling an issue you're passionate about.
If you're looking for a simple task to get started, check out our easy tasks or search for issues tagged with
contrib:easy
.
You can find a detailed guide on development environment setup here.
Languages
To maintain consistency and readability across the project, Rocket.Chat has established specific coding conventions and formatting rules.
Rocket.Chat primarily uses Visual Studio Code (VSCode) as its text editor of choice due to its wide usage and versatility. To ensure uniformity in code formatting, Rocket.Chat employs the Prettier plugin. As long as you use it, the code style will be automatically adhered to Rocket.Chat standards. Specific language configurations are in .editorconfig.
We provide a prettier config and eslint config in our repos, so as long as those plugins are installed on your editor, code style will be automatically followed
TypeScript: ESLint is responsible for formatting all JavaScript and TypeScript code. Rocket.Chat has transitioned to using only TypeScript (
.ts
) files in its codebase. Conventions for TypeScript, React, and Components are specified in the Fuselage conventions, ensuring that all contributors follow the same standards.Go: For code written in Go, the gofmt formatter should be used to ensure proper formatting.
Shell Script: For Shell-related code, the shfmt formatter should be used.
These formatters help maintain a consistent style across different languages used in the Rocket.Chat codebase.
Contributing to Rocket.Chat involves more than just writing code; it's about adhering to established conventions and maintaining a consistent style across the project. By using tools like VSCode, Prettier, ESLint, gofmt, and shfmt, developers can ensure their contributions align with the existing codebase. This consistency not only makes the code easier to read and understand but also facilitates collaboration among contributors from around the world.
Now that you're ready to contribute, it's time to understand our development process. Visit the development workflow guide to learn about issue prioritization, pull request approval, and more. This guide will help you navigate your journey as a contributor to Rocket.Chat. Happy coding!