Skip to content

Latest commit

 

History

History
90 lines (65 loc) · 2.26 KB

File metadata and controls

90 lines (65 loc) · 2.26 KB

Contributing to Axiom

Thank you for your interest in contributing to Axiom! This document provides guidelines and information for contributors.

How to Contribute

Reporting Issues

  • Check existing issues before creating a new one
  • Use a clear, descriptive title
  • Provide detailed steps to reproduce the issue
  • Include relevant logs, error messages, or screenshots

Suggesting Features

  • Open an issue with the [Feature Request] prefix
  • Describe the use case and expected behavior
  • Explain why this feature would benefit the project

Code Contributions

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/your-feature-name
  3. Make your changes
  4. Run tests
    python tests/test_framework_integration.py -v
  5. Commit with clear messages
    git commit -m "Add: description of your change"
  6. Push and create a Pull Request

Development Setup

# Clone with submodules
git clone https://github.com/certainly-param/Axiom.git
cd Axiom
git submodule update --init --recursive

# Install Python dependencies
pip install pyyaml

# Run tests
python tests/test_framework_integration.py -v

Code Style

  • Python: Follow PEP 8
  • C: Use consistent indentation (4 spaces)
  • Documentation: Update relevant docs when changing functionality

Adding a New Protocol

See Usage Examples for the complete guide.

Quick checklist:

  • Create examples/{protocol}/config/{protocol}.yaml
  • Create examples/{protocol}/adapter/{protocol}_adapter.c
  • Add tests if applicable
  • Update documentation

Pull Request Guidelines

  • Keep PRs focused on a single change
  • Include tests for new functionality
  • Update documentation as needed
  • Ensure all tests pass before submitting

Areas for Contribution

  • New Protocol Adapters - Paxos, ZAB, PBFT, etc.
  • Property Templates - New verification properties
  • Domain Templates - Support for new system types
  • Documentation - Improvements, examples, tutorials
  • Bug Fixes - Check open issues

Questions?

Open an issue or reach out via the GitHub repository.


Thank you for contributing!