CommunityContributing
Contributing

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

Examples:
  • Clarify ambiguous language
  • Add new credential types
  • Fix spec inconsistencies

Documentation

Improve guides, tutorials, and reference documentation

Examples:
  • Fix typos and errors
  • Add code examples
  • Translate to other languages

Reference Implementations

Contribute to the official SDKs and tools

Examples:
  • Bug fixes
  • New features
  • Performance improvements

Test Vectors

Add test cases to ensure interoperability across implementations

Examples:
  • Credential test vectors
  • Presentation test vectors
  • Edge case coverage

Development Setup

1. Clone the Repository

bash
git clone https://github.com/pawansahai/rscp-sdk.git
cd rscp-sdk

2. Install Dependencies

bash
npm install
# or
pnpm install
# or
bun install

3. Run the Development Server

bash
npm run dev
# Opens http://localhost:3000

4. Run Tests

bash
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 checking

Pull Request Process

1

Fork and Branch

Fork the repository and create a feature branch from main.

bash
git checkout -b feature/your-feature-name
2

Make Your Changes

Write code, add tests, and update documentation as needed. Follow the code style guidelines below.

3

Write Good Commits

Use conventional commit messages:

bash
# 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 dependencies
4

Run Checks

Ensure all tests pass and code style is correct:

bash
npm run lint && npm run typecheck && npm run test
5

Open Pull Request

Push your branch and open a PR against main. Fill out the PR template and link any related issues.

6

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 interface over type for object shapes
  • Export types alongside functions
  • Use async/await over 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

markdown
# 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.

Apache 2.0 allows:
  • • Commercial use
  • • Modification
  • • Distribution
  • • Patent use
Apache 2.0 requires:
  • • License and copyright notice
  • • State changes
View full license text

Need Help Getting Started?

Join our community discussions to ask questions, get feedback on ideas, or find issues to work on.