Thank you for your interest in contributing to OpenRisk! This document provides guidelines and instructions for contributing to our open-source risk management platform.
- Code of Conduct
- Asking Questions
- Providing Feedback
- Reporting Bugs
- Suggesting Features
- Contributing Code
- Pull Request Process
- Development Setup
- Testing
- Documentation
- Community
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to conduct@openrisk.io.
Before opening an issue for a question, please:
- Check the documentation at https://docs.openrisk.io
- Search existing issues to see if your question has been answered
- Review the FAQ section in the README
- Ask on the community forums at https://community.openrisk.io
For coding questions, consider asking on:
- Stack Overflow using the
openrisktag - Our GitHub Discussions
- Our Discord Community
Your comments and feedback are welcome. You can share feedback through:
- GitHub Issues - For specific bugs or feature requests
- GitHub Discussions - For general feedback and ideas
- Email - feedback@openrisk.io
- Community Chat - Join our Discord community
- Check the FAQ - Your issue might already be answered
- Check the documentation - The behavior might be expected
- Search existing issues - Your bug might already be reported
- Try disabling extensions/plugins - If applicable, to isolate the issue
- Collect diagnostics - Gather version info, logs, and environment details
File one bug per issue. Do not enumerate multiple bugs in a single issue.
Use a clear and descriptive title that identifies the problem.
Describe the exact steps to reproduce the problem:
- First step
- Second step
- Specific example to demonstrate the steps
Provide specific examples to demonstrate the steps. Include links to files or GitHub projects, or copy/paste snippets, which you use in those examples.
Describe the behavior you observed and point out what exactly is the problem with that behavior.
Explain which behavior you expected to see instead and why.
Include screenshots and animated GIFs if possible. You can use this tool to record GIFs on macOS and Windows, and this tool or this tool on Linux.
Include your environment:
- OpenRisk Version: [e.g. 1.0.0]
- OS and Version: [e.g. macOS 13.0, Ubuntu 22.04, Windows 11]
- Browser: [e.g. Chrome, Firefox, Safari]
- Node Version: [e.g. 18.0.0]
- Go Version: [e.g. 1.25.4]
- Docker/Kubernetes: [if using containerized deployment]
Include relevant logs:
- Application logs from
/var/log/openrisk/ - Database query logs
- API endpoint responses
- Browser console errors
## Summary
[Brief description of the bug]
## Steps to Reproduce
1. [First step]
2. [Second step]
3. [Expected result]
## Actual Behavior
[What actually happened]
## Expected Behavior
[What should have happened]
## Environment
- OpenRisk Version: [version]
- OS: [operating system]
- Browser: [if web UI issue]
## Logs
[Relevant logs, if available]
## Screenshots
[If applicable]- Check if the feature already exists - It might be available in a different way
- Check existing feature requests - Your feature might already be requested
- Consider if this is in scope - Features should align with OpenRisk's vision
Use a clear and descriptive title for the feature request.
Provide a step-by-step description of the suggested feature:
- Describe the current behavior
- Explain the desired behavior
- Describe alternatives you've considered
- Explain why this would be useful
Include mockups or wireframes if the feature involves UI/UX changes.
Provide context:
- What problem does this feature solve?
- Who would benefit from this feature?
- How does this align with OpenRisk's vision?
- What is the impact on existing functionality?
## Feature Summary
[Brief description]
## Problem Statement
[Problem this solves]
## Proposed Solution
[How to implement this]
## Alternatives Considered
[Other approaches]
## Use Cases
[Real-world usage]
## Benefits
[Why this matters]- Fork the repository - Click the "Fork" button on GitHub
- Clone your fork -
git clone https://github.com/YOUR_USERNAME/OpenRisk.git - Add upstream remote -
git remote add upstream https://github.com/opendefender/OpenRisk.git - Create a branch -
git checkout -b fix/issue-123orgit checkout -b feat/new-feature
For detailed setup instructions, see DEVELOPMENT_SETUP.md.
Quick Start:
# Backend
cd backend
go mod download
go run cmd/server/main.go
# Frontend
cd frontend
npm install
npm start
# Database
docker run -d \
--name openrisk-postgres \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 \
postgres:16
# Redis (for caching)
docker run -d \
--name openrisk-redis \
-p 6379:6379 \
redis:7- Go: Follow Effective Go
- TypeScript/React: Follow Google TypeScript Style Guide
- SQL: Follow SQL Style Guide
- Comments: Write clear, concise comments. Self-documenting code is preferred.
- Naming: Use descriptive names for variables, functions, and types.
- Use clear, descriptive titles (max 72 characters)
- Reference related issues using
#issue_number - Use conventional commits when possible:
feat:for new featuresfix:for bug fixesdocs:for documentationrefactor:for code refactoringtest:for testschore:for maintenance
Example:
feat: Add organization management system
- Implement multi-org support with RBAC
- Add subscription tier management
- Include team collaboration features
Fixes #123
- Check for existing pull requests - Search for related PRs
- Run tests locally - Ensure all tests pass
- Test your changes - Verify the fix/feature works
- Update documentation - Include any necessary docs updates
- Sync with upstream -
git pull upstream main
- Push to your fork -
git push origin your-branch-name - Create a pull request - Use the GitHub PR template
- Fill out the PR template - Provide all required information
- Link related issues - Use
Fixes #123orRelates to #456 - Request review - Tag relevant maintainers
[TYPE] Brief description
Types:
- [FEATURE] - New feature
- [BUG] - Bug fix
- [REFACTOR] - Code refactoring
- [DOCS] - Documentation
- [TEST] - Tests
- [PERF] - Performance improvement
## Description
[Brief summary of changes]
## Type of Change
- [ ] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change
- [ ] Documentation update
- [ ] Performance improvement
## Related Issue
Fixes #[issue_number]
## Changes Made
- [Change 1]
- [Change 2]
- [Change 3]
## Testing
- [ ] Added tests
- [ ] Updated tests
- [ ] All tests passing
## Checklist
- [ ] Code follows style guidelines
- [ ] Documentation updated
- [ ] No breaking changes
- [ ] PR title is descriptive
- [ ] Related issues linked
## Screenshots/Videos
[If applicable]- Automated checks - CI/CD pipeline must pass
- Code review - At least one maintainer review required
- Address feedback - Make requested changes
- Final approval - Maintainer approves and merges
- Your changes are tested in staging
- Changes are deployed to production after validation
- You're added to the contributors list
# Backend tests
cd backend
go test ./...
# Frontend tests
cd frontend
npm test
# E2E tests
npm run test:e2e
# Load testing
k6 run tests/performance/load_test.js- Unit tests - Test individual functions
- Integration tests - Test multiple components together
- E2E tests - Test complete user workflows
- Performance tests - Test at scale
Example:
func TestCreateRisk(t *testing.T) {
// Arrange
req := &CreateRiskRequest{
Name: "Test Risk",
}
// Act
result, err := service.CreateRisk(context.Background(), req)
// Assert
assert.NoError(t, err)
assert.NotNil(t, result)
assert.Equal(t, "Test Risk", result.Name)
}- Be clear and concise - Use simple language
- Include examples - Show how to use features
- Update TOC - Keep table of contents current
- Link related docs - Help users navigate
- User Docs -
/docsdirectory - API Docs - OpenAPI/Swagger specs
- Code Comments - Inline documentation
- README - Quick start and overview
- CHANGELOG - Document changes
- Make changes to
.mdfiles - Test links and formatting
- Run spell check
- Submit in same PR as code changes
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - Questions and ideas
- Discord - Join our community
- Email - community@openrisk.io
- Twitter - @OpenRiskIO
Current maintainers:
- @alex-dembele - Project Lead
- @team-openrisk - Core Team
- Review documentation
- Check FAQ
- Ask in discussions
- Join Discord
Contributors are recognized in:
- CONTRIBUTORS.md - All contributors listed
- GitHub - Automatic contributor tracking
- Releases - Contributors mentioned in release notes
- Discord - Special roles for active contributors
By contributing to OpenRisk, you agree that your contributions will be licensed under the license of the project.
- Security Issues - See SECURITY.md for reporting
- Code of Conduct - See CODE_OF_CONDUCT.md
- License - See LICENSE
Thank you for contributing to OpenRisk! Your efforts help make this project better for everyone.
Questions? Feel free to:
- Open a discussion at GitHub Discussions
- Email us at contributors@openrisk.io
- Join our Discord community
Last Updated: March 2, 2026
Version: 1.0