Skip to main content

Contribution Guidelines

The Orthogramic Metamodel is an open-source project that welcomes contributions from the community. This page explains how to contribute effectively.

Ways to Contribute

Contribution TypeDescriptionSkill Level
Report IssuesIdentify bugs, gaps, or improvementsBeginner
Improve DocumentationFix typos, clarify content, add examplesBeginner
Propose EnhancementsSuggest new features or domainsIntermediate
Submit Schema ChangesModify or extend JSON schemasIntermediate
Create ExamplesAdd real-world usage examplesIntermediate
Build IntegrationsDevelop platform integrationsAdvanced
Review Pull RequestsHelp review community contributionsAdvanced

Getting Started

1. Understand the Project

Before contributing, familiarize yourself with:

2. Set Up Your Environment

# Fork the repository on GitHub
# Clone your fork
git clone https://github.com/YOUR-USERNAME/orthogramic-metamodel.git
cd orthogramic-metamodel

# Add upstream remote
git remote add upstream https://github.com/orthogramic/metamodel.git

# Install dependencies
npm install

# Run validation
npm run validate-schemas

3. Find Something to Work On

  • Check GitHub Issues for open tasks
  • Look for issues labeled good first issue for beginner-friendly tasks
  • Review help wanted labels for community priority items

Contribution Workflow

For Documentation Changes

  1. Fork the repository
  2. Create a branch for your changes: git checkout -b docs/improve-capabilities-examples
  3. Make changes to documentation files
  4. Test locally by building the docs site
  5. Submit a Pull Request with clear description
  6. Address review feedback as needed
  7. Celebrate when merged!

For Schema Changes

Schema changes require additional rigor:

  1. Create an Issue first — Discuss proposed changes before implementing
  2. Follow schema conventions — See Schema Standards below
  3. Include tests — Add validation test cases
  4. Update documentation — Keep docs in sync with schema changes
  5. Provide migration guidance — If changes affect existing implementations

Schema Standards

Naming Conventions

ElementConventionExample
Schema files{domain}.schema.jsoncapabilities.schema.json
Property namescamelCasecapabilityLevel
Enum valueskebab-casein-progress
Definition namesPascalCaseCapabilityComponent

Required Schema Elements

Every domain schema must include:

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://orthogramic.com/schemas/domains/{domain}.schema.json",
"title": "{Domain Title}",
"description": "{Clear description of the domain}",
"type": "object",
"required": ["title", "description"],
"properties": {
"title": {
"type": "string",
"description": "The name of the {domain} entity"
},
"description": {
"type": "string",
"description": "Detailed description of the {domain} entity"
}
}
}

Property Guidelines

Property AspectGuideline
DescriptionsEvery property must have a description
TypesUse specific types (not just any)
RequiredMark truly required fields as required
DefaultsProvide sensible defaults where appropriate
EnumsUse enums for categorical values
ReferencesUse $ref for reusable definitions

Enum Conventions

{
"maturityLevel": {
"type": "string",
"description": "Current maturity level of the capability",
"enum": [
"initial",
"developing",
"defined",
"managed",
"optimizing"
],
"default": "initial"
}
}

Documentation Standards

MDX File Structure

---
sidebar_position: 1
title: Page Title
description: Clear, concise description for SEO
keywords: [relevant, keywords, for, search]
---

# Page Title

Brief introduction paragraph.

## Main Section

Content organized in logical sections.

### Subsection

More detailed content.

## Related Documentation

- [Related Page 1](./related-1) — Brief description
- [Related Page 2](./related-2) — Brief description

Writing Style

AspectGuideline
VoiceActive voice preferred
TensePresent tense for descriptions
PersonSecond person ("you") for instructions
LengthConcise sentences, short paragraphs
ExamplesInclude practical examples
TablesUse tables for structured comparisons

Code Examples

  • Include language identifier: ```json, ```python
  • Keep examples realistic and complete
  • Add comments for complex examples
  • Test all code examples before submitting

Pull Request Guidelines

PR Title Format

type(scope): brief description

Examples:
- docs(capabilities): add example for manufacturing
- schema(risk): add control effectiveness enum
- fix(validation): correct required field check

Types: docs, schema, fix, feat, refactor, test, chore

PR Description Template

## Description
Brief description of changes.

## Motivation
Why is this change needed?

## Changes Made
- Change 1
- Change 2

## Testing
How were these changes tested?

## Related Issues
Closes #123

## Checklist
- [ ] Documentation updated
- [ ] Schema validates correctly
- [ ] Examples tested
- [ ] No breaking changes (or migration guide provided)

Review Process

  1. Automated checks — CI runs schema validation and doc builds
  2. Community review — At least one approval required
  3. Maintainer review — Final approval from project maintainer
  4. Merge — Squash and merge to main branch

Issue Guidelines

Bug Reports

## Bug Description
Clear description of the bug.

## Steps to Reproduce
1. Step one
2. Step two
3. Step three

## Expected Behavior
What should happen.

## Actual Behavior
What actually happens.

## Environment
- Browser/Tool:
- Version:

## Additional Context
Screenshots, logs, etc.

Feature Requests

## Feature Description
Clear description of the proposed feature.

## Motivation
Why is this feature needed? What problem does it solve?

## Proposed Solution
How should this feature work?

## Alternatives Considered
Other approaches considered and why this is preferred.

## Additional Context
Mockups, examples from other tools, etc.

Community Guidelines

Code of Conduct

We are committed to providing a welcoming and inclusive environment:

  • Be respectful — Treat all contributors with respect
  • Be constructive — Focus on improving the project
  • Be patient — Remember that contributors have varying experience levels
  • Be collaborative — Work together toward common goals

Communication Channels

ChannelPurpose
GitHub IssuesBug reports, feature requests
GitHub DiscussionsQuestions, ideas, general discussion
Pull RequestsCode and documentation contributions

Response Times

ActivityExpected Response
Issue triageWithin 1 week
PR initial reviewWithin 2 weeks
Discussion replyWithin 1 week

Recognition

Contributors

All contributors are recognized in:

  • GitHub contributors list
  • Release notes for significant contributions
  • Annual contributor acknowledgment

Types of Recognition

Contribution LevelRecognition
First contributionWelcome message, first-timer badge
Regular contributorContributor badge
Significant impactFeatured contributor
Sustained contributionMaintainer consideration

Licensing

Contribution License

By contributing to the Orthogramic Metamodel, you agree that your contributions will be licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.

What This Means

  • Your contributions can be shared and adapted
  • Attribution will be given
  • Derivative works must use the same license
  • Commercial use is permitted

Getting Help

Stuck?

Questions About This Guide?

Open an issue with the label question or ask in Discussions.

Quick Reference

Common Commands

# Validate all schemas
npm run validate-schemas

# Build documentation locally
npm run docs:build

# Run local documentation server
npm run docs:start

# Run all tests
npm test

# Format code
npm run format

File Locations

Content TypeLocation
Domain schemas/schemas/domains/
Extension schemas/schemas/extensions/
Documentation/
Examples/examples/
Tests/tests/