Thank you for your interest in contributing to Emblem! Please review this guide for important information before contributing to the project.
- Contributing guide
Contributions to this project must be accompanied by a Contributor License Agreement (CLA). You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project. Head over to https://cla.developers.google.com/ to see your current agreements on file or to sign a new one.
You generally only need to submit a CLA once, so if you've already submitted one (even if it was for a different project), you probably don't need to do it again.
This project follows Google's Open Source Community Guidelines as well as the included Code of Conduct.
Contributors can browse issues labeled
Help
Wanted.
Issues labeled
Good First
Issues
are recommended for new contributors.
We welcome all contributors to open GitHub issues in the repository for bugs, feature requests, and issues. Please use the provided issue templates when submitting issues and include log files and error output when applicable.
When submitting a PR, please provide a summary in the PR description of what changes are being made and the expected impact. Be sure to include any GitHub issues associated with the request and any other context that will be helpful for review.
All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult GitHub Help for more information on using pull requests.
We recommend making suggestions to a Pull Request to collaboratively fix problems.
We represent business requirements as "User Journeys". Each user journey may represent a new use case for the application, an operational requirement for the architecture, or a demo requirement for how this application is used as a learning resource.
Journeys should be created via the User Journey Proposal template.
For more incremental changes, please open a feature request. Referencing an existing User Journey is helpful in considering how it fits project scope.
The first implementation step for any API change is to send a PR to modify the OpenAPI description.
All pull requests are subject to the following automated checks where applicable:
- cla/google: Ensure Google's Contributor License Agreement has been met for the proposed change.
- header-check: Ensure all applicable files have copyright headers.
- style-terraform: Runs
terraform fmt
on all Terraform configuration. - style-python: Runs
black
on all python code. - block-merge: Blocks merging PRs that
have the
do not merge
label, or a label containing the word "needs
". - auto-label: Adds PR labels based on PR title and changed files
Significant changes to the architecture, developer experience, or dependencies involve making critical decisions about future design needs.
As the project evolves, we capture these key decisions in architectural decision records. These decision records facilitate future engineering and provide developers with valuable historical context around some of the major technical components of Emblem.
See docs/decisions
for more information.
Whether it's a code review, a static analysis outcome, or an error message in the app, our goal is to enable contributor and user success.
- Warnings & errors should provide context, suggest next steps, and provide direct access to more details. (For example, link to build logs.)
- When a warning or error has a generally agreed fix or next step, point the way or suggest the fix. (For example, linting checks on a PR should propose the fixes to correct the code formatting.)
If you plan to automate codebase quality checks, consider using googleapis/code-suggester to suggest changes. Minimizing developer follow-up action is helpful!
If no Google Cloud resources are needed, use GitHub Actions to drive automation. Otherwise use Cloud Build (decision).
Infrastructure (including test fixtures) should be managed automatically. This should be by Terraform where possible, and by custom scripts where necessary. (decision) However, some cases exist where resources cannot be managed automatically. In those cases, Emblem allows for manual resource management (decision).