1b877906bSopenharmony_ci# Contribution Guide 2b877906bSopenharmony_ci 3b877906bSopenharmony_ci## Contents 4b877906bSopenharmony_ci 5b877906bSopenharmony_ci- [Asking a question](#asking-a-question) 6b877906bSopenharmony_ci- [Reporting a bug](#reporting-a-bug) 7b877906bSopenharmony_ci - [Reporting a compile or link bug](#reporting-a-compile-or-link-bug) 8b877906bSopenharmony_ci - [Reporting a segfault or other crash bug](#reporting-a-segfault-or-other-crash-bug) 9b877906bSopenharmony_ci - [Reporting a context creation bug](#reporting-a-context-creation-bug) 10b877906bSopenharmony_ci - [Reporting a monitor or video mode bug](#reporting-a-monitor-or-video-mode-bug) 11b877906bSopenharmony_ci - [Reporting a window, input or event bug](#reporting-a-window-input-or-event-bug) 12b877906bSopenharmony_ci - [Reporting some other library bug](#reporting-some-other-library-bug) 13b877906bSopenharmony_ci - [Reporting a documentation bug](#reporting-a-documentation-bug) 14b877906bSopenharmony_ci - [Reporting a website bug](#reporting-a-website-bug) 15b877906bSopenharmony_ci- [Requesting a feature](#requesting-a-feature) 16b877906bSopenharmony_ci- [Contributing a bug fix](#contributing-a-bug-fix) 17b877906bSopenharmony_ci- [Contributing a feature](#contributing-a-feature) 18b877906bSopenharmony_ci 19b877906bSopenharmony_ci 20b877906bSopenharmony_ci## Asking a question 21b877906bSopenharmony_ci 22b877906bSopenharmony_ciQuestions about how to use GLFW should be asked either in the [support 23b877906bSopenharmony_cisection](https://discourse.glfw.org/c/support) of the forum, under the [Stack 24b877906bSopenharmony_ciOverflow tag](https://stackoverflow.com/questions/tagged/glfw) or [Game 25b877906bSopenharmony_ciDevelopment tag](https://gamedev.stackexchange.com/questions/tagged/glfw) on 26b877906bSopenharmony_ciStack Exchange. 27b877906bSopenharmony_ci 28b877906bSopenharmony_ciQuestions about the design or implementation of GLFW or about future plans 29b877906bSopenharmony_cishould be asked in the [dev section](https://discourse.glfw.org/c/dev) of the 30b877906bSopenharmony_ciforum. Please don't open a GitHub issue to discuss design questions without 31b877906bSopenharmony_cifirst checking with a maintainer. 32b877906bSopenharmony_ci 33b877906bSopenharmony_ci 34b877906bSopenharmony_ci## Reporting a bug 35b877906bSopenharmony_ci 36b877906bSopenharmony_ciIf GLFW is behaving unexpectedly at run-time, start by setting an [error 37b877906bSopenharmony_cicallback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling). 38b877906bSopenharmony_ciGLFW will often tell you the cause of an error via this callback. If it 39b877906bSopenharmony_cidoesn't, that might be a separate bug. 40b877906bSopenharmony_ci 41b877906bSopenharmony_ciIf GLFW is crashing or triggering asserts, make sure that all your object 42b877906bSopenharmony_cihandles and other pointers are valid. 43b877906bSopenharmony_ci 44b877906bSopenharmony_ciFor bugs where it makes sense, a short, self contained example is absolutely 45b877906bSopenharmony_ciinvaluable. Just put it inline in the body text. Note that if the bug is 46b877906bSopenharmony_cireproducible with one of the test programs that come with GLFW, just mention 47b877906bSopenharmony_cithat instead. 48b877906bSopenharmony_ci 49b877906bSopenharmony_ci__Don't worry about adding too much information__. Unimportant information can 50b877906bSopenharmony_cibe abbreviated or removed later, but missing information can stall bug fixing, 51b877906bSopenharmony_ciespecially when your schedule doesn't align with that of the maintainer. 52b877906bSopenharmony_ci 53b877906bSopenharmony_ci__Please provide text as text, not as images__. This includes code, error 54b877906bSopenharmony_cimessages and any other text. Text in images cannot be found by other users 55b877906bSopenharmony_cisearching for the same problem and may have to be re-typed by maintainers when 56b877906bSopenharmony_cidebugging. 57b877906bSopenharmony_ci 58b877906bSopenharmony_ciYou don't need to manually indent your code or other text to quote it with 59b877906bSopenharmony_ciGitHub Markdown; just surround it with triple backticks: 60b877906bSopenharmony_ci 61b877906bSopenharmony_ci ``` 62b877906bSopenharmony_ci Some quoted text. 63b877906bSopenharmony_ci ``` 64b877906bSopenharmony_ci 65b877906bSopenharmony_ciYou can also add syntax highlighting by appending the common file extension: 66b877906bSopenharmony_ci 67b877906bSopenharmony_ci ```c 68b877906bSopenharmony_ci int five(void) 69b877906bSopenharmony_ci { 70b877906bSopenharmony_ci return 5; 71b877906bSopenharmony_ci } 72b877906bSopenharmony_ci ``` 73b877906bSopenharmony_ci 74b877906bSopenharmony_ciThere are issue labels for both platforms and GPU manufacturers, so there is no 75b877906bSopenharmony_cineed to mention these in the subject line. If you do, it will be removed when 76b877906bSopenharmony_cithe issue is labeled. 77b877906bSopenharmony_ci 78b877906bSopenharmony_ciIf your bug is already reported, please add any new information you have, or if 79b877906bSopenharmony_ciit already has everything, give it a :+1:. 80b877906bSopenharmony_ci 81b877906bSopenharmony_ci 82b877906bSopenharmony_ci### Reporting a compile or link bug 83b877906bSopenharmony_ci 84b877906bSopenharmony_ci__Note:__ GLFW needs many system APIs to do its job, which on some platforms 85b877906bSopenharmony_cimeans linking to many system libraries. If you are using GLFW as a static 86b877906bSopenharmony_cilibrary, that means your application needs to link to these in addition to GLFW. 87b877906bSopenharmony_ci 88b877906bSopenharmony_ci__Note:__ Check the [Compiling 89b877906bSopenharmony_ciGLFW](https://www.glfw.org/docs/latest/compile.html) guide and or [Building 90b877906bSopenharmony_ciapplications](https://www.glfw.org/docs/latest/build.html) guide for before 91b877906bSopenharmony_ciopening an issue of this kind. Most issues are caused by a missing package or 92b877906bSopenharmony_cilinker flag. 93b877906bSopenharmony_ci 94b877906bSopenharmony_ciAlways include the __operating system name and version__ (e.g. `Windows 95b877906bSopenharmony_ci7 64-bit` or `Ubuntu 15.10`) and the __compiler name and version__ (e.g. `Visual 96b877906bSopenharmony_ciC++ 2015 Update 2`). If you are using an official release of GLFW, 97b877906bSopenharmony_ciinclude the __GLFW release version__ (e.g. `3.1.2`), otherwise include the 98b877906bSopenharmony_ci__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. 99b877906bSopenharmony_ci 100b877906bSopenharmony_ciPlease also include the __complete build log__ from your compiler and linker, 101b877906bSopenharmony_cieven if it's long. It can always be shortened later, if necessary. 102b877906bSopenharmony_ci 103b877906bSopenharmony_ci 104b877906bSopenharmony_ci#### Quick template 105b877906bSopenharmony_ci 106b877906bSopenharmony_ci``` 107b877906bSopenharmony_ciOS and version: 108b877906bSopenharmony_ciCompiler version: 109b877906bSopenharmony_ciRelease or commit: 110b877906bSopenharmony_ciBuild log: 111b877906bSopenharmony_ci``` 112b877906bSopenharmony_ci 113b877906bSopenharmony_ci 114b877906bSopenharmony_ci### Reporting a segfault or other crash bug 115b877906bSopenharmony_ci 116b877906bSopenharmony_ciAlways include the __operating system name and version__ (e.g. `Windows 117b877906bSopenharmony_ci7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, 118b877906bSopenharmony_ciinclude the __GLFW release version__ (e.g. `3.1.2`), otherwise include the 119b877906bSopenharmony_ci__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. 120b877906bSopenharmony_ci 121b877906bSopenharmony_ciPlease also include any __error messages__ provided to your application via the 122b877906bSopenharmony_ci[error 123b877906bSopenharmony_cicallback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and 124b877906bSopenharmony_cithe __full call stack__ of the crash, or if the crash does not occur in debug 125b877906bSopenharmony_cimode, mention that instead. 126b877906bSopenharmony_ci 127b877906bSopenharmony_ci 128b877906bSopenharmony_ci#### Quick template 129b877906bSopenharmony_ci 130b877906bSopenharmony_ci``` 131b877906bSopenharmony_ciOS and version: 132b877906bSopenharmony_ciRelease or commit: 133b877906bSopenharmony_ciError messages: 134b877906bSopenharmony_ciCall stack: 135b877906bSopenharmony_ci``` 136b877906bSopenharmony_ci 137b877906bSopenharmony_ci 138b877906bSopenharmony_ci### Reporting a context creation bug 139b877906bSopenharmony_ci 140b877906bSopenharmony_ci__Note:__ Windows ships with graphics drivers that do not support OpenGL. If 141b877906bSopenharmony_ciGLFW says that your machine lacks support for OpenGL, it very likely does. 142b877906bSopenharmony_ciInstall drivers from the computer manufacturer or graphics card manufacturer 143b877906bSopenharmony_ci([Nvidia](https://www.geforce.com/drivers), 144b877906bSopenharmony_ci[AMD](https://www.amd.com/en/support), 145b877906bSopenharmony_ci[Intel](https://www-ssl.intel.com/content/www/us/en/support/detect.html)) to 146b877906bSopenharmony_cifix this. 147b877906bSopenharmony_ci 148b877906bSopenharmony_ci__Note:__ AMD only supports OpenGL ES on Windows via EGL. See the 149b877906bSopenharmony_ci[GLFW\_CONTEXT\_CREATION\_API](https://www.glfw.org/docs/latest/window_guide.html#window_hints_ctx) 150b877906bSopenharmony_cihint for how to select EGL. 151b877906bSopenharmony_ci 152b877906bSopenharmony_ciPlease verify that context creation also fails with the `glfwinfo` tool before 153b877906bSopenharmony_cireporting it as a bug. This tool is included in the GLFW source tree as 154b877906bSopenharmony_ci`tests/glfwinfo.c` and is built along with the library. It has switches for all 155b877906bSopenharmony_ciGLFW context and framebuffer hints. Run `glfwinfo -h` for a complete list. 156b877906bSopenharmony_ci 157b877906bSopenharmony_ciAlways include the __operating system name and version__ (e.g. `Windows 158b877906bSopenharmony_ci7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, 159b877906bSopenharmony_ciinclude the __GLFW release version__ (e.g. `3.1.2`), otherwise include the 160b877906bSopenharmony_ci__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. 161b877906bSopenharmony_ci 162b877906bSopenharmony_ciIf you are running your program in a virtual machine, please mention this and 163b877906bSopenharmony_ciinclude the __VM name and version__ (e.g. `VirtualBox 5.1`). 164b877906bSopenharmony_ci 165b877906bSopenharmony_ciPlease also include the __GLFW version string__ (`3.2.0 X11 EGL clock_gettime 166b877906bSopenharmony_ci/dev/js`), as described 167b877906bSopenharmony_ci[here](https://www.glfw.org/docs/latest/intro.html#intro_version_string), the 168b877906bSopenharmony_ci__GPU model and driver version__ (e.g. `GeForce GTX660 with 352.79`), and the 169b877906bSopenharmony_ci__output of `glfwinfo`__ (with switches matching any hints you set in your 170b877906bSopenharmony_cicode) when reporting this kind of bug. If this tool doesn't run on the machine, 171b877906bSopenharmony_cimention that instead. 172b877906bSopenharmony_ci 173b877906bSopenharmony_ci 174b877906bSopenharmony_ci#### Quick template 175b877906bSopenharmony_ci 176b877906bSopenharmony_ci``` 177b877906bSopenharmony_ciOS and version: 178b877906bSopenharmony_ciGPU and driver: 179b877906bSopenharmony_ciRelease or commit: 180b877906bSopenharmony_ciVersion string: 181b877906bSopenharmony_ciglfwinfo output: 182b877906bSopenharmony_ci``` 183b877906bSopenharmony_ci 184b877906bSopenharmony_ci 185b877906bSopenharmony_ci### Reporting a monitor or video mode bug 186b877906bSopenharmony_ci 187b877906bSopenharmony_ci__Note:__ On headless systems on some platforms, no monitors are reported. This 188b877906bSopenharmony_cicauses glfwGetPrimaryMonitor to return `NULL`, which not all applications are 189b877906bSopenharmony_ciprepared for. 190b877906bSopenharmony_ci 191b877906bSopenharmony_ci__Note:__ Some third-party tools report more video modes than are approved of 192b877906bSopenharmony_ciby the OS. For safety and compatibility, GLFW only reports video modes the OS 193b877906bSopenharmony_ciwants programs to use. This is not a bug. 194b877906bSopenharmony_ci 195b877906bSopenharmony_ciThe `monitors` tool is included in the GLFW source tree as `tests/monitors.c` 196b877906bSopenharmony_ciand is built along with the library. It lists all information GLFW provides 197b877906bSopenharmony_ciabout monitors it detects. 198b877906bSopenharmony_ci 199b877906bSopenharmony_ciAlways include the __operating system name and version__ (e.g. `Windows 200b877906bSopenharmony_ci7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, 201b877906bSopenharmony_ciinclude the __GLFW release version__ (e.g. `3.1.2`), otherwise include the 202b877906bSopenharmony_ci__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. 203b877906bSopenharmony_ci 204b877906bSopenharmony_ciIf you are running your program in a virtual machine, please mention this and 205b877906bSopenharmony_ciinclude the __VM name and version__ (e.g. `VirtualBox 5.1`). 206b877906bSopenharmony_ci 207b877906bSopenharmony_ciPlease also include any __error messages__ provided to your application via the 208b877906bSopenharmony_ci[error 209b877906bSopenharmony_cicallback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and 210b877906bSopenharmony_cithe __output of `monitors`__ when reporting this kind of bug. If this tool 211b877906bSopenharmony_cidoesn't run on the machine, mention this instead. 212b877906bSopenharmony_ci 213b877906bSopenharmony_ci 214b877906bSopenharmony_ci#### Quick template 215b877906bSopenharmony_ci 216b877906bSopenharmony_ci``` 217b877906bSopenharmony_ciOS and version: 218b877906bSopenharmony_ciRelease or commit: 219b877906bSopenharmony_ciError messages: 220b877906bSopenharmony_cimonitors output: 221b877906bSopenharmony_ci``` 222b877906bSopenharmony_ci 223b877906bSopenharmony_ci 224b877906bSopenharmony_ci### Reporting a window, input or event bug 225b877906bSopenharmony_ci 226b877906bSopenharmony_ci__Note:__ The exact ordering of related window events will sometimes differ. 227b877906bSopenharmony_ci 228b877906bSopenharmony_ci__Note:__ Window moving and resizing (by the user) will block the main thread on 229b877906bSopenharmony_cisome platforms. This is not a bug. Set a [refresh 230b877906bSopenharmony_cicallback](https://www.glfw.org/docs/latest/window.html#window_refresh) if you 231b877906bSopenharmony_ciwant to keep the window contents updated during a move or size operation. 232b877906bSopenharmony_ci 233b877906bSopenharmony_ciThe `events` tool is included in the GLFW source tree as `tests/events.c` and is 234b877906bSopenharmony_cibuilt along with the library. It prints all information provided to every 235b877906bSopenharmony_cicallback supported by GLFW as events occur. Each event is listed with the time 236b877906bSopenharmony_ciand a unique number to make discussions about event logs easier. The tool has 237b877906bSopenharmony_cicommand-line options for creating multiple windows and full screen windows. 238b877906bSopenharmony_ci 239b877906bSopenharmony_ciAlways include the __operating system name and version__ (e.g. `Windows 240b877906bSopenharmony_ci7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, 241b877906bSopenharmony_ciinclude the __GLFW release version__ (e.g. `3.1.2`), otherwise include the 242b877906bSopenharmony_ci__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. 243b877906bSopenharmony_ci 244b877906bSopenharmony_ciIf you are running your program in a virtual machine, please mention this and 245b877906bSopenharmony_ciinclude the __VM name and version__ (e.g. `VirtualBox 5.1`). 246b877906bSopenharmony_ci 247b877906bSopenharmony_ciPlease also include any __error messages__ provided to your application via the 248b877906bSopenharmony_ci[error 249b877906bSopenharmony_cicallback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and 250b877906bSopenharmony_ciif relevant, the __output of `events`__ when reporting this kind of bug. If 251b877906bSopenharmony_cithis tool doesn't run on the machine, mention this instead. 252b877906bSopenharmony_ci 253b877906bSopenharmony_ci__X11:__ If possible, please include what desktop environment (e.g. GNOME, 254b877906bSopenharmony_ciUnity, KDE) and/or window manager (e.g. Openbox, dwm, Window Maker) you are 255b877906bSopenharmony_cirunning. If the bug is related to keyboard input, please include any input 256b877906bSopenharmony_cimethod (e.g. ibus, SCIM) you are using. 257b877906bSopenharmony_ci 258b877906bSopenharmony_ci 259b877906bSopenharmony_ci#### Quick template 260b877906bSopenharmony_ci 261b877906bSopenharmony_ci``` 262b877906bSopenharmony_ciOS and version: 263b877906bSopenharmony_ciRelease or commit: 264b877906bSopenharmony_ciError messages: 265b877906bSopenharmony_cievents output: 266b877906bSopenharmony_ci``` 267b877906bSopenharmony_ci 268b877906bSopenharmony_ci 269b877906bSopenharmony_ci### Reporting some other library bug 270b877906bSopenharmony_ci 271b877906bSopenharmony_ciAlways include the __operating system name and version__ (e.g. `Windows 272b877906bSopenharmony_ci7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, 273b877906bSopenharmony_ciinclude the __GLFW release version__ (e.g. `3.1.2`), otherwise include the 274b877906bSopenharmony_ci__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. 275b877906bSopenharmony_ci 276b877906bSopenharmony_ciPlease also include any __error messages__ provided to your application via the 277b877906bSopenharmony_ci[error 278b877906bSopenharmony_cicallback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling), if 279b877906bSopenharmony_cirelevant. 280b877906bSopenharmony_ci 281b877906bSopenharmony_ci 282b877906bSopenharmony_ci#### Quick template 283b877906bSopenharmony_ci 284b877906bSopenharmony_ci``` 285b877906bSopenharmony_ciOS and version: 286b877906bSopenharmony_ciRelease or commit: 287b877906bSopenharmony_ciError messages: 288b877906bSopenharmony_ci``` 289b877906bSopenharmony_ci 290b877906bSopenharmony_ci 291b877906bSopenharmony_ci### Reporting a documentation bug 292b877906bSopenharmony_ci 293b877906bSopenharmony_ciIf you found a bug in the documentation, including this file, then it's fine to 294b877906bSopenharmony_cijust link to that web page or mention that source file. You don't need to match 295b877906bSopenharmony_cithe source to the output or vice versa. 296b877906bSopenharmony_ci 297b877906bSopenharmony_ci 298b877906bSopenharmony_ci### Reporting a website bug 299b877906bSopenharmony_ci 300b877906bSopenharmony_ciIf the bug is in the documentation (anything under `/docs/`) then please see the 301b877906bSopenharmony_cisection above. Bugs in the rest of the site are reported to the [website 302b877906bSopenharmony_cisource repository](https://github.com/glfw/website/issues). 303b877906bSopenharmony_ci 304b877906bSopenharmony_ci 305b877906bSopenharmony_ci## Requesting a feature 306b877906bSopenharmony_ci 307b877906bSopenharmony_ciPlease explain why you need the feature and how you intend to use it. If you 308b877906bSopenharmony_cihave a specific API design in mind, please add that as well. If you have or are 309b877906bSopenharmony_ciplanning to write code for the feature, see the section below. 310b877906bSopenharmony_ci 311b877906bSopenharmony_ciIf there already is a request for the feature you need, add your specific use 312b877906bSopenharmony_cicase unless it is already mentioned. If it is, give it a :+1:. 313b877906bSopenharmony_ci 314b877906bSopenharmony_ci 315b877906bSopenharmony_ci## Contributing a bug fix 316b877906bSopenharmony_ci 317b877906bSopenharmony_ci__Note:__ You must have all necessary [intellectual 318b877906bSopenharmony_ciproperty rights](https://en.wikipedia.org/wiki/Intellectual_property) to any 319b877906bSopenharmony_cicode you contribute. If you did not write the code yourself, you must explain 320b877906bSopenharmony_ciwhere it came from and under what license you received it. Even code using the 321b877906bSopenharmony_cisame license as GLFW may not be copied without attribution. 322b877906bSopenharmony_ci 323b877906bSopenharmony_ci__There is no preferred patch size__. A one character fix is just as welcome as 324b877906bSopenharmony_cia thousand line one, if that is the appropriate size for the fix. 325b877906bSopenharmony_ci 326b877906bSopenharmony_ciIn addition to the code, a complete bug fix includes: 327b877906bSopenharmony_ci 328b877906bSopenharmony_ci- Change log entry in `README.md`, describing the incorrect behavior 329b877906bSopenharmony_ci- Credits entries in `CONTRIBUTORS.md` for all authors of the bug fix 330b877906bSopenharmony_ci 331b877906bSopenharmony_ciBug fixes will not be rejected because they don't include all the above parts, 332b877906bSopenharmony_cibut please keep in mind that maintainer time is finite and that there are many 333b877906bSopenharmony_ciother bugs and features to work on. 334b877906bSopenharmony_ci 335b877906bSopenharmony_ciIf the patch fixes a bug introduced after the last release, it should not get 336b877906bSopenharmony_cia change log entry. 337b877906bSopenharmony_ci 338b877906bSopenharmony_ciIf you haven't already, read the excellent article [How to Write a Git Commit 339b877906bSopenharmony_ciMessage](https://chris.beams.io/posts/git-commit/). 340b877906bSopenharmony_ci 341b877906bSopenharmony_ci 342b877906bSopenharmony_ci## Contributing a feature 343b877906bSopenharmony_ci 344b877906bSopenharmony_ci__Note:__ You must have all necessary rights to any code you contribute. If you 345b877906bSopenharmony_cidid not write the code yourself, you must explain where it came from and under 346b877906bSopenharmony_ciwhat license. Even code using the same license as GLFW may not be copied 347b877906bSopenharmony_ciwithout attribution. 348b877906bSopenharmony_ci 349b877906bSopenharmony_ci__Note:__ If you haven't already implemented the feature, check first if there 350b877906bSopenharmony_cialready is an open issue for it and if it's already being developed in an 351b877906bSopenharmony_ci[experimental branch](https://github.com/glfw/glfw/branches/all). 352b877906bSopenharmony_ci 353b877906bSopenharmony_ci__There is no preferred patch size__. A one-character change is just as welcome 354b877906bSopenharmony_cias one adding a thousand lines, if that is the appropriate size for the 355b877906bSopenharmony_cifeature. 356b877906bSopenharmony_ci 357b877906bSopenharmony_ciIn addition to the code, a complete feature includes: 358b877906bSopenharmony_ci 359b877906bSopenharmony_ci- Change log entry in `README.md`, listing all new symbols 360b877906bSopenharmony_ci- News page entry in `docs/news.md`, briefly describing the feature 361b877906bSopenharmony_ci- Guide documentation, with minimal examples, in the relevant guide in the `docs` folder 362b877906bSopenharmony_ci- Reference documentation, with all applicable tags 363b877906bSopenharmony_ci- Cross-references and mentions in appropriate places 364b877906bSopenharmony_ci- Credits entries in `CONTRIBUTORS.md` for all authors of the feature 365b877906bSopenharmony_ci 366b877906bSopenharmony_ciIf the feature requires platform-specific code, at minimum stubs must be added 367b877906bSopenharmony_cifor the new platform function to all supported and experimental platforms. 368b877906bSopenharmony_ci 369b877906bSopenharmony_ciIf it adds a new callback, support for it must be added to `tests/event.c`. 370b877906bSopenharmony_ci 371b877906bSopenharmony_ciIf it adds a new monitor property, support for it must be added to 372b877906bSopenharmony_ci`tests/monitor.c`. 373b877906bSopenharmony_ci 374b877906bSopenharmony_ciIf it adds a new OpenGL, OpenGL ES or Vulkan option or extension, support 375b877906bSopenharmony_cifor it must be added to `tests/glfwinfo.c` and the behavior of the library when 376b877906bSopenharmony_cithe extension is missing documented in `docs/compat.md`. 377b877906bSopenharmony_ci 378b877906bSopenharmony_ciIf you haven't already, read the excellent article [How to Write a Git Commit 379b877906bSopenharmony_ciMessage](https://chris.beams.io/posts/git-commit/). 380b877906bSopenharmony_ci 381b877906bSopenharmony_ciFeatures will not be rejected because they don't include all the above parts, 382b877906bSopenharmony_cibut please keep in mind that maintainer time is finite and that there are many 383b877906bSopenharmony_ciother features and bugs to work on. 384b877906bSopenharmony_ci 385b877906bSopenharmony_ciPlease also keep in mind that any part of the public API that has been included 386b877906bSopenharmony_ciin a release cannot be changed until the next _major_ version. Features can be 387b877906bSopenharmony_ciadded and existing parts can sometimes be overloaded (in the general sense of 388b877906bSopenharmony_cidoing more things, not in the C++ sense), but code written to the API of one 389b877906bSopenharmony_ciminor release should both compile and run on subsequent minor releases. 390b877906bSopenharmony_ci 391