blob: 0ffb52ade03d9d193c781e463dca67d152dc80aa [file] [log] [blame] [view]
Contributing to the Flutter engine
==================================
[![Build Status](https://api.cirrus-ci.com/github/flutter/engine.svg)][build_status]
_See also: [Flutter's code of conduct][code_of_conduct]_
Welcome
-------
For an introduction to contributing to Flutter, see [our contributor
guide][contrib_guide].
For specific instructions regarding building Flutter's engine, see [Setting up
the Engine development environment][engine_dev_setup] on our wiki. Those
instructions are part of the broader onboarding instructions described in the
contributing guide.
### Style
The Flutter engine follows Google style for the languages it uses:
- [C++](https://google.github.io/styleguide/cppguide.html)
- **Note**: The Linux embedding generally follows idiomatic GObject-based C
style. Use of C++ is discouraged in that embedding to avoid creating hybrid
code that feels unfamiliar to either developers used to working with
`GObject` or C++ developers. For example, do not use STL collections or
`std::string`. Exceptions:
- C-style casts are forbidden; use C++ casts.
- Use `nullptr` rather than `NULL`.
- Avoid `#define`; for internal constants use `static constexpr` instead.
- [Objective-C][objc_style] (including [Objective-C++][objcc_style])
- [Java][java_style]
C/C++ and Objective-C/C++ files are formatted with `clang-format`, and GN files
with `gn format`.
[build_status]: https://cirrus-ci.com/github/flutter/engine
[code_of_conduct]: https://github.com/flutter/flutter/blob/master/CODE_OF_CONDUCT.md
[contrib_guide]: https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md
[engine_dev_setup]: https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment
[objc_style]: https://google.github.io/styleguide/objcguide.html
[objcc_style]: https://google.github.io/styleguide/objcguide.html#objective-c
[java_style]: https://google.github.io/styleguide/javaguide.html
### Fuchsia Contributions from Googlers
Googlers contributing to Fuchsia should follow the additional steps at:
go/flutter-fuchsia-pr-policy.