Thank you for your interest in contributing to the Zoom RTMS SDK! This document provides guidelines and instructions for contributing to this project.
- Code of Conduct
- Development Setup
- Build and Test
- Pull Request Process
- Coding Standards
- Documentation
- Issue Reporting
- License
This project adheres to the Zoom Open Source Code of Conduct. By participating, you are expected to uphold this code.
- Node.js: v22.14.1+ (latest LTS release)
- Python: v3.8 or later
- CMake: v3.25 or later
- C/C++ Build Tools:
- Linux: GCC 9+ and make
- macOS: Xcode Command Line Tools
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/rtms.git cd rtms - Set up the upstream remote:
git remote add upstream https://github.com/zoom/rtms.git
- Install dependencies:
npm install
- Copy the environment template:
Then edit the
cp .env.example .env
.envfile with your Zoom developer credentials.
The project provides several npm scripts for common development tasks:
# Building modules
npm run build # Build all modules
npm run build:js # Build only Node.js module
npm run build:py # Build only Python module
# Testing
npm run test # Run all tests
npm run test:js # Run Node.js tests
npm run test:py # Run Python tests
# Build modes
npm run debug # Switch to debug mode
npm run release # Switch to release mode (default)Before submitting a PR, ensure that:
- All tests pass
- Your code builds without warnings
- Your code is properly documented
-
Create a branch for your feature or bugfix:
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bugfix-name -
Make your changes and commit them using meaningful commit messages:
git commit -m "feat: Add support for new feature"Follow Conventional Commits for commit messages.
-
Push your branch to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request against the main branch of the upstream repository.
-
PR Requirements:
- Include a clear description of the changes
- Update documentation as needed
- Add or update tests as appropriate
- Ensure CI passes (build, tests, linting)
- Obtain at least one approval from a maintainer
-
JavaScript/TypeScript:
- Follow the project's ESLint configuration
- Use TypeScript for new code when possible
- Maintain consistent error handling patterns
-
Python:
- Follow PEP 8 style guide
- Support Python 3.8+
- Use type annotations where appropriate
-
C++:
- Follow the project's existing C++ style
- Ensure memory safety and proper resource management
- Maintain ABI compatibility
- Update the README.md when adding significant features
- Add JSDoc/docstring comments to all public APIs
- For complex features, consider adding examples to the docs folder
- Use the bug report template for bugs
- Use the feature request template for new features
- Provide as much detail as possible
By contributing to this project, you agree that your contributions will be licensed under the project's MIT License.