Contributing to RSCP
Thank you for your interest in contributing to the Road Safety Certification Protocol. Every contribution helps make road safety credentials better for everyone.
Ways to Contribute
Specification Improvements
Propose clarifications, corrections, or new features for the RSCP spec
- Clarify ambiguous language
- Add new credential types
- Fix spec inconsistencies
Documentation
Improve guides, tutorials, and reference documentation
- Fix typos and errors
- Add code examples
- Translate to other languages
Reference Implementations
Contribute to the official SDKs and tools
- Bug fixes
- New features
- Performance improvements
Test Vectors
Add test cases to ensure interoperability across implementations
- Credential test vectors
- Presentation test vectors
- Edge case coverage
Development Setup
1. Clone the Repository
git clone https://github.com/pawansahai/rscp-sdk.git
cd rscp-sdk2. Install Dependencies
npm install
# or
pnpm install
# or
bun install3. Run the Development Server
npm run dev
# Opens http://localhost:30004. Run Tests
npm run test # Run unit tests
npm run test:e2e # Run end-to-end tests
npm run lint # Check code style
npm run typecheck # TypeScript type checkingPull Request Process
Fork and Branch
Fork the repository and create a feature branch from main.
git checkout -b feature/your-feature-nameMake Your Changes
Write code, add tests, and update documentation as needed. Follow the code style guidelines below.
Write Good Commits
Use conventional commit messages:
# Format: <type>(<scope>): <description>
feat(issuer-sdk): add credential batch creation
fix(verifier): handle expired certificates gracefully
docs(spec): clarify revocation flow
test(wallet): add selective disclosure tests
chore(deps): update dependenciesRun Checks
Ensure all tests pass and code style is correct:
npm run lint && npm run typecheck && npm run testOpen Pull Request
Push your branch and open a PR against main. Fill out the PR template and link any related issues.
Code Review
A maintainer will review your PR. Please be responsive to feedback. PRs require at least one approval before merging.
Code Style Guidelines
TypeScript
- Use strict TypeScript configuration
- Prefer
interfaceovertypefor object shapes - Export types alongside functions
- Use
async/awaitover raw Promises
Formatting
- 2 spaces for indentation
- Single quotes for strings
- No semicolons (except when required)
- Trailing commas in multi-line
Testing
- Write tests for all new features
- Include edge cases and error paths
- Use descriptive test names
- Avoid testing implementation details
Documentation
- Document all public APIs with JSDoc
- Include usage examples
- Update README when adding features
- Keep CHANGELOG up to date
RFC Process for Spec Changes
Significant changes to the RSCP specification require a formal Request for Comments (RFC). This ensures proper community review and discussion before changes are accepted.
When to Write an RFC
- Adding new credential types or attributes
- Changing cryptographic algorithms
- Modifying the registry schema
- Breaking changes to any protocol component
RFC Template
# RFC-XXXX: Title of Proposal
## Summary
Brief description of the proposed change.
## Motivation
Why is this change needed? What problem does it solve?
## Design
Detailed description of the proposed design.
## Drawbacks
What are the potential downsides?
## Alternatives
What other approaches were considered?
## Unresolved Questions
What aspects need more discussion?Code of Conduct
We are committed to providing a welcoming and inclusive environment. All contributors are expected to:
- • Be respectful and constructive
- • Welcome newcomers
- • Focus on what's best for the community
- • Accept constructive criticism gracefully
Security Vulnerabilities
If you discover a security vulnerability, please report it privately:
- • Do NOT open a public GitHub issue
- • Email
security@rscp.org - • Include steps to reproduce
- • Allow 90 days for fix before disclosure
License Agreement
All contributions to RSCP are licensed under the Apache 2.0 License. By submitting a pull request, you agree that your contributions will be licensed under the same terms.
- • Commercial use
- • Modification
- • Distribution
- • Patent use
- • License and copyright notice
- • State changes