Thank you for your interest in vAccel. We appreciate any effort to improve our project and welcome contributions from the community. Please take a moment to review the guidelines below to facilitate a smooth and effective contribution process.
- Use and Report: Try vAccel and share your experience. Were the instructions clear? Did everything work as expected?
- Improve Documentation: Suggest changes or improvements to the documentation to make it clearer.
- Request Features: Propose new features or enhancements.
- Report Bugs: Describe any issues you encounter.
- Code Changes: Improve existing code or add new functionality.
The vAccel project is structured as follows:
- Root Directory: Contains build files, LICENSE, README and other non-code files.
/src
: Contains the core implementation of the vAccel library and its' headers./plugins
: Contains the implementation of core vAccel plugins./examples
: Provides examples demonstrating library/API usage./python
: Includes a library implementation for vAccel python integration./docs
: Houses project documentation./scripts
: Contains scripts used for building and distributing vAccel./subprojects
: Holds Meson-specific files for fetching/compiling build dependencies./test
: Includes unit and integration tests to verify library functionality.
If you encounter any bugs or have suggestions for improvements, please open an issue.
When reporting a bug provide as much detail as possible, including steps to reproduce the issue and any relevant information about your environment. Specifically, include:
- A clear description of the issue.
- The respective output logs using the maximum debug level
(
VACCEL_DEBUG_LEVEL=4
). - Version details of vAccel and plugins (either the commit's hash or the version).
- CPU architecture and build type.
- Steps to reproduce the issue.
- Mark the issue with the
bug
label. - Keep an eye on the issue for possible questions from the maintainers.
Example template for an issue:
## Description
An explanation of the issue
## System info
- vAccel version:
- vAccel Plugin/Plugin's version:
- Arch:
- Build type:
## Steps to reproduce
A list of steps to reproduce the issue.
To make a feature request, mark the issue with the enhancement
label and
provide a detailed description of the proposed feature.
For significant changes, open an issue to discuss and receive feedback before proceeding with the implementation.
You can find information on building vAccel in README and meson_build docs. After implementing the desired changes, the project should build and install correctly. Additionally, code tests and examples should be implemented (or modified) to include the new functionality. The process of formatting and running static analysis on the code is described here.
Before creating a new Pull Request, ensure that:
- The build process is not broken.
- Your code includes appropriate tests and all tests pass.
- The style used follows the coding style of the project.
To submit changes:
- Use one commit for each new feature or changed functionality
- Ensure that no commit in the Pull Request breaks the project's build process
- Make sure to sign-off your commits
- Provide meaningful commit messages, describing shortly the changes the commit introduces
- Provide a meaningful Pull Request title and message
- Automated checks: A maintainer checks the Pull Request and triggers the automated checks.
- Review: If the checks pass, one or more maintainers review the Pull Request.
- Address comments: The author of the Pull Request needs to address all the reviewer comments.
- Approval: Upon approval, git trailers are added to the Pull Requests's commits.
- Merge: The Pull Request is merged.
Write clear and concise commit messages. Follow these guidelines for your commit messages:
- Limit the header (first line) to 72.
- Limit the body/footer to 80 characters
- Follow the Conventional Commits
specification and, specifically, format the header as
<type>[optional scope]: <description>
, wheredescription
must not end with a fullstop andtype
can be one of:- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- refactor: A code change that neither fixes a bug nor adds a feature
- perf: A code change that improves performance
- test: Adding missing tests
- build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
- ci: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
- chore: Other changes that don't modify src or test files
- revert: Reverts a previous commit
- If the PR is associated with an issue, reference issues with
Fixes: #issue_number
- Always sign-off your commit message
The above rules are enforced by the PR checks, which will fail if requirements are not met.
vAccel code is formatted using clang-format
with custom rules based on the
Linux Kernel/K&R style. Contributors can automatically apply formatting rules
using the ninja target clang-format
generated my meson. When Pull Request
checks are run, an automated review with a patch containing any additional
format changes required will be generated. For a Pull Request to be valid,
format checks must not fail.
vAccel includes clang-tidy
configs to validate it's codebase. Contributors
can run checks using the ninja target clang-tidy
generated my meson.
Please address all errors and as much warnings as possible for the PR to be
eligible for approval. Additionally, cppcheck
checks triggered by the Pull
Request actions must be successful.
Feel free to contact any of the authors via commit message emails or at vaccel@nubificus.co.uk.