Thanks for your interest in contributing. This project is maintained by a small team, so contributions go through forks and pull requests — there's no direct push access for non-collaborators.
- Check open Issues and PRs to avoid duplicate work.
- For anything non-trivial (new feature, architecture change), open an issue first to discuss the approach before writing code.
- Small fixes (typos, docs, obvious bugs) can go straight to a PR.
- Fork the repository (you won't be able to push branches directly unless you're a collaborator).
- Branch off
mainusing this naming scheme (Git flow style):feature/<short-description>fix/<short-description>chore/<short-description>docs/<short-description>
- Build and test locally before opening a PR (see below).
- Commit with clear, descriptive messages. Keep commits scoped to one logical change.
- Open a pull request against
mainusing the PR template. Link the related issue if there is one. - Respond to review feedback — PRs need at least one approval and a passing CI run before merge.
ByteForge uses CMake + Ninja and targets C++23.
cmake -S . -B build -G Ninja
cmake --build buildRun the test suite (GoogleTest, fetched via CMake FetchContent):
ctest --test-dir build --output-on-failureThe project builds cross-platform (Linux via epoll, Windows via IOCP) behind a shared IEventLoop interface — if your change touches the event loop, please test on both platforms if you can, or note in the PR which platform you tested.
- Header guards:
#ifndef/#define/#endif(no#pragma once). - Split declarations and definitions into
.h/.cppfiles. - Document public APIs with short Doxygen-style
/** */comments — keep them concise, not verbose. - Match the formatting of surrounding code (brace style, naming conventions) rather than introducing a new style in a file.
- One feature/fix per PR — keep diffs reviewable.
- Include or update tests for behavioral changes.
- Update documentation (README, code comments) if the change affects usage or public interfaces.
- CI must pass (build + tests) before merge.
- Don't fabricate benchmark numbers in PR descriptions — if you're citing performance impact, include how you measured it.
Use the issue templates — they'll prompt for the info needed to reproduce a bug or evaluate a feature request. Issues from non-collaborators are welcome; just keep them scoped and specific.
Be respectful and constructive in issues, PRs, and reviews. Disagreements about technical approach are fine and expected — keep them focused on the code, not the person.
Open a Discussion or a low-priority issue tagged question.