blob: 864eada4213e7cb80900f415291e6a51c95d74e9 [file] [log] [blame] [view]
# Contributing to Zircon
Important: Zircon is under active development. At this time Zircon is
not seeking major changes or new features from new contributors.
However, small bug fixes are encouraged.
Here are some general guidelines for patches to Zircon.
## Process
* Follow the process for Fuchsia patches outlined in
[Contribute changes][contribute-changes].
* Patches are handled through
[Gerrit Code Review][gerrir-code-review]{:.external}.
* Make sure Zircon is buildable for all major targets (`x86-64`, `arm64`)
at every change. Use `fx multi bringup-cq` so that Zircon is buildable.
For more information, see
[Building Zircon for all targets][build-zircon-for-all].
* Avoid breaking the unit tests. Boot Zircon and
[run the tests][run-the-tests] to verify that they're all passing.
* Avoid whitespace or style changes. Especially, do not mix style changes
with patches that contain other changes, as style changes are often
a distraction. Use `fx format-code` to format the code with the
consistent style.
* Avoid changes that touch multiple modules at once if possible. Most changes
should be to a single library, driver, app, and so on.
## Documentation for Zircon
Writing documentation is a great idea and is encouraged:
* Documentation should be in Markdown files.
* Zircon documentation is located in
[`/docs/concepts/kernel`][googlesource-docs].
* Before submitting documentation, make sure that the Markdown renders
correctly.
When editing or adding `syscalls` or `cmdlines`, update the following:
* A list of `syscalls` in [`/docs/reference/syscalls/README.md`][syscall-doc]
* A list of kernel `cmdline` options in
[`/docs/reference/kernel/kernel_cmdline.md`][cmdline-doc].
## Notes
### How to deprecate #define constants
You can create a deprecated `typedef` and have the constant definition
cast to that type. The warning or error that is generated includes the name
of the deprecated `typedef`.
```none {:.devsite-disable-click-to-copy}
typedef int ZX_RESUME_NOT_HANDLED_DEPRECATION __attribute__((deprecated));
#define ZX_RESUME_NOT_HANDLED ((ZX_RESUME_NOT_HANDLED_DEPRECATION)(2))
```
<!-- Reference links -->
[contribute-changes]: /docs/development/source_code/contribute_changes.md
[gerrir-code-review]: https://fuchsia-review.googlesource.com/#/q/project:zircon
[build-zircon-for-all]: /docs/development/kernel/getting_started.md#building_zircon_for_all_targets
[run-the-tests]: /docs/development/testing/testing.md
[googlesource-docs]: /docs/concepts/kernel
[syscall-doc]: /docs/reference/syscalls/README.md
[cmdline-doc]: /docs/reference/kernel/kernel_cmdline.md