This page documents the contribution process for the Dear ImGui repository, including issue reporting, pull request submission, coding standards, and copyright requirements. Contributors should follow these guidelines to ensure efficient review and integration of their contributions.
For information about the CI/CD pipeline and automated testing, see CI/CD Pipeline. For build configuration requirements, see Build Configuration. For general issue and PR workflow details, see Issue and PR Process.
The Dear ImGui project maintains structured contribution workflows to manage the high volume of community input while preserving maintainer bandwidth. The contribution system distinguishes between different types of interactions (issues vs discussions), enforces submission standards through templates, and requires adherence to specific coding conventions.
Sources: docs/CONTRIBUTING.md1-82
The following diagram illustrates the decision flow for contributing to Dear ImGui:
Sources: docs/CONTRIBUTING.md26-38 docs/CONTRIBUTING.md39-65 docs/CONTRIBUTING.md66-75
The repository uses two communication channels with distinct purposes:
| Channel | Purpose | When to Use |
|---|---|---|
| GitHub Discussions | Build/link problems for first-time users | Cannot build examples, cannot link Dear ImGui in custom engine, cannot load fonts |
| GitHub Issues | Questions, bug reports, feature requests, general discussion | Dear ImGui successfully shows in application, user has prior experience with Dear ImGui |
The project encourages Issues to become a "centralized and cross-referenced database of Dear ImGui contents" for experienced users.
Sources: docs/CONTRIBUTING.md26-38 .github/ISSUE_TEMPLATE/issue_template.yml7-8
Before opening an issue, contributors must:
ImGui::ShowDemoWindow(): Explore demo and examine source codeIM_ASSERT() calls are active by testing with IM_ASSERT(false);Sources: docs/CONTRIBUTING.md11-25 docs/CONTRIBUTING.md55
The issue template .github/ISSUE_TEMPLATE/issue_template.yml1-93 enforces the following fields:
Sources: .github/ISSUE_TEMPLATE/issue_template.yml23-88 docs/CONTRIBUTING.md47-59
Issues should include code that:
Example format:
Sources: docs/CONTRIBUTING.md52 .github/ISSUE_TEMPLATE/issue_template.yml78-86
The pull request template .github/pull_request_template.md1-11 enforces:
Sources: .github/pull_request_template.md1-11
Sources: docs/CONTRIBUTING.md66-75
Pull requests are reviewed considering:
Sources: docs/CONTRIBUTING.md68-69
The codebase enforces consistent style across imgui.cpp imgui_widgets.cpp imgui_tables.cpp imgui_draw.cpp:
| Element | Convention | Example |
|---|---|---|
| Indentation | 4 spaces (no tabs) | if (condition) |
| Local variables | snake_case | local_variable |
| Functions | PascalCase() | FunctionName() |
| Members | PascalCase | MemberName |
| Text comments | C-style with space | // Text Comment |
| Code comments | C-style no space | //CodeComment(); |
| Casts | C-style | (int)value |
| C++ features | Minimal C++11 | Avoid modern C++ idioms |
Exception: Example applications under examples/ may mimic ecosystem conventions (e.g., DirectX samples use DirectX style).
Sources: docs/CONTRIBUTING.md73
Sources: imgui.h imgui_internal.h backends/imgui_impl_glfw.h backends/imgui_impl_vulkan.h
All submitted code:
Important: Do not modify copyright statements in files within PRs.
Sources: docs/CONTRIBUTING.md76-81
Sources: docs/CONTRIBUTING.md76-81
The project enforces strict policies:
| Situation | Policy |
|---|---|
| Anonymous new accounts | Receive additional scrutiny; incomplete questions dismissed |
| Cheating/DLL injection for games | Not answered; users blocked |
| Entitled/impolite/lazy requests | May lead to bans |
| Help vampires | Discouraged (see Slashdot article) |
Sources: docs/CONTRIBUTING.md60-63 docs/CONTRIBUTING.md24
Sources: docs/CONTRIBUTING.md41-46 docs/CONTRIBUTING.md60-63
Contributors should consult:
ImGui::ShowDemoWindow(): Interactive demonstration with source codeSources: docs/CONTRIBUTING.md11-25 .github/ISSUE_TEMPLATE/issue_template.yml16-20
| File | Purpose |
|---|---|
| docs/CONTRIBUTING.md | Complete contribution guidelines |
| .github/pull_request_template.md | PR submission template |
| .github/ISSUE_TEMPLATE/issue_template.yml | Issue submission form |
| .github/ISSUE_TEMPLATE/config.yml | Issue template configuration |
| LICENSE.txt | MIT License terms |
| imgui.h | Public API definitions |
| imgui_internal.h | Internal API definitions |
Sources: docs/CONTRIBUTING.md .github/pull_request_template.md .github/ISSUE_TEMPLATE/
Contributing to Dear ImGui requires:
The structured approach balances community input with maintainer bandwidth, ensuring sustainable project development.
Sources: docs/CONTRIBUTING.md1-82
Refresh this wiki