| Contributing to Flutter |
| ======================= |
| |
| [![Build Status](https://api.cirrus-ci.com/github/flutter/flutter.svg)](https://cirrus-ci.org/flutter/flutter) |
| |
| _See also: [Flutter's code of conduct](CODE_OF_CONDUCT.md)_ |
| |
| Welcome |
| ------- |
| |
| We invite you to join our team! Everyone is welcome to contribute code |
| via pull requests, to file issues on GitHub, to help people asking for |
| help on our mailing lists, our chat channels, or on Stack Overflow, to |
| help triage, reproduce, or fix bugs that people have filed, to add to our |
| documentation, or to help out in any other way. |
| |
| We grant commit access (which includes full rights to the issue |
| database, such as being able to edit labels) to people who have gained |
| our trust and demonstrated a commitment to Flutter. For more details |
| see the [Contributor access](https://github.com/flutter/flutter/wiki/Contributor-access) |
| page on our wiki. |
| |
| We communicate primarily over GitHub and on [chat channels](https://github.com/flutter/flutter/wiki/Chat). |
| |
| Helping out in the issue database |
| --------------------------------- |
| |
| If you want to help us triage, you are very welcome to do so! |
| |
| 1. Join the #hackers-triage [chat](https://github.com/flutter/flutter/wiki/Chat) channel. |
| |
| 2. Read [our code of conduct](CODE_OF_CONDUCT.md), which stipulates explicitly |
| that everyone must be gracious, respectful, and professional. If you're helping out |
| with triage, you are representing the Flutter team, and so you want to make sure to |
| make a good impression! |
| |
| 3. Help out as described in our wiki: https://github.com/flutter/flutter/wiki/Triage |
| You won't be able to add labels at first, so instead start by trying to |
| do the other steps, e.g. trying to reproduce the problem and asking for people to |
| provide enough details that you can reproduce the problem, pointing out duplicates, |
| and so on. Chat on the #hackers-triage channel to let us know what you're up to! |
| |
| 4. Familiarize yourself with our |
| [issue hygiene](https://github.com/flutter/flutter/wiki/Issue-hygiene) wiki page, |
| which covers the meanings of some important GitHub labels and |
| milestones. |
| |
| 5. Once you've been doing this for a while, someone will invite you to the flutter-hackers |
| team on GitHub and you'll be able to add labels too. See the |
| [contributor access](https://github.com/flutter/flutter/wiki/Contributor-access) wiki |
| page for details. |
| |
| Developing for Flutter |
| ---------------------- |
| |
| To develop for Flutter, you will eventually need to become familiar |
| with our processes and conventions. This section lists the documents |
| that describe these methodologies. The following list is ordered: you |
| are strongly recommended to go through these documents in the order |
| presented. |
| |
| 1. [Our code of conduct](CODE_OF_CONDUCT.md), which stipulates explicitly |
| that everyone must be gracious, respectful, and professional. This |
| also documents our conflict resolution policy and encourages people |
| to ask questions. |
| |
| 2. [Values](https://github.com/flutter/flutter/wiki/Values), |
| which talks about what we care most about. |
| |
| 3. [Setting up your engine development environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment), |
| which describes the steps you need to configure your computer to |
| work on Flutter's engine. If you only want to write code for the |
| Flutter framework, you can skip this step. Flutter's engine mainly |
| uses C++, Java, and Objective-C. |
| |
| 4. [Setting up your framework development environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Framework-development-environment), |
| which describes the steps you need to configure your computer to |
| work on Flutter's framework. Flutter's framework mainly uses Dart. |
| |
| 5. [Tree hygiene](https://github.com/flutter/flutter/wiki/Tree-hygiene), |
| which covers how to land a PR, how to do code review, how to |
| handle breaking changes, how to handle regressions, and how to |
| handle post-commit test failures. |
| |
| 6. [Issue hygiene](https://github.com/flutter/flutter/wiki/Issue-hygiene), |
| which covers our processes around triaging bugs, escalating high |
| priority bugs, assigning bugs, and our GitHub labels and |
| milestones. |
| |
| 7. [Our style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo), |
| which includes advice for designing APIs for Flutter, and how to |
| format code in the framework. |
| |
| 8. [Flutter design doc template](https://flutter.dev/go/template), |
| which should be used when proposing a new technical design. This is a good |
| practice to do before coding more intricate changes. |
| |
| In addition to the above, there are many pages on [our |
| Wiki](https://github.com/flutter/flutter/wiki/) and an article [Contributing to Flutter: |
| Getting Started](https://medium.com/@ayushbherwani/contributing-to-flutter-getting-started-a0db68cbcd5b) |
| on Medium that may be of interest. For a curated list of pages see the sidebar |
| on the wiki's home page. They are more or less listed in order of importance. |