Ways to contribute
Fundraising
Provide feedback
Participate in Godot's development
Contribute engine code
Contribute documentation
Help in Godot's ecosystem
Feedback guidelines
Testing and reporting issues
How to write a good issue report
Checklist
Before opening an issue
The anatomy of an issue report
The critical parts
Testing development versions
Bisecting regressions
What is bisecting?
Using official builds to speed up bisecting
The Git bisect command
Determine the commit hashes
Build the engine
Run the engine
Proposing and discussing ideas
How are proposals accepted?
Evaluating proposals
Development guidelines
Rules for contributions
Respect our Code of Conduct
Respect copyright
No features from new contributors
Contribute one change at a time
Explain your contributions
Contribute only what you understand
AI-assisted contributions
For contributors
For maintainers
"Substantial code" definition
Workflows
Pull request workflow
When will a pull request get reviewed?
How to create pull requests
Git source repository
Forking and cloning
Branching
Updating your branch
Making changes
Pushing changes to a remote
Issuing a pull request
Modifying a pull request
The interactive rebase
Rebasing onto another branch
Deleting a Git branch
Areas and teams
How to join a team / become a maintainer
2D
3D
Animation
Asset pipeline
Audio
Core
Demos
Documentation
Editor
Debugger
Script Editor
GUI
Input
Navigation
Networking
Physics
Platforms
Android
Apple
Buildsystem
Web
Windows
Linux / BSD
Quality Assurance
Tests
Bugsquad / Issue triage
Rendering
Shaders
VFX / Tech Art / Particles
Scripting
GDExtension
GDScript
C# / .NET / Mono
Server Infrastructure
Technical Leadership Committee (TLC)
Translation / i18n
Usability
Website
XR
Helping out teams (using triage projects)
How to use triage projects
Triage guidelines
Reviewing pull requests
Confirm that that pull request is valid
Confirm that the problem exists
Confirm that the approach is appropriate
Test the PR and look for regressions
Do a code review
What to avoid during review
Post your review
Testing pull requests
Downloading a compiled build
If you have a GitHub account
If you don't have a GitHub account
Compiling a pull request branch from source
Downloading a zipped pull request branch
Checking out a pull request branch with git
Bugsquad and triage
Introduction to issue triage
Tasks
Bug triage overview
Triage checklist
Check issue validity
Initial assessment
Check for duplicates
Assigning milestones
Testing an issue
Finalize assessment
Closing an issue
Team workflow
Bug triage guidelines
Issues management
Release priority tracking
Identifying release priority issues
Severity
Participating in triage sprints
Sprint steps
Release management
Merge guidelines
1. Get feedback from the right people/teams
2. Get feedback from the community
3. Git checklist
4. GitHub checklist
5. Merge the pull request
Maintenance release process
Changes suitable for maintenance releases
Cherry-picking process
Engine development
Introduction to engine contributions
Checklist for new contributors
Setting up a dev environment
IDE integration
Best practices for engine contributors
Introduction
Language
Best Practices
#1: The problem always comes first
#2: To solve the problem, it has to exist in the first place
#3: The problem has to be complex or frequent
#4: The solution must be discussed with others
#5: To each problem, its own solution
#6: Cater to common use cases, leave the door open for the rare ones
#7: Prefer local solutions
#8: Don't use complex canned solutions for simple problems
C++ rules and guidelines
Automated style checks
Disallowed features
Naming
Spacing
Header includes
Comments
Other language guidelines
GDScript
Objective-C
Java
Python
Optimization guidelines
Introduction
Choosing what to optimize
Benefits
Costs
Optimization process
Pull request requirements
Optimizing for best / worst cases
GPU optimization
Compilation time optimization
Editor style guide
Introduction
Writing style
Button and menu texts
Inspector sections
Inspector performance hints
Tooltips
GDScript language design guidelines
Typing guidelines
Performance goals
Annotation guidelines
Unit tests
Unit test guidelines
Handling compatibility breakages
Writing documentation
Documentation overview
Content guidelines
Guidelines and principles
Writing complete and accessible documentation
Limiting cognitive load
Writing guidelines
English language quirks to be aware of
The noun adjunct
Deverbals
Initialisms and a/an
And/or with lists
7 rules for clear English
Use the active voice
Use precise action verbs
Avoid verbs that end in -ing
Remove unnecessary adverbs and adjectives
Ban these 8 words
Use explicit references
Use 's to show possession
Use the Oxford comma to enumerate anything
How to write methods and classes
Dynamic vs static typing
Use real-world code examples where appropriate
Give an overview of the node in the brief description
Mention what methods return if it's useful
Use "if true" to describe booleans
Use
[code]
around arguments
Common vocabulary to use in Godot's documentation
Keyboard shortcut guidelines
Manual style guidelines
Text styles
Emphasis
Numbers
Literals
Classes, properties, and methods
Editor UI
Project settings
Code blocks and adominitions
Manually wrapping lines
Section header syntax
When to refer to a specific Godot version
Use roles for editor UI
Examples
Creating documentation images and videos
Images
Capturing an image
Format conversion
Cropping
Scaling down an image
Saving as WebP in Krita
Outlines, arrows and text
Adding an image to a documentation page
Videos
Capturing a video
Compressing the captured video
Adding a video to a documentation page
Documentation contribution checklist
Writing style
Code examples
Manual style and formatting
Images and videos
GitHub
The class reference
The source of the class reference
Updating class reference when working on the engine
The manual
Writing the manual
Getting started
What is the Godot documentation
Contributing changes
Editing pages online
Adding new pages
License
Building the manual with Sphinx
Dealing with errors
Hints for performance
The contributing docs
Making changes to the contributing docs
What kinds of information are documented here?
How is this page structured?
Building the documentation locally
Translating Godot
Using Weblate for translations
Adding a new language
Translation interface
Locating original content
Respecting the markup syntax
Editor interface (C++)
Online documentation (RST)
Class reference (BBCode)
Offline translation and testing
Localizing documentation images
Other
Contributing benchmarks
Adding new benchmarks
Create new benchmark
Configure the benchmark
Implement the benchmark
Test the benchmark
Contributing demo projects
Demo submission criteria
Submission criteria for new demos
Contributing to godot-cpp
Feature guidelines
Contributing to the website
Content guidelines
Development resources
Benchmarks (long-term performance tracker)
Class reference status
Commit artifacts
Godot builds
Interactive changelog
Issue statistics
Proposals viewer
Pull requests by file
Team reports
Website article cover generator
Contributing to Godot
Godot Engine contributing documentation in English
Other
Edit on GitHub
Visit the engine documentation!
Other
Contributing benchmarks
Contributing demo projects
Contributing to godot-cpp
Contributing to the website
Development resources