blob: 4a53a730be75b762cc31e7adcf848f3ce503b8e6 [file] [log] [blame] [view]
Adam Barth576795d2015-11-08 21:33:00 -08001Contributing to Flutter
2=======================
3
Greg Spencere60087a2018-08-07 13:41:33 -07004[![Build Status](https://api.cirrus-ci.com/github/flutter/flutter.svg)](https://cirrus-ci.org/flutter/flutter)
Adam Barth576795d2015-11-08 21:33:00 -08005
Ian Hicksoncf2fba72018-11-06 13:41:09 -08006_See also: [Flutter's code of conduct](CODE_OF_CONDUCT.md)_
Ian Hicksoncffe4812016-12-10 21:46:57 -08007
Ian Hickson529d2502018-06-01 12:04:20 -07008Welcome
9-------
10
Ian Hicksoncf2fba72018-11-06 13:41:09 -080011We invite you to join our team! Everyone is welcome to contribute code
12via pull requests, to file issues on GitHub, to help people asking for
Ian Hickson441b3652019-08-20 14:44:01 -070013help on our mailing lists, our chat channels, or on Stack Overflow, to
14help triage, reproduce, or fix bugs that people have filed, to add to our
Ian Hicksoncf2fba72018-11-06 13:41:09 -080015documentation, or to help out in any other way.
Ian Hickson529d2502018-06-01 12:04:20 -070016
Ian Hicksoncf2fba72018-11-06 13:41:09 -080017We grant commit access (which includes full rights to the issue
18database, such as being able to edit labels) to people who have gained
Ian Hickson86dacb22019-08-15 00:07:49 -070019our trust and demonstrated a commitment to Flutter. For more details
20see the [Contributor access](https://github.com/flutter/flutter/wiki/Contributor-access)
21page on our wiki.
Ian Hickson529d2502018-06-01 12:04:20 -070022
Ian Hickson441b3652019-08-20 14:44:01 -070023We communicate primarily over GitHub and on [chat channels](https://github.com/flutter/flutter/wiki/Chat).
Ian Hickson86dacb22019-08-15 00:07:49 -070024
Ian Hickson441b3652019-08-20 14:44:01 -070025Helping out in the issue database
26---------------------------------
Ian Hickson86dacb22019-08-15 00:07:49 -070027
Ian Hickson441b3652019-08-20 14:44:01 -070028If you want to help us triage, you are very welcome to do so!
Ian Hickson86dacb22019-08-15 00:07:49 -070029
Ian Hickson441b3652019-08-20 14:44:01 -0700301. Join the #hackers-triage [chat](https://github.com/flutter/flutter/wiki/Chat) channel.
31
322. Read [our code of conduct](CODE_OF_CONDUCT.md), which stipulates explicitly
33 that everyone must be gracious, respectful, and professional. If you're helping out
34 with triage, you are representing the Flutter team, and so you want to make sure to
35 make a good impression!
Dan Field24f39d42020-01-02 11:47:28 -080036
Ian Hickson441b3652019-08-20 14:44:01 -0700373. Help out as described in our wiki: https://github.com/flutter/flutter/wiki/Triage
38 You won't be able to add labels at first, so instead start by trying to
39 do the other steps, e.g. trying to reproduce the problem and asking for people to
40 provide enough details that you can reproduce the problem, pointing out duplicates,
41 and so on. Chat on the #hackers-triage channel to let us know what you're up to!
Dan Field24f39d42020-01-02 11:47:28 -080042
Ian Hickson441b3652019-08-20 14:44:01 -0700434. Familiarize yourself with our
44 [issue hygiene](https://github.com/flutter/flutter/wiki/Issue-hygiene) wiki page,
45 which covers the meanings of some important GitHub labels and
46 milestones.
Dan Field24f39d42020-01-02 11:47:28 -080047
Ian Hickson441b3652019-08-20 14:44:01 -0700485. Once you've been doing this for a while, someone will invite you to the flutter-hackers
49 team on GitHub and you'll be able to add labels too. See the
50 [contributor access](https://github.com/flutter/flutter/wiki/Contributor-access) wiki
51 page for details.
Ian Hickson529d2502018-06-01 12:04:20 -070052
Ian Hicksoncf2fba72018-11-06 13:41:09 -080053Developing for Flutter
54----------------------
Ian Hickson529d2502018-06-01 12:04:20 -070055
Ian Hicksoncf2fba72018-11-06 13:41:09 -080056To develop for Flutter, you will eventually need to become familiar
57with our processes and conventions. This section lists the documents
58that describe these methodologies. The following list is ordered: you
59are strongly recommended to go through these documents in the order
60presented.
Adam Barth576795d2015-11-08 21:33:00 -080061
Ian Hicksoncf2fba72018-11-06 13:41:09 -0800621. [Our code of conduct](CODE_OF_CONDUCT.md), which stipulates explicitly
63 that everyone must be gracious, respectful, and professional. This
64 also documents our conflict resolution policy and encourages people
65 to ask questions.
Adam Barth576795d2015-11-08 21:33:00 -080066
Ian Hicksoncf2fba72018-11-06 13:41:09 -0800672. [Values](https://github.com/flutter/flutter/wiki/Values),
68 which talks about what we care most about.
Adam Barth576795d2015-11-08 21:33:00 -080069
Ian Hicksoncf2fba72018-11-06 13:41:09 -0800703. [Setting up your engine development environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment),
71 which describes the steps you need to configure your computer to
72 work on Flutter's engine. If you only want to write code for the
Mike Hatch24a12892019-07-28 13:07:21 -060073 Flutter framework, you can skip this step. Flutter's engine mainly
74 uses C++, Java, and Objective-C.
Adam Barth576795d2015-11-08 21:33:00 -080075
Ian Hicksoncf2fba72018-11-06 13:41:09 -0800764. [Setting up your framework development environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Framework-development-environment),
77 which describes the steps you need to configure your computer to
Mike Hatch24a12892019-07-28 13:07:21 -060078 work on Flutter's framework. Flutter's framework mainly uses Dart.
Adam Barth576795d2015-11-08 21:33:00 -080079
Tim Sneath52918972019-04-05 11:39:30 -0700805. [Tree hygiene](https://github.com/flutter/flutter/wiki/Tree-hygiene),
Ian Hicksoncf2fba72018-11-06 13:41:09 -080081 which covers how to land a PR, how to do code review, how to
82 handle breaking changes, how to handle regressions, and how to
83 handle post-commit test failures.
Adam Barth576795d2015-11-08 21:33:00 -080084
Tim Sneath52918972019-04-05 11:39:30 -0700856. [Issue hygiene](https://github.com/flutter/flutter/wiki/Issue-hygiene),
Ian Hicksoncf2fba72018-11-06 13:41:09 -080086 which covers our processes around triaging bugs, escalating high
87 priority bugs, assigning bugs, and our GitHub labels and
88 milestones.
Adam Barth576795d2015-11-08 21:33:00 -080089
Tim Sneath52918972019-04-05 11:39:30 -0700907. [Our style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo),
Ian Hicksoncf2fba72018-11-06 13:41:09 -080091 which includes advice for designing APIs for Flutter, and how to
92 format code in the framework.
Adam Barth576795d2015-11-08 21:33:00 -080093
gaaclarke56e3c0c2019-10-28 15:58:24 -0700948. [Flutter design doc template](https://flutter.dev/go/template),
95 which should be used when proposing a new technical design. This is a good
96 practice to do before coding more intricate changes.
97
Ian Hicksoncf2fba72018-11-06 13:41:09 -080098In addition to the above, there are many pages on [our
99Wiki](https://github.com/flutter/flutter/wiki/) that may be of
100interest. For a curated list of pages see the sidebar on the wiki's
101home page. They are more or less listed in order of importance.