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](https://google.github.io/styleguide/objcguide.html) (including
  [Objective-C++](https://google.github.io/styleguide/objcguide.html#objective-c))
- [Java](https://google.github.io/styleguide/javaguide.html)

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


### Fuchsia Contributions from Googlers

Googlers contributing to Fuchsia should follow the additional steps at: go/flutter-fuchsia-pr-policy.
