summaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-12 22:12:02 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-12 22:12:02 +0300
commit94c5e361fbb229b0cd6853e2102a7d95f1f358b3 (patch)
tree3c0f11af9dcb84dac8067a31a6979acd6dd56fbf /CONTRIBUTING.md
parent08dc9047098d6d96791024ac7d8f5837633673ef (diff)
better public interface and doxygen
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md39
1 files changed, 39 insertions, 0 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..88674ca
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,39 @@
+# Contributing
+
+YASL focuses on desktop surfaces for applications that own their renderer.
+Read the [API policy](docs/api-policy.md) and [application guide](docs/guide.md)
+before changing public behavior. Keep backend details in native extensions and
+make common operations usable through the portable headers.
+
+For a bug report, include the revision, operating system, selected backend from
+`yasl_display_backend()`, capability mask, compiler, build options, reproduction
+steps, and a small example if possible. For input issues include the relevant
+event fields, layout/device/driver, and whether the issue occurs on another
+backend. Report observations separately from expected behavior.
+
+Build and test with:
+
+```sh
+meson setup build
+meson compile -C build
+meson test -C build --print-errorlogs
+```
+
+See [testing](docs/testing.md) for isolated Linux integration tests, sanitizer
+builds, and native tablet tests. Changes to shared behavior need both backend
+configurations checked. Cocoa changes need a macOS desktop build/test; Linux
+success alone does not validate them. Keep changes focused and describe any
+platforms that were not exercised.
+
+Document public behavior in the installed header first: argument validity,
+units, ownership/lifetime, return/error behavior, thread requirements, callback
+rules, and unsupported results. Update guides/examples when the workflow
+changes. Use zero-initialized specs and check fallible operations in examples.
+Build the reference with `doxygen Doxyfile`; warnings are errors. Do not edit
+vendored generated protocol files for unrelated changes.
+
+Use the existing C style and `yasl_`/`YASL_` public names. Run the tests relevant
+to the changed behavior, including shared exports and public C/C++ compilation.
+For a pull request, explain the observable problem, resulting behavior, and
+validation, including any native tests still needed. Contributions use the
+project's MIT license.