Thank you for your interest in contributing to Uniword. This page covers the contribution workflow, code of conduct, and pull request process.
1. Code of Conduct
By participating in this project, you agree to maintain a respectful and inclusive environment for all contributors.
2. Development Workflow
The typical contribution workflow is:
-
Create an issue or comment on an existing issue
-
Fork and clone the repository
-
Create a feature branch (
feature/my-new-feature) -
Implement the feature with tests
-
Run tests and RuboCop
-
Update documentation
-
Commit with a semantic message
-
Push and create a pull request
-
Address review feedback
-
Merge when approved
3. Commit Messages
Use semantic commit messages:
<type>(<scope>): <subject>
<body>
<footer>
3.1. Types
| Type | Usage |
|---|---|
|
New feature |
|
Bug fix |
|
Documentation changes |
|
Code style changes (formatting) |
|
Code refactoring |
|
Adding or updating tests |
|
Build process or auxiliary tool changes |
3.2. Examples
feat(tables): add cell merging support
Implement horizontal and vertical cell merging for tables.
Includes new TableCell#merge_horizontal and #merge_vertical methods.
Closes #123
fix(docx): correct paragraph spacing serialization
Fix issue where spacing_before was not properly serialized
to OOXML format.
Fixes #456
4. Pull Request Process
4.1. Before Submitting
-
Ensure all tests pass:
bundle exec rspec -
Ensure RuboCop compliance:
bundle exec rubocop -
Update documentation (YARD docs, README.adoc, examples)
-
Update CHANGELOG.md under the "Unreleased" section
4.2. PR Guidelines
-
One feature per PR — Keep PRs focused and manageable
-
Clear description — Explain what and why
-
Tests included — All new code must have tests
-
Documentation updated — Keep docs in sync with code
-
Clean commit history — Squash commits if needed
-
Responsive to feedback — Address review comments promptly
5. Reporting Bugs
Before reporting, check if the issue already exists and verify it with the latest version. Include:
-
Clear description of the bug
-
Steps to reproduce
-
Expected vs. actual behavior
-
Environment details (Ruby version, gem version, OS)