| # Contributing to Apache Axis2/C |
| |
| We welcome contributions to Apache Axis2/C! This guide explains how to get involved. |
| |
| ## The Apache Way |
| |
| > "The Apache Way is primarily about Community, Merit, and Openness, backed up by Pragmatism and Charity." |
| |
| Apache projects operate through community consensus and meritocracy. Contributions are valued, and consistent contributors earn recognition and responsibility within the project. |
| |
| ### Becoming a Committer |
| |
| If you have a significant stake in Apache Axis2/C—whether your organization depends on it for production systems, or you're actively contributing improvements—consider the path to becoming a committer. All Apache releases require a minimum of **3 binding votes** from Project Management Committee (PMC) members, so having committed contributors ensures the project can continue to release updates. |
| |
| For more information, see: [Becoming a Committer](https://community.apache.org/contributors/becomingacommitter.html) |
| |
| ## Ways to Contribute |
| |
| - **Bug Reports** - Report issues you encounter |
| - **Bug Fixes** - Submit patches for known issues |
| - **Documentation** - Improve guides and API docs |
| - **Features** - Implement new functionality |
| - **Code Review** - Review pull requests from others |
| |
| ## Getting Started |
| |
| ### 1. Fork the Repository |
| |
| ```bash |
| # Fork on GitHub, then clone your fork |
| git clone https://github.com/YOUR_USERNAME/axis-axis2-c-core.git |
| cd axis-axis2-c-core |
| git remote add upstream https://github.com/apache/axis-axis2-c-core.git |
| ``` |
| |
| ### 2. Create a Branch |
| |
| ```bash |
| git checkout -b feature/my-feature |
| # or |
| git checkout -b fix/issue-123 |
| ``` |
| |
| ### 3. Make Changes |
| |
| - Follow the [Coding Conventions](../guide/coding-conventions.md) |
| - Write tests for new functionality |
| - Update documentation as needed |
| |
| ### 4. Test Your Changes |
| |
| Build and test following the instructions in the `INSTALL` file: |
| |
| ```bash |
| ./configure [options] |
| make |
| make check |
| ``` |
| |
| ### 5. Commit and Push |
| |
| ```bash |
| git add . |
| git commit -m "Brief description of changes" |
| git push origin feature/my-feature |
| ``` |
| |
| ### 6. Submit a Pull Request |
| |
| 1. Go to your fork on GitHub |
| 2. Click "New Pull Request" |
| 3. Select your branch |
| 4. Fill out the PR template |
| 5. Submit for review |
| |
| ## Pull Request Guidelines |
| |
| ### Checklist |
| |
| - [ ] Code follows [coding conventions](../guide/coding-conventions.md) |
| - [ ] Tests added/updated for new functionality |
| - [ ] Documentation updated if needed |
| - [ ] Commit messages are clear and descriptive |
| - [ ] No unrelated changes included |
| |
| ### PR Title Format |
| |
| ``` |
| [AXIS2C-XXX] Brief description |
| ``` |
| |
| Or for non-JIRA issues: |
| |
| ``` |
| fix: Description of bug fix |
| feat: Description of new feature |
| docs: Documentation update |
| ``` |
| |
| ### Review Process |
| |
| 1. A maintainer will review your PR |
| 2. Address any requested changes |
| 3. Once approved, a maintainer will merge |
| |
| ## Code Style |
| |
| See [Coding Conventions](../guide/coding-conventions.md) for: |
| |
| - Naming conventions |
| - Code formatting |
| - Memory management patterns |
| - Error handling |
| |
| ## Testing |
| |
| ### Running Tests |
| |
| ```bash |
| make check |
| ``` |
| |
| ### Writing Tests |
| |
| - Place tests in the `test/` directory |
| - Use the existing test framework |
| - Cover both success and failure cases |
| |
| ## Building the Documentation Site |
| |
| The documentation site uses [MkDocs](https://www.mkdocs.org/) with the Material theme. |
| |
| ### Setup |
| |
| ```bash |
| # Create a Python virtual environment and install dependencies |
| python3 -m venv mkdocs-venv |
| ./mkdocs-venv/bin/pip install mkdocs mkdocs-material |
| ``` |
| |
| ### Preview Locally |
| |
| ```bash |
| # Start the development server |
| ./mkdocs-venv/bin/mkdocs serve |
| |
| # Or specify a different port |
| ./mkdocs-venv/bin/mkdocs serve -a localhost:8080 |
| ``` |
| |
| Then open [http://localhost:8000](http://localhost:8000) in your browser. The site auto-reloads when you edit Markdown files. |
| |
| ### Build Static Site |
| |
| ```bash |
| # Generate static HTML in site/ directory |
| ./mkdocs-venv/bin/mkdocs build |
| ``` |
| |
| ### Documentation Structure |
| |
| ``` |
| docs/ |
| ├── index.md # Home page |
| ├── getting-started/ # Installation and quick start |
| ├── guide/ # User and developer guides |
| ├── api/ # API reference |
| ├── community/ # Contributing, mailing lists |
| └── *.md # HTTP/2, security docs |
| ``` |
| |
| ## Communication |
| |
| - **Developer List**: [c-dev@axis.apache.org](mailto:c-dev@axis.apache.org) |
| - **User List**: [c-user@axis.apache.org](mailto:c-user@axis.apache.org) |
| - **Jira**: [issues.apache.org/jira/projects/AXIS2C](https://issues.apache.org/jira/projects/AXIS2C) for bug reports and feature requests |
| |
| ## License |
| |
| By contributing, you agree that your contributions will be licensed under the [Apache License 2.0](license.md). |
| |
| ## Code of Conduct |
| |
| All contributors must follow the [Apache Code of Conduct](https://www.apache.org/foundation/policies/conduct.html). |
| |
| Thank you for contributing to Apache Axis2/C! |