Skip to content

Contributing Guide

We welcome contributions to cmark-writer! This guide outlines the process for contributing to the project.

Getting Started

  1. Fork the repository on GitHub

  2. Clone your fork to your local machine

  3. Set up the development environment:

    bash
    git clone https://github.com/YOUR-USERNAME/cmark-writer.git
    cd cmark-writer
    cargo build
    cargo test

Development Workflow

Making Changes

  1. Create a new branch for your feature or bugfix:

    bash
    git checkout -b feature/your-feature-name
  2. Make your changes following the coding standards

  3. Add tests for your changes where applicable

  4. Update documentation as needed

Testing

Before submitting, make sure all tests pass:

bash
# Run all tests
cargo test

# Run specific tests
cargo test -- test_name

# Run tests with the gfm feature enabled
cargo test --features gfm

Documentation

When adding new features, please update the documentation:

  • Add inline code documentation with doc comments
  • Update the README.md if necessary
  • Consider adding examples

Pull Request Process

  1. Push your changes to your fork on GitHub
  2. Create a Pull Request from your branch to the main repository
  3. Describe your changes in the PR description, including:
    • What the PR adds or fixes
    • Any breaking changes
    • Testing approach
  4. Address review feedback if requested

Coding Standards

  • Follow the Rust style guidelines
  • Use meaningful variable and function names
  • Add doc comments to public APIs
  • Keep functions focused on a single responsibility
  • Format code with cargo fmt before committing

Bug Reports and Feature Requests

If you find a bug or have a feature request, please open an issue on GitHub:

  • For bugs, include steps to reproduce, expected behavior, and actual behavior
  • For feature requests, describe the feature and why it would be valuable

License

By contributing to cmark-writer, you agree that your contributions will be licensed under the project's MIT License.