| # Contributing to Flutter |
| |
| [![Build Status](https://api.cirrus-ci.com/github/flutter/packages.svg)](https://cirrus-ci.com/github/flutter/packages) |
| |
| _See also: [Flutter's code of conduct](https://flutter.io/design-principles/#code-of-conduct)_ |
| |
| ## Things you will need |
| |
| - Linux, Mac OS X, or Windows. |
| - git (used for source version control). |
| - An ssh client (used to authenticate with GitHub). |
| |
| ## Getting the code and configuring your environment |
| |
| - Ensure all the dependencies described in the previous section are installed. |
| - Fork `https://github.com/flutter/packages` into your own GitHub account. If |
| you already have a fork, and are now installing a development environment on |
| a new machine, make sure you've updated your fork so that you don't use stale |
| configuration options from long ago. |
| - If you haven't configured your machine with an SSH key that's known to github, then |
| follow [GitHub's directions](https://help.github.com/articles/generating-ssh-keys/) |
| to generate an SSH key. |
| - `git clone git@github.com:<your_name_here>/packages.git` |
| - `cd packages` |
| - `git remote add upstream git@github.com:flutter/packages.git` (So that you |
| fetch from the master repository, not your clone, when running `git fetch` |
| et al.) |
| |
| ## Running the examples |
| |
| To run an example with a prebuilt binary from the cloud, switch to that |
| example's directory, run `flutter packages get` to make sure its dependencies have been |
| downloaded, and use `flutter run`. Make sure you have a device connected over |
| USB and debugging enabled on that device. For example: |
| |
| - `cd packages/palette_generator/example` |
| - `flutter packages get` |
| - `flutter run` |
| |
| ## Contributing code |
| |
| We gladly accept contributions via GitHub pull requests. |
| |
| Please peruse our |
| [style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo) and |
| [design principles](https://flutter.io/design-principles/) before |
| working on anything non-trivial. These guidelines are intended to |
| keep the code consistent and avoid common pitfalls. |
| |
| To start working on a patch: |
| |
| - `git fetch upstream` |
| - `git checkout upstream/master -b <name_of_your_branch>` |
| - Hack away. |
| - Verify changes with [flutter_plugin_tools](https://pub.dartlang.org/packages/flutter_plugin_tools) |
| |
| ```shell |
| pub global activate flutter_plugin_tools |
| pub global run flutter_plugin_tools format --plugins package_name |
| pub global run flutter_plugin_tools analyze --plugins package_name |
| pub global run flutter_plugin_tools test --plugins package_name |
| ``` |
| |
| _If `pub` is not available, use `flutter pub` instead._ |
| |
| - Check that the package can be published (but don't publish it until it has landed!): |
| |
| ```shell |
| cd packages/package_name; pub publish --dry-run |
| ``` |
| |
| - `git commit -am "<your informative commit message>"` |
| - `git push origin <name_of_your_branch>` |
| |
| To send us a pull request: |
| |
| - `git pull-request` (if you are using [Hub](http://github.com/github/hub/)) or |
| go to `https://github.com/flutter/packages` and click the |
| "Compare & pull request" button |
| |
| Please make sure all your checkins have detailed commit messages explaining the patch. |
| |
| Once you've gotten an LGTM from a project maintainer and once your PR has received |
| the green light from all our automated testing (Travis, AppVeyor, etc), submit your |
| changes to the `master` branch using one of the following methods: |
| |
| - Wait for one of the project maintainers to submit it for you. |
| - Click the green "Merge pull request" button on the GitHub UI of your pull |
| request (requires commit access). |
| |
| You must complete the [Contributor License Agreement](https://cla.developers.google.com/clas). |
| You can do this online, and it only takes a minute. |
| If you've never submitted code before, you must add your (or your |
| organization's) name and contact info to the [AUTHORS](AUTHORS) file. |
| |
| We grant commit access to people who have gained our trust and demonstrated |
| a commitment to Flutter. |