Contributing ============ Thank you for your interest in contributing to Nexus! This guide covers the contribution workflow and guidelines. Development Environment ----------------------- Prerequisites ~~~~~~~~~~~~~ **Windows**:: winget install Kitware.CMake winget install Git.Git # Install Visual Studio 2019+ or Build Tools **Linux (Ubuntu/Debian)**:: sudo apt-get install cmake gcc g++ git **macOS**:: brew install cmake git Clone and Build ~~~~~~~~~~~~~~~ :: git clone https://github.com/nexus-platform/nexus.git cd nexus # Native build (for testing) cmake -B build -DCMAKE_BUILD_TYPE=Debug -DNEXUS_PLATFORM=native -DNEXUS_BUILD_TESTS=ON cmake --build build --config Debug # Run tests ctest --test-dir build -C Debug --output-on-failure Contribution Workflow --------------------- Reporting Bugs ~~~~~~~~~~~~~~ 1. Check existing issues to avoid duplicates 2. Use the bug report template 3. Include: - Platform and version (Windows/Linux/macOS, compiler version) - Steps to reproduce - Expected vs actual behavior - Relevant logs or screenshots Suggesting Features ~~~~~~~~~~~~~~~~~~~ 1. Check existing feature requests 2. Use the feature request template 3. Describe the use case and benefits Pull Request Process ~~~~~~~~~~~~~~~~~~~~ 1. Fork the repository 2. Create a feature branch: ``git checkout -b feature/my-feature`` 3. Make your changes following :doc:`coding_standards` 4. Ensure tests pass: ``ctest --test-dir build -C Debug`` 5. Commit with conventional commits format 6. Push and create a Pull Request Code Style ---------- See :doc:`coding_standards` for detailed code style requirements. Key points: - Follow ``.clang-format`` configuration - Use Doxygen backslash style comments (``\brief``, ``\param``) - 80 character line limit - 4 space indentation (no tabs) - Pointer alignment: left (``int* ptr``) Commit Messages --------------- Use `Conventional Commits `_ format:: (): [optional body] [optional footer] Types ~~~~~ - ``feat``: New feature - ``fix``: Bug fix - ``docs``: Documentation changes - ``style``: Code style changes (formatting, no logic change) - ``refactor``: Code refactoring - ``perf``: Performance improvements - ``test``: Adding or updating tests - ``build``: Build system changes - ``ci``: CI configuration changes - ``chore``: Other changes Examples ~~~~~~~~ :: feat(hal): add PWM support for STM32F4 fix(osal): fix mutex deadlock in FreeRTOS adapter docs(api): update GPIO documentation test(log): add unit tests for log filtering Pre-Submit Checklist -------------------- Before submitting a PR, verify locally:: # 1. Build passes cmake -B build -DNEXUS_PLATFORM=native -DNEXUS_BUILD_TESTS=ON cmake --build build --config Release # 2. Tests pass ctest --test-dir build -C Release --output-on-failure # 3. Code format check clang-format --dry-run --Werror hal/**/*.c hal/**/*.h # 4. Documentation builds without warnings doxygen Doxyfile Review Process -------------- 1. Automated CI checks must pass 2. At least one maintainer approval required 3. Address all review comments 4. Squash commits if requested CI/CD ----- All PRs trigger GitHub Actions workflows: - ``build.yml``: Multi-platform build (Windows, Linux, macOS) + ARM cross-compilation - ``test.yml``: Unit tests, coverage, sanitizers, MISRA checks Questions? ---------- Open a discussion or reach out to maintainers.