Thank you for your interest in contributing to Mitsi, an open-source WebRTC video conferencing platform! We aim to make contributing easy and welcoming for everyone, from first-time contributors to seasoned developers. This guide explains how to contribute to any Mitsi repository (mitsi-client, mitsi-signaling, mitsi-media, etc.).
- Explore Repositories:
- Mitsi is split into separate repositories under softhon. Start with:
- mitsi-web: Mitsi web client - react base web application for mitsi.
- mitsi-mobile: Mitsi mobile app - react native application for mitsi.
- mitsi-signaling: Mitsi Signaling Service for manage peer connections and room coordination.
- mitsi-media: Mitsi media service powered by mediasoup for media routing.
- See README.md for the full list.
- Each repo has its own
README.mdanddocs/folder with setup instructions.
-
Find Issues:
- Browse issues in each repository’s GitHub Issues tab.
- Look for
good-first-issuelabels for beginner-friendly tasks. - Use mitsi-docs issues for cross-repo or documentation tasks.
-
Join the Community:
- Participate in GitHub Discussions for ideas and questions.
- Join our Discord (coming soon) for real-time collaboration.
-
Fork the Repository:
- Fork the relevant repo (e.g.,
mitsi-signaling) to your GitHub account. - Clone your fork:
git clone https://github.com/your-username/mitsi-<repo>.git cd mitsi-<repo>
- Fork the relevant repo (e.g.,
-
Set Up the Environment:
- Install Node.js >= 18 and npm >= 9.
- Install dependencies:
npm install
- Enable Git hooks (for ESLint and Prettier):
npx husky install
- See the repo’s
docs/setup.mdfor specific instructions.
-
Create a Branch:
- Create a feature or bugfix branch:
git checkout -b feature/your-feature-name
- Use descriptive branch names (e.g.,
fix/signaling-ice-candidate,docs/add-api-reference).
- Create a feature or bugfix branch:
-
Make Changes:
- Follow the coding standards:
- Use TypeScript for all
.tsand.tsxfiles. - Adhere to ESLint rules (
.eslintrc.js) and Prettier formatting (.prettierrc). - Pre-commit hooks (via Husky and lint-staged) automatically run
eslint --fixandprettier --writeon staged files.
- Use TypeScript for all
- Write tests for new features or bug fixes (using Jest in
tests/). - Update documentation in the repo’s
docs/folder if needed.
- Follow the coding standards:
-
Commit Changes:
- Use clear commit messages:
git commit -m "Add WebSocket handler for room joining in mitsi-signaling" - Pre-commit hooks will enforce linting and formatting. If the commit fails, fix errors and retry.
- Use clear commit messages:
-
Push and Create a Pull Request:
- Push your branch:
git push origin feature/your-feature-name
- Open a pull request (PR) on the original repo (e.g.,
softhon/mitsi-signaling). - Include a description of your changes and link to any related issues (e.g.,
Fixes #123).
- Push your branch:
-
Code Review:
- Respond to feedback in your PR.
- Ensure tests pass in the GitHub Actions CI/CD pipeline.
- A maintainer will merge your PR once approved.
- Language: Use TypeScript for all code in
src/(.tsor.tsxfiles). - Linting: ESLint with
@typescript-eslintrules enforces code quality. Runnpm run lintto check. - Formatting: Prettier ensures consistent style. Run
npm run formatto apply. - Testing: Write unit tests with Jest in
tests/. Runnpm testto verify. - Documentation: Update
docs/files for new features or changes. Use Markdown for clarity.
Each repo may have additional requirements in its docs/contributing.md. For example:
- mitsi-signaling: Focus on WebSocket event handlers (e.g.,
join-room,ice-candidate). - mitsi-client: Follow React best practices and test WebRTC integration.
- mitsi-media: Ensure compatibility with mediasoup’s native dependencies.
- Start Small: Try
good-first-issuetasks to get familiar with the codebase. - Ask Questions: Use GitHub Discussions or Discord for help.
- Test Locally: Run
npm run dev(uses nodemon) to test changes locally. - Avoid
--no-verify: Don’t bypass pre-commit hooks unless absolutely necessary, as they ensure code quality.
All Mitsi repositories are licensed under the MIT License. By contributing, you agree to license your contributions under MIT.
Your contributions help make Mitsi a better platform for everyone. We appreciate your time and effort!