diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index e8c380af966..34d09dadf4e 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -9,12 +9,13 @@
- [Submission Guidelines](#submit)
## Code of Conduct
-Help us keep AngularJS open and inclusive.
-
-Please read and follow our
+Please help us keep AngularJS Material open and inclusive by reading and following our
[Code of Conduct](https://github.com/angular/code-of-conduct/blob/master/CODE_OF_CONDUCT.md).
-
+We are care deeply about our inclusive community and diverse group of members. As part of this,
+we do take time away from development to enforce this policy through interventions in heated
+discussions, one on one discussions to explain the policy to violators, and bans for repeat
+violators.
## Have a Question, Problem, or Idea?
@@ -23,26 +24,28 @@ If you have questions or ideas regarding AngularJS Material, please direct these
Otherwise, do you:
-- [Found a Bug ?](#bug)
-- [Want a Feature ?](#feature)
+- [Want to report a Bug?](#bug)
+- [Want to request an Enhancement?](#feature)
-#### 1. Found a Bug or Issue?
+#### 1. Want to report a Bug or Issue?
If you find a bug in the source code or a mistake in the documentation, we recommend that you first
-review the [Online Documentation](http://material.angularjs.org/).
+review the latest `master` version of the [Online Documentation](https://material.angularjs.org/HEAD/)
+and use one of the Demos to create a CodePen that reproduces the issue.
-Otherwise you can help us improve by submitting an issue to our
-[GitHub Repository](https://github.com/angular/material/issues/new). Even better you can submit a
-**Pull Request** with a fix. Your custom changes can be crafted in a repository fork and submitted
+If the issue can be reproduced in the latest `master` version, you can help us by submitting an issue
+to our [GitHub Repository](https://github.com/angular/material/issues/new). After the issue is triaged
+(labels are applied to it), we invite you to submit a **Pull Request** with a proposed fix.
+Your custom changes can be crafted in a repository fork and submitted
to the [GitHub Repository](https://github.com/angular/material/compare) as a Pull Request.
-> **Important: Please review the [Submission Guidelines](#submit) below, before contributing to the
- project**.
+**Important**: Please review the [Submission Guidelines](#submit) below, before contributing to the
+ project.
-#### 2. Want a Feature?
-You can request a new feature by
-[submitting an issue](https://github.com/angular/material/issues/new). If you would like to
-implement a new feature then consider what kind of change it is:
+#### 2. Want to request an Enhancement?
+You can request an enhancement by
+[submitting an issue](https://github.com/angular/material/issues/new). After an issue is submitted,
+if you would like to implement an enhancement then consider what kind of change it is:
* **Major Changes** that you wish to contribute to the project should be discussed first on our
[AngularJS Material Forum](https://groups.google.com/forum/#!forum/ngmaterial), so that we can better
@@ -52,81 +55,64 @@ implement a new feature then consider what kind of change it is:
[GitHub Repository](https://github.com/angular/material/compare) as a Pull Request.
## Issue Guidelines
+Please note, this project is mature and stable with thousands of projects depending upon it.
-Please note, this project is still in an early beta.
-
-We're not actively reviewing unsolicited PRs from the community, although we welcome your feature
-requests, doc corrections, and issue reports. If you're thinking of contributing code or docs to the
+We welcome your enhancement requests, doc improvements, and issue reports.
+However, we are not accepting major feature requests at this time.
+
+If you're thinking of contributing code or documentation to the
project, please review [Submitting Pull Requests](#submitpr) before beginning any work.
#### Submitting an Issue
-Before you submit your issue,
+Before you submit an issue,
**[search](https://github.com/angular/material/issues?q=is%3Aissue+is%3Aopen)** the issues archive;
-maybe your question was already answered. If your issue appears to be a bug, and hasn't been
-reported, open a new issue.
+maybe the issue has already been submitted or considered. If the issue appears to be a bug,
+and hasn't been reported, open a [new issue](https://github.com/angular/material/issues/new).
-> Do not report duplicate issues; help us maximize the effort we can spend fixing issues and
-adding new features.
+> Please **do not report duplicate issues**; help us maximize the effort we can spend fixing
+issues and adding enhancements.
Providing the following information will increase the chances of your issue being dealt with
quickly:
-* **Issue Title** - provide a concise issue title prefixed with a lower camelCase name of the
- associated target or component (if any): `: `.
+* **Issue Title** - provide a concise issue title prefixed with a snake-case name of the
+ associated service or component (if any): `: `.
+ Adding the `md-` prefix should be avoided.
> e.g.
- > * mdSideNav: Adding swipe functionality [#35](https://github.com/angular/material/issues/35)
- > * mdTextFloat: does not set required/ng-required
- [#847](https://github.com/angular/material/issues/847)
-
-* **Overview of the Issue** - if an error is being thrown, a non-minified stack trace helps.
-
-* **AngularJS Material Version** - check the header of your `angular-material.js` file to determine
- your specific version #.
-
-```js
-/*!
- * AngularJS Material Design
- * https://github.com/angular/material
- * @license MIT
- * v0.6.0-rc1-master-57f10f7
- */
- ```
-* **Browsers and Operating System** - is this a problem with all browsers or only IE?
-* **Reproduce the Error** - provide a live example (using [CodePen](http://codepen.io/),
- [Plunker](http://plnkr.co/), [JSFiddle](http://jsfiddle.net/)).
-* **Related Issues** - has a similar issue been reported before?
+ > * menu-bar: does not support dark mode themes [#11238](https://github.com/angular/material/issues/11238)
+ > * tooltip: memory leak on destroy [#11133](https://github.com/angular/material/issues/11133)
+
+* **Complete the full Issue Template** - GitHub now supports issue templates and AngularJS Material
+ provides one to make submitting an issue with all of the required information more straightforward.
+
* **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be
- causing the problem (line of code or commit).
-Here are two examples of well-defined issues:
- - https://github.com/angular/material/issues/629
- - https://github.com/angular/material/issues/277
+ causing the problem (line of code or commit).
#### Submitting Pull Requests
-**Important**: With the exception of minor bugs and doc fixes, we are not actively reviewing
-unsolicited PRs to AngularJS Material.
+**Important**: We are not accepting major feature requests or PRs that contain major new features
+ or breaking changes at this time.
Please check with us via [the discussion forum](https://groups.google.com/forum/#!forum/ngmaterial)
-before investing significant effort in a planned Pull Request submission; it's likely that we are already
-working on a related PR.
+before investing significant effort in a planned Pull Request submission; it's possible that we are
+already working on a related PR or have decided that the enhancement does not belong in the core
+AngularJS Material project.
-* All contributions must be consistent with the AngularJS Material coding conventions. See the
- [Coding Guidelines](../docs/guides/CODING.md)
-* Submit proposed changes or additions as GitHub pull requests. See the
- [Pull Request Guidelines](../docs/guides/PULL_REQUESTS.md)
+* All contributions must be consistent with the AngularJS Material [Coding Conventions](../docs/guides/CODING.md).
+* Submit proposed changes or additions as GitHub pull requests that follow the
+ [Pull Request Guidelines](../docs/guides/PULL_REQUESTS.md).
## Git Commit Guidelines
We have very precise rules over how our git commit messages can be formatted. This leads to **more
-readable messages** that are easy to follow when looking through the **project history**. It is
-important to note that we use the git commit messages to **generate** the AngularJS Material
-[Changelog](../../CHANGELOG.md) document.
+readable messages** that are easy to follow when looking through the **project history**.
-> A detailed explanation of guidelines and conventions can be found in this
- [document](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#).
+It is important to note that we use the git commit messages to **generate** the AngularJS Material
+[CHANGELOG](../../CHANGELOG.md) document. Improperly formatted commit messages may result in your
+change not appearing in the CHANGELOG of the next release.
### Commit Message Format
Each commit message consists of a **header**, a **body** and a **footer**. The header has a special
@@ -141,7 +127,7 @@ format that includes a **type**, a **scope** and a **subject**:
```
> Any line of the commit message cannot be longer 100 characters!
- This allows the message to be easier to read on github as well as in various git tools.
+ This allows the message to be easier to read on GitHub as well as in various Git tools.
##### Type
Must be one of the following:
@@ -158,10 +144,14 @@ Must be one of the following:
generation
##### Scope
-The scope could be anything specifying the place of the commit change.
+The scope could be anything that helps specifying the scope (or feature) that is changing.
+
+Examples
+- select(multiple):
+- dialog(alert):
##### Subject
-The subject contains succinct description of the change:
+The subject contains a succinct description of the change:
* use the imperative, present tense: "change" not "changed" nor "changes"
* don't capitalize first letter
@@ -173,14 +163,29 @@ The body should include the motivation for the change and contrast this with pre
##### Footer
The footer should contain any information about **Breaking Changes** and is also the place to
-reference GitHub issues that this commit **Closes**.
+reference GitHub issues that this commit **Closes**, **Fixes**, or **Relates to**.
-> Breaking Changes are intended to highlight (in the ChangeLog) changes that will require community
- users to modify their code with this commit.
+> Breaking Changes are intended to be highlighted in the ChangeLog as changes that will require
+ community users to modify their code after updating to a version that contains this commit.
-
+##### Sample Commit messages:
+```text
+fix(autocomplete): don't show the menu panel when readonly
-##### Sample Commit message:
+this could sometimes happen when no value was selected
+
+Fixes #11231
+```
+```text
+feat(chips): trigger ng-change on chip addition/removal
+
+* add test of `ng-change` for `md-chips`
+* add docs regarding `ng-change` for `md-chips` and `md-contact-chips`
+* add demo for ng-change on `md-chips`
+* add demo for ng-change on `md-contact-chips`
+
+Fixes #11161 Fixes #3857
+```
```text
refactor(content): prefix mdContent scroll- attributes
@@ -210,8 +215,6 @@ details on how to implement and submit your fixes, changes, or enhancements to A
This guideline provides details on creating a repository Fork of the AngularJS Material repository
and how to submit Pull Requests.
-
-
## Signing the CLA
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index b8c47514ed2..d72826e5924 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,5 +1,19 @@
-### Bug, feature request, or proposal:
+
+## Bug, enhancement request, or proposal:
+
+
+
+# CodePen and steps to reproduce the issue:
+#### [CodePen Demo](http://codepen.io/team/AngularMaterial/pen/bEGJdd) which demonstrates the issue:
+
+
+#### Detailed Reproduction Steps:
+1.
+1.
### What is the expected behavior?
@@ -7,18 +21,17 @@
### What is the current behavior?
-## CodePen and steps to reproduce the issue:
-##### [CodePen Demo](http://codepen.io/team/AngularMaterial/pen/bEGJdd) which shows your issue:
-##### Detailed Reproduction Steps:
-
### What is the use-case or motivation for changing an existing behavior?
### Which versions of AngularJS, Material, OS, and browsers are affected?
-
-
+- AngularJS:
+- AngularJS Material:
+- OS:
+- Browsers:
+
### Is there anything else we should know? Stack Traces, Screenshots, etc.
-
+
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 7a3fe4e8e6d..e3822a1b84f 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,30 +1,30 @@
+
## PR Checklist
Please check that your PR fulfills the following requirements:
-
- [ ] The commit message follows [our guidelines](https://github.com/angular/material/blob/master/.github/CONTRIBUTING.md#-commit-message-format)
-- [ ] Tests for the changes have been added (for bug fixes / features)
-- [ ] Docs have been added / updated (for bug fixes / features)
-
+- [ ] Tests for the changes have been added or this is not a bug fix / enhancement
+- [ ] Docs have been added, updated, or were not required
## PR Type
What kind of change does this PR introduce?
-
```
[ ] Bugfix
-[ ] Feature
+[ ] Enhancement
+[ ] Documentation content changes
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
-[ ] Documentation content changes
[ ] Infrastructure changes
[ ] Other... Please describe:
```
## What is the current behavior?
-
+
Issue Number:
@@ -36,7 +36,6 @@ Issue Number:
[ ] Yes
[ ] No
```
-
diff --git a/README.md b/README.md
index 9b6e23b7b32..8d382878ac2 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@ Quick Links:
* [Installing](#installing)
-Please note that using AngularJS Material requires the use of **[AngularJS](https://angularjs.org/) 1.3.x** or higher.
+Please note that using AngularJS Material requires the use of **[AngularJS](https://angularjs.org/) 1.4.x** or higher.
AngularJS Material is targeted for the browser versions shown below in the green boxes:

@@ -26,7 +26,7 @@ AngularJS Material is targeted for the browser versions shown below in the green
## Online Documentation and Demos
-
+
- Visit [material.angularjs.org](https://material.angularjs.org/) online to review the API, see the
@@ -151,8 +151,8 @@ when using online tools such as [CodePen](http://codepen.io/), [Plunkr](http://p
```html
-
-
+
+
@@ -164,7 +164,7 @@ when using online tools such as [CodePen](http://codepen.io/), [Plunkr](http://p
-
+
```
@@ -182,10 +182,10 @@ pull directly from the distribution GitHub
-
-
-
-
+
+
+
+
diff --git a/docs/app/js/app.js b/docs/app/js/app.js
index 973ace569d2..3ba23b20d4a 100644
--- a/docs/app/js/app.js
+++ b/docs/app/js/app.js
@@ -240,6 +240,15 @@ function(SERVICES, COMPONENTS, DEMOS, PAGES, $location, $rootScope, $http, $wind
type: 'link'
}
]
+ },
+ {
+ name: 'Performance',
+ type: 'toggle',
+ pages: [{
+ name: 'Internet Explorer',
+ url: 'performance/internet-explorer',
+ type: 'link'
+ }]
}
]
});
diff --git a/docs/app/performance/internet-explorer.md b/docs/app/performance/internet-explorer.md
deleted file mode 100644
index 3d89ba8b7a6..00000000000
--- a/docs/app/performance/internet-explorer.md
+++ /dev/null
@@ -1,122 +0,0 @@
-# Introduction
-
-AngularJS Material is a cutting edge framework, which uses extensively advanced css features. Internet Explorer is known to have performance issues with these features. Some of the notable issues are with Layout calculations, animations and border rendering. In this documentation we will provide a couple of optimizations which could make the performance in Internet Explorer better.
-This document should just be consulted after the angular part of the application was optimized: Reducing the number of watchers, enable production mode, etc.
-
-# Theming
-
-The AngularJS Material theming works by injecting inline styles to the head. The obvious benefit is that the theme can be switched at runtime. Unfortunately these inline styles are a performance burden for Internet Explorer. When switching of themes at runtime are not important, the theming css could be exported to an external file. The following stages should be performed:
-
-* Configure your theme as explained [here](https://material.angularjs.org/latest/Theming/03_configuring_a_theme) - This step is just required when a custom theme is used
-* Run the application in chrome
-* Open the chrome developer tools
-* Execute the following javascript - This copies the theming css to the clipboard
-```javascript
-copy([].slice.call(document.styleSheets)
- .map(e => e.ownerNode)
- .filter(e => e.hasAttribute('md-theme-style'))
- .map(e => e.textContent)
- .join('\n')
-)
-```
-* Paste the content to an external css file and link it to the index.html
-* In the top level angular modules of the application add the following code to disable the style injection:
-```javascript
-angular
- .module('myApp', ['ngMaterial'])
- .config(function($mdThemingProvider) {
- $mdThemingProvider.disableTheming();
-});
-```
-
-
-
-# Directives to use
-
-## Virtual Repeat
-
-One of the greatest issues with Internet Explorer, is the slow layout calculation. The more elements are in the dom, the slower the calculations are.
-This is especially important with ng-repeat.
-Let's take the following [example](http://codepen.io/david-gang/pen/mEeWpq):
-
-```html
-
-
-
-
{{::person.name }}
-
-
-
-
-
-```
-In this example, a list of persons is shown. When a person is clicked, a md-dialog is opened. The opening of the dialog inserts a md-backdrop and a layout calculation of the whole DOM is triggered. The bigger the list gets, the opening of the dialog is slowed down.
-
-The best solution is to keep the DOM small. The list elements which should be in the DOM are just the elements which fit in the viewport at this time.
-This can be achieved by using [Virtual Repeat](https://material.angularjs.org/latest/demo/virtualRepeat)
-
-The [solution](http://codepen.io/david-gang/pen/MeamJy) is very easy and elegant :
-
-```html
-
-
-
-
-
-
{{ person.name }}
-
-
-
-
-
-
-
-```
-The virtual repeat directive just adds to the dom, the visible elements which fits in the viewport. When the view is scrolled the existing elements are reused.
-By this solution, the virtual repeat directive supports real-time scrolling through millions of records (assuming all in-memory).
-The solution works unfortunately just when the height of a single list item is fixed.
-
-
-# Directives to avoid
-
-## Tabs
-
-The [Tabs](https://material.angularjs.org/latest/demo/tabs) directive is very versatile and powerful. This comes at a certain cost of layout calculations. With Intenet Explorer this cost may be too big. An alternative to the Tabs directive could be the [Nav Bar](https://material.angularjs.org/latest/demo/navBar) directive.
-
-Another alternative would be to:
-
-* use a single external content to represent the current select tab content area
-* use Tabs selectedIndex to route or switch the content in the external content area
-
-See the app [Material Adaptive Shrine](https://github.com/angular/material-adaptive/blob/master/shrine/app/src/dashboard/tmpl/dashboard.html#L11-L16).
-
-* previously each tab had a child featuredItem and a productGrid component... this caused huge perf issues.
-* refactor and moved a single external productGrid outside the tabs (aka navBar)
-* uses md-on-select or databinding to update the productGrid content.
-
-
-#Bells and whistles
-
-AngularJS Material comes with all bells and whistles turned on by default. These could be switched off selectively for Internet Explorer.
-
-##Animations
-
-TODO: Add content from #8329
-
-## Ink ripples
-
-The material ripple effects can be turned off using the $mdInkRippleProvider
-
-##Example
-```javascript
-var isIE = window.document.documentMode;
-
-angular
- .module('myApp', ['ngMaterial'])
- .config( function($mdInkRippleProvider) {
- if(isIE) {
- $mdInkRippleProvider.disableInkRipple();
- }
- });
-```
-
diff --git a/docs/content/performance/internet-explorer.md b/docs/content/performance/internet-explorer.md
new file mode 100644
index 00000000000..2397d7a4f44
--- /dev/null
+++ b/docs/content/performance/internet-explorer.md
@@ -0,0 +1,178 @@
+@ngdoc content
+@name Internet Explorer
+@description
+
+# Introduction
+
+AngularJS Material is a cutting edge framework which uses advanced CSS features.
+Internet Explorer is known to have performance issues with some of these features.
+Some of the notable issues are related to layout calculations, animations, and border rendering.
+In this document, we will provide optimizations which can improve performance in
+Internet Explorer.
+
+This document should be consulted after the AngularJS code in an application is optimized:
+1. Reduce the number of watchers
+1. Enable production mode, etc.
+
+# Theming
+
+AngularJS Material theming works by injecting inline styles into the ``. The benefit
+is that the theme can be switched or modified at runtime. Unfortunately these inline styles can
+present a performance burden for Internet Explorer. When switching or modifying themes at runtime
+is not a requirement, the theming CSS can be exported to an external file which can be loaded statically.
+The following steps should be performed:
+
+* Configure your theme as explained [here](Theming/03_configuring_a_theme)
+ - This step is only required when a custom theme is used
+* Run the application in Chrome
+* Open the Chrome DevTools
+* Execute the following javascript - This copies the theming CSS to the clipboard
+
+
+copy([].slice.call(document.styleSheets)
+ .map(e => e.ownerNode)
+ .filter(e => e.hasAttribute('md-theme-style'))
+ .map(e => e.textContent)
+ .join('\n');
+);
+
+
+* Paste the content to a static, external CSS file and link it to the app's `index.html`.
+* In the top level AngularJS modules of the application, add the following code to disable
+ the injection of styles:
+
+
+angular
+ .module('myApp', ['ngMaterial'])
+ .config(function($mdThemingProvider) {
+ $mdThemingProvider.disableTheming();
+});
+
+
+
+
+# Directives that can help
+
+## Virtual Repeat
+
+One of the greatest issues with Internet Explorer, is the slow layout calculation.
+The more elements are in the dom, the slower the calculations are.
+This is especially important with ng-repeat.
+Let's take the following [Example](https://codepen.io/team/AngularMaterial/pen/GdjVvP):
+
+
+
+
+
+
{{::person.name }}
+
+
+
+
+
+
+
+In this example, a list of people is shown. When a person is clicked, a `md-dialog` is opened.
+The opening of the dialog inserts a md-backdrop and a layout calculation of the whole DOM is triggered.
+The bigger the list gets, the opening of the dialog is slowed down.
+
+The best solution is to keep the DOM small. The list elements which should be in the DOM are just the
+elements which fit in the viewport at any one time.
+This can be achieved by using [Virtual Repeat](https://material.angularjs.org/latest/demo/virtualRepeat).
+
+The [solution](https://codepen.io/team/AngularMaterial/pen/yjamqa) is easy and elegant:
+
+
+
+
+
+
+
+
{{ person.name }}
+
+
+
+
+
+
+
+
+
+The virtual repeat directive only adds, to the dom, the elements visible in the viewport.
+When the view is scrolled the existing elements are reused.
+Using this solution, the virtual repeat directive supports real-time scrolling through millions of
+records (assuming all in-memory).
+
+**Caveat**: Virtual Repeat requires the height of all list items to be equal and static.
+This restriction is key to the performance that it provides.
+
+
+# Directives to use with Caution
+
+## Tabs
+
+The [Tabs](https://material.angularjs.org/latest/demo/tabs) directive is capable of some very nice
+animations. This comes at a cost of layout calculations which increase in cost as DOM items are added
+to the content of the tabs. Internet Explorer's layout calculations are slower than other browsers
+when Flexbox is involved. This means that tabs that work fine on Chrome and Firefox, may lag for
+your IE users. The primary alternative to the Tabs directive is the
+[NavBar](https://material.angularjs.org/latest/demo/navBar) directive.
+
+Another alternative is to:
+
+* use a single external content to represent the currently selected tab content area
+* use Tabs selectedIndex to route or switch the content in the external content area
+
+The [Material Adaptive Shrine](https://github.com/angular/material-adaptive/blob/61417580a8c8cfd454364b7f6d16d0a9b22896f4/shrine/app/src/dashboard/tmpl/dashboard.html#L11-L16)
+app has an example of this.
+
+* Previously each tab had a child featuredItem and a productGrid component... this caused perf issues.
+* It was refactored to move to using a single external productGrid outside the tabs (aka navBar)
+* It now uses `md-on-select` or data binding to update the productGrid content.
+
+
+
+# Bells and whistles
+
+AngularJS Material comes with all of the bells and whistles turned on by default.
+These can be switched off selectively for Internet Explorer.
+
+## Gestures
+
+Disabling support for touch gestures across the app can improve performance in IE.
+
+
+var isIE = window.document.documentMode;
+
+angular
+ .module('myApp', ['ngMaterial'])
+ .config( function($mdGestureProvider) {
+ if (isIE) {
+ $mdGestureProvider.disableAll();
+ }
+ });
+
+
+## Ink ripples
+
+The material ink ripple animation effects can be turned off using the `$mdInkRippleProvider`.
+
+### Example
+
+
+var isIE = window.document.documentMode;
+
+angular
+ .module('myApp', ['ngMaterial'])
+ .config( function($mdInkRippleProvider) {
+ if (isIE) {
+ $mdInkRippleProvider.disableInkRipple();
+ }
+ });
+
diff --git a/docs/guides/COMMIT_LEVELS.md b/docs/guides/COMMIT_LEVELS.md
index 84667ca445f..dde9dd2f41b 100644
--- a/docs/guides/COMMIT_LEVELS.md
+++ b/docs/guides/COMMIT_LEVELS.md
@@ -1,10 +1,13 @@
## Understanding the Team Commit Process
-
The AngularJS Material team has a very specific process for change commits.
-Our commit process is intentionally restrictive to (a) support the rapid evolution of AngularJS Material and (b) manage change complexity and coding standards within the framework.
+Our commit process is intentionally restrictive to
+1. Support the evolution of AngularJS Material while avoiding unexpected breaking changes
+1. Manage change complexity and coding standards within the library
-AngularJS Material uses a "Pull Request" process to allow team leaders opportunities to maintain code reviews, ensure sanity checks, encourage coding standards, and provide feedback to the developer.
+AngularJS Material uses a "Pull Request" process to allow team leads opportunities to maintain
+code reviews, ensure sanity checks, encourage coding standards, and provide feedback to help
+contributors learn and improve.
#### General Rules
@@ -19,34 +22,42 @@ AngularJS Material uses a "Pull Request" process to allow team leaders opportuni
* Please include unit tests with all your source (component or core) changes
* All unit tests must have 100% passing before the PR will be accepted/merged.
-> These process guidelines are especially important: our framework features and the team membership is growing rapidly.
-
#### Commit Authorization Rules
-The development team has defined three (3) Github levels of **commit authorization** within [Angular/Material](https://github.com/angular/material/):
+The development team has defined three (3) Github levels of **commit authorization** within
+[AngularJS Material](https://github.com/angular/material/):
-* General:
+* **Contributors**:
* Developers in this group includes any team members not listed under Team Leads or Caretakers below
* For any and all changes, developers must use a feature branch from a fork of the AngularJS Material repository
* Please do not make or submit any changes from the master branch of your fork
* Are not authorized to merge PRs
- * Should not reassign issue or change issue milestones
+ * Should not reassign issues or change milestones
* Should ensure their issue labels are correct
* Should ensure their issues are tested with latest HEAD versions of AngularJS Material
* Should ensure their issues are tested with latest releases of AngularJS (1.5.x, 1.6.x)
-* Team Leads:
+ * Should communicate with the Team Lead when their PRs are submitted or updates from
+ code review are completed
+ * Should direct all questions about the status of presubmit testing to the Team Lead
+* **Team Leads**:
* Includes: [Michael Prentice](https://github.com/splaktar)
* Are not authorized to merge PRs
- * Should assign issues and change issue milestones
+ * Should assign issues and manage milestones
* Should ensure issue labels are correct
* Should review PRs
* Michael Prentice is the primary PR reviewer
* Should confirm Karma tests pass
-* Google Caretakers:
+ * Should request that a Caretaker starts Google presubmit tests when PRs are labeled `merge ready`
+ * Should decide when new releases are built
+* **Google Caretakers**:
* Includes: [Jeremy Elbourn](https://github.com/jelbourn), [Andrew Seguin](https://github.com/andrewseguin), [Joey Perrott](https://github.com/josephperrott), [Tina Yuangao](https://github.com/tinayuangao), [Miles Malerba](https://github.com/mmalerba)
+ * Rotate responsibilities by the week. Each week has a primary and backup Caretaker.
+ * Should start Google presubmit tests for `merge ready` PRs when requested by Team Lead
+ * Should report the status of the presubmit tests to the Team Lead and/or in the PR within 2 days
* Should review PRs
* Should confirm Karma tests pass
* Should squash as needed
* Should ensure the PR is closed when the merge finishes
- * Should create releases
- * Should add release assets to the Google CDN
+ * Should create new releases
+ * Should confirm new release CHANGELOGs with Team Lead
+ * Should create CLs to add release assets to the Google CDN
diff --git a/docs/guides/PULL_REQUESTS.md b/docs/guides/PULL_REQUESTS.md
index 88d54d10215..ce8ee88bc36 100644
--- a/docs/guides/PULL_REQUESTS.md
+++ b/docs/guides/PULL_REQUESTS.md
@@ -34,7 +34,7 @@ Before you submit your pull request consider the following guidelines:
* Build your changes locally to ensure all the tests pass:
```shell
- gulp karma
+ npm run test:full
```
* Push your branch to GitHub:
@@ -50,11 +50,12 @@ Before you submit your pull request consider the following guidelines:
* Re-run the AngularJS Material test suite to ensure tests are still passing.
- * Rebase your branch and force push to your GitHub repository (this will update your Pull Request):
+ * Rebase your branch to **squash your commits** and **force push** to your GitHub repository
+ (this will update your Pull Request):
```shell
git rebase master -i
- git push -f
+ git push -force
```
@@ -69,7 +70,7 @@ That's it... thank you for your contribution!
After your pull request is merged, you can safely delete your branch and pull the changes
from the main (upstream) repository:
-* Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows:
+* Delete the remote branch on GitHub either through a Git UI/IDE or your local shell as follows:
```shell
git push origin --delete wip/my-fix-branch