Contributing - diasurgical/DevilutionX GitHub Wiki
DevilutionX Contribution Guide
Welcome! This document outlines the process and expectations for contributing to DevilutionX. Our goal is to keep the codebase clean, the project moving, and our contributors empowered.
For Translators
DevilutionX is a global project, and we want to make the game accessible to players around the world. This section provides a comprehensive guide on how to contribute translations to the project. Whether you're translating the game into a new language or updating an existing translation, this guide covers everything from the technical aspects of handling language files to best practices for ensuring clarity and accuracy in your translations.
Read more in our Translation Guide.
🛠 For Developers (Submitting Pull Requests)
If you are writing code or adding assets, follow these steps to ensure a smooth review process:
Code style
Our codebase follows a specific style guide to ensure consistency, readability, and maintainability. This section outlines the conventions and best practices for contributing code to DevilutionX. Whether you're fixing a bug or implementing a new feature, adhering to these guidelines will help ensure that your contributions align with the project's standards. You'll find information on formatting, naming conventions, and the tools we use to enforce style rules, like clang-format.
Read more in our Detailed Code Style Guide.
PR Description & Context
- Summarize Changes: Clearly explain what your PR does and why.
- Visuals are Key: If your change affects the UI or graphics, you must include screenshots or a short GIF/Video. This helps reviewers understand the impact without having to compile and run the code immediately.
- Link Issues: If your PR fixes a known bug, include Closes #123 in the description.
Branch & Commit Hygiene
- Atomic Commits: Try to keep commits logical.
- The "Squash" Rule: If your PR branch contains many "fixup," "typo," or "update" commits, the maintainers will likely Squash and Merge your PR to keep the master history clean.
- Maintainable History: If you want your specific commit history preserved (Rebase and Merge), ensure every commit is meaningful and the branch is kept up to date with the master branch.
Rights & Assets
- Ownership: Any new assets (sounds, graphics, music) must have a clear rights check. State the source and the license in the PR description.
🎓 For Contributors (Reviewing & Merging)
Contributors are trusted members of the community with write access. Your role is to ensure quality and help move the project forward.
Reviewing with Confidence
- Tap a Specialist: If you are unsure about a specific area (e.g., low-level C++ performance or rendering logic), don't hesitate to tag a fellow contributor who specializes in that area.
- Co-Reviewing: It is perfectly okay to ask for a "second set of eyes" on Discord before hitting the merge button.
- Trust the Process: If a PR is green (passes CI), has been reviewed by at least one person, and doesn't represent a "controversial" change, feel empowered to merge it.
Merging Protocols
- Staleness: If a PR has gone stale (conflicts with master), ask the developer to rebase. If they are unresponsive, you may perform the rebase/fix yourself if the contribution is valuable.
- Version Management: For standard bug fixes and QoL improvements, merging directly to master is the default. Major architectural changes should be discussed with the project owners first.
👥 Specialist Directory
If you need a specialized review, you can find our key contributors and the core hellspawn team here. Feel free to @mention them in your PR or ping them on the Discord in #development.
| Area of Specialty | GitHub Handle | Discord Tag |
|---|---|---|
| Project Owner / Lead | @AJenbo | AJenbo |
| C++ Guru / Handhelds | @glebm | glebm |
| SDL / PS Vita | @isage | sarcastic_cat |
| Random Number Generation | @ephphatha | ephphatha |
| Networking / 3DS | @StephenCWills | staphen |
| QoL / Bugfixes | @qndel | qndel |
| Animations | @obligaron | obligaron |
| Maintainer | @yuripourre | yuripourre |
| Triage | @strich | strich |
“A project is only as strong as its contributors. Thank you for helping us keep Diablo 1 alive and better than ever!”