Thank you for your interest in contributing to DocSpec! This document provides guidelines for contributing to any repository in the DocSpec organization.
- Report bugs - Found something broken? Open an issue
- Suggest features - Have an idea? We'd love to hear it
- Improve documentation - Help make docs clearer
- Submit code - Fix bugs or implement features
- Test and review - Help test changes and review PRs
- Fork the repository you want to contribute to
- Clone your fork locally
- Create a branch for your changes
- Make your changes following the guidelines below
- Test your changes
- Submit a pull request
- Follow the existing code style in the repository
- Use meaningful variable and function names
- Keep functions focused and concise
- Add comments for complex logic
- Run
mix formatbefore committing - Ensure
mix testpasses - Ensure
mix credopasses with no warnings - Ensure
mix dialyzerpasses with no warnings - Use typespecs for public functions
We use Conventional Commits. Format your commit messages as:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
Common types:
feat- New featurefix- Bug fixdocs- Documentation changesstyle- Formatting, missing semicolons, etc.refactor- Code restructuring without behavior changetest- Adding or updating testschore- Maintenance tasks
Examples:
feat(parser): add support for inline code blocksfix(ast): correct handling of nested listsdocs: update installation instructions
Reference issues when applicable (e.g., fix(renderer): resolve crash on empty input (#123))
- Fill out the PR template completely
- Keep PRs focused on a single change
- Update documentation if needed
- Ensure all tests pass
- Be responsive to review feedback
Changes to the DocSpec AST specification require extra consideration:
- Discuss first - Open an issue to discuss the change
- Backward compatibility - Consider impact on existing documents
- Update TypeSpec - Reflect changes in the specification schema
- Document the change - Update specification documentation
When reporting bugs, include:
- Version you're using
- Steps to reproduce
- Expected vs actual behavior
- Sample document (if applicable)
- Error messages or logs
When suggesting features:
- Describe the problem you're solving
- Explain your proposed solution
- Consider alternatives you've thought about
- Provide examples or mockups if helpful
- Open a discussion
- Review existing issues for similar questions
By contributing, you agree that your contributions will be licensed under the same license as the project (typically EUPL-1.2).