Contributing - FarelRA/CSMWrap GitHub Wiki
Contributing to CSMWrap
We welcome contributions to CSMWrap! Whether it's reporting bugs, suggesting features, or submitting code changes, your help is appreciated.
Reporting Bugs
If you encounter a bug, please open an issue on the GitHub repository. To help us diagnose the problem, please include as much information as possible:
- CSMWrap Version: The specific version or Git commit hash you are using.
- Hardware Details:
- Motherboard model and manufacturer.
- CPU model.
- GPU model.
- UEFI Firmware Version:
- Relevant UEFI Settings:
- Secure Boot (should be disabled).
- Above 4G Decoding / Resizable BAR (should be disabled).
- Native CSM Support setting (enabled/disabled).
- Legacy OS: The operating system you are trying to boot (e.g., FreeDOS, Windows XP 32-bit).
- Steps to Reproduce: A clear, step-by-step description of how to trigger the bug.
- Observed Behavior: What actually happened.
- Expected Behavior: What you expected to happen.
- Screenshots/Logs: If CSMWrap prints any messages or if you can capture serial logs (especially from QEMU), please include them.
Suggesting Enhancements
If you have an idea for a new feature or an improvement to an existing one, feel free to open an issue to discuss it. Describe the enhancement and why you think it would be beneficial.
Submitting Code Changes (Pull Requests)
- Fork the Repository: Create your own fork of the CSMWrap repository on GitHub.
- Create a Branch: Create a new branch in your fork for your changes (e.g.,
git checkout -b feature/my-new-feature
orgit checkout -b bugfix/fix-that-thing
). - Make Your Changes:
- Write clear, concise, and well-commented code.
- Follow the existing coding style as much as possible (though not strictly enforced yet, aim for consistency).
- Ensure your changes build correctly for both
ia32
andx86_64
architectures:make ARCH=ia32 make ARCH=x86_64
- Test your changes thoroughly, preferably on both QEMU and real hardware if possible.
- Commit Your Changes: Write clear and descriptive commit messages.
- Push to Your Fork: Push your branch to your forked repository on GitHub.
- Open a Pull Request: Go to the original CSMWrap repository and open a pull request from your branch to the
main
branch (or the relevant development branch).- Provide a clear title and description for your pull request, explaining the purpose of your changes.
- Link to any relevant issues.
Development Environment
- The project uses a Makefile for building. See Building from Source for details on setting up the build environment.
- Key submodules include Nyu-EFI (for EFI headers and linker script) and uACPI (for ACPI table handling). SeaBIOS is also a critical submodule for providing the CSM binaries.
Areas for Contribution
- Improving hardware compatibility (e.g., adding workarounds for more chipsets in
unlock_region.c
). - Enhancing VBIOS compatibility or video initialization.
- Improving ACPI/SMBIOS handling.
- Fixing bugs found by users.
- Testing on a wider range of hardware and reporting results.
- Documentation improvements.
Thank you for considering contributing to CSMWrap!