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