Skip to content

Latest commit

 

History

History
95 lines (71 loc) · 3.1 KB

contributing.md

File metadata and controls

95 lines (71 loc) · 3.1 KB

General Contributing Guidelines

The Material Components contributing policies and procedures can be found in the main Material Components documentation repository’s contributing page.

For larger feature requests we might ask you to write a Design Doc.

To make a contribution, you'll need to be able to build the library from source and run our tests.

Pull Request Process

Because the material-components-android code is stored in two locations (i.e., GitHub and Google), PRs are not directly merged into the repository. Instead, once a PR is complete (i.e., cla signed, CI passing, design reviewed, code reviewed), the PR will be converted to a commit sourced to the original author that is synced into the repository. Even though the PR list shows no merged PRs, we do accept contributions.

Building From Source

Take a look at our instructions on how to build the library from source.

Running Tests

Material Components for Android has JVM tests as well as Emulator tests.

To run the JVM tests, do:

./gradlew test

To run the emulator tests, ensure you have a virtual device set up and do:

./gradlew connectedAndroidTest

Code Conventions

Since we all want to spend more time coding and less time fiddling with whitespace, Material Components for Android uses code conventions and styles to encourage consistency. Code with a consistent style is easier (and less error-prone!) to review, maintain, and understand.

Be consistent

If the style guide is not explicit about a particular situation, the cardinal rule is to be consistent. For example, take a look at the surrounding code and follow its lead, or look for similar cases elsewhere in the codebase.

Java

We follow the Google Java Style Guide.

XML

  • 2 space indentation
  • Resource naming (including IDs) is lowercase_with_underscores
  • Attribute ordering:
    1. xmlns:android
    2. other xmlns:
    3. android:id
    4. style
    5. android:layout_ attributes
    6. android:padding attributes
    7. other android: attributes
    8. app: attributes
    9. tool: attributes

Useful Links