| doc_id | NET-PROJ-006 |
|---|---|
| doc_title | Contributing to Network System |
| doc_version | 1.0.0 |
| doc_date | 2026-04-04 |
| doc_status | Released |
| project | network_system |
| category | PROJ |
Note: The canonical version of this document is at the project root. This copy is kept for reference.
SSOT: This document is the single source of truth for Contributing to Network System.
Version: 0.1.0.0 Last Updated: 2025-11-28
Thank you for your interest in contributing to Network System! This guide will help you get started.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Code Style
- Testing
- Documentation
- Submitting Changes
- Review Process
This project adheres to a code of conduct. By participating, you are expected to:
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on what is best for the community
- Show empathy towards other community members
Before contributing, ensure you have:
- C++20 compatible compiler
- macOS: Xcode 12+ or Clang 12+
- Linux: GCC 10+ or Clang 12+
- Windows: Visual Studio 2019+ or MinGW-w64
- CMake 3.16 or higher
- Git
- Required dependencies:
- ASIO or Boost.ASIO 1.28+
- OpenSSL 3.0+ (for TLS/SSL and WebSocket)
- Optional dependencies:
- fmt 10.0+ (formatting)
- container_system (advanced serialization)
- thread_system (thread pool integration)
- logger_system (structured logging)
New to open source? Start here:
-
Browse issues labeled
good first issue: -
Read the documentation:
-
Join discussions:
# Fork the repository on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/network_system.git
cd network_system
# Add upstream remote
git remote add upstream https://github.com/kcenon/network_system.gitsudo apt update
sudo apt install -y cmake ninja-build libasio-dev libfmt-dev libssl-devbrew install cmake ninja asio fmt opensslpacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja \
mingw-w64-x86_64-asio mingw-w64-x86_64-fmt \
mingw-w64-x86_64-opensslcmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build -jcd build && ctest --output-on-failuregit checkout -b feature/your-feature-name- Follow the code style guidelines
- Write tests for new features
- Update documentation as needed
git add .
git commit -m "feat: add your feature description"Use conventional commit messages:
feat:for new featuresfix:for bug fixesdocs:for documentationrefactor:for code refactoringtest:for adding testschore:for maintenance tasks
- Follow modern C++ best practices
- Use RAII and smart pointers
- Use
clang-formatfor formatting (configuration provided) - Use
clang-tidyfor static analysis
# Format all source files
find . -name "*.cpp" -o -name "*.h" | xargs clang-format -icmake --build build --target test
# OR
cd build && ctest --output-on-failure# ThreadSanitizer
cmake -B build -DCMAKE_BUILD_TYPE=Debug -DENABLE_TSAN=ON
cmake --build build
./build/tests/network_tests
# AddressSanitizer
cmake -B build -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON
cmake --build build
./build/tests/network_tests- Update documentation for any API changes
- Add docstrings for new public functions/classes
- Include examples for new features
- Provide both English and Korean versions for major documents
git push origin feature/your-feature-name- Go to GitHub
- Click "New Pull Request"
- Select your feature branch
- Fill in the PR template
- Submit the PR
- Automated checks: CI/CD pipelines run tests and linters
- Code review: Maintainers review your code
- Feedback: Address any requested changes
- Merge: Once approved, your PR will be merged
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: kcenon@naver.com
Thank you for contributing to Network System!