Code Contributions

The following topics are included in this guide:

Contribute to Magento 2 code

Use the fork and pull model to contribute to the Magento 2 codebase. This contribution model allows contributors to maintain their own copy of the forked codebase (which can be easily synced with the main copy). The forked repository is then used to submit a request to the base repository to pull a set of changes (hence the phrase pull request).

Contributions can take the form of new components or features, changes to existing features, tests, documentation (such as developer guides, user guides, examples, or specifications), bug fixes, optimizations, or just good suggestions.

The Community Engineering Team reviews all issues and contributions submitted by the community developers. During the review we might require clarifications from the contributor. If there is no response from the contributor in two weeks (14 days) time, the issue is closed.

Often when the Community Engineering Team works on reviewing the suggested changes, we will add a label to the issue to indicate certain information, like the status or who is working the issue. If you’re ever curious what the different labels mean, see the table below for an explanation of each one.

Please refer to Magento Contributor Agreement for detailed information about the License Agreement. All contributors are required to submit a click-through form to agree to the terms.

Questions or enhancement requests?

We use this repository (the Magento 2 GitHub repository) to capture code and documentation issues. We recommend that you post all questions to a question-and-answer site, such as Stack Exchange and the Magento Forums, where Magento community members can quickly provide recommendations and advice.

Submit feature requests or enhancement suggestions to the new Magento 2 Feature Requests and Improvements forum (see details here).

Contribution requirements

  1. Contributions must adhere to Magento coding standards.
  2. Refer to the Magento development team’s Definition of Done. We use these guidelines internally to ensure that we deliver well-tested, well-documented, and solid code. We encourage you to use this as well!
  3. Pull requests (PRs) must be accompanied by a meaningful description of their purpose. Comprehensive descriptions increase the chances that a pull request is merged quickly and without additional clarification requests.
  4. Commits must be accompanied by meaningful commit messages.
  5. PRs that include bug fixes must be accompanied by a step-by-step description of how to reproduce the bug.
  6. PRs that include new logic or new features must be submitted along with:
    • Unit/integration test coverage (we will be releasing more information about writing test coverage in the near future).
    • Proposed documentation updates. Documentation contributions can be submitted here.
  7. For large features or changes, please open an issue and discuss it with us first. This may prevent duplicate or unnecessary effort, and it may gain you some additional contributors.
  8. To report a bug, please open an issue, and follow these guidelines about bugfix issues.

  9. All automated tests must pass successfully (all builds on Travis CI must be green).

Fork a repository

To fork a repository on Github:

  1. Create or log in to your account on GitHub.
  2. Navigate to the Magento 2 repository.
  3. Click Fork at the top right:
    fork a repository

  4. Clone the repo into your development environment and start playing.

Update the fork with the latest changes

As community and Magento writers’ changes are merged to the repository, your fork becames outdated and pull requests might result in conflicts. To see if your fork is outdated, open the fork page in GitHub and if a This branch is NUMBER commits behind magento:2.2-develop. message is displayed at the top of the page. If so, your fork must be updated.

There are two ways to update your fork. The typical way is discussed in GitHub documentation. Make sure to update from the correct branch!

You can also use the GitHub interface to update forks, referred to as a reverse pull request. Though this method does have a downside: it inserts unnecessary information into your fork commit history.

  1. On your fork GitHub page, click New pull request. You should see the following message:

    There isn’t anything to compare. magento:2.2-develop is up to date with all commits from <your fork>:2.2-develop. Try switching the base for your comparison.

  2. Click the base link and then click Create pull request.
  3. Provide a descriptive name for your pull request in the provided field.
  4. Scroll to the bottom of the page and click Merge pull request, then click Confirm Merge.

Check out this video to see the process in action:

Create a pull request

First, check the existing PRs and make sure you are not duplicating others’ work.

To create a pull request:

  1. Create a feature branch for your changes and push those changes to the copy of your repository on GitHub. This is the best way to organize and even update your PR.
  2. In your repository, click Pull requests on the right, and then click New pull request.
  3. Ensure that you are creating a PR to the one of following branches: magento:2.3-develop, magento:2.2-develop or magento:2.1-develop branch. We accept PRs to these branches only.
  4. Review the changes, then click Create pull request. Fill out the form, and click Create pull request again to submit the PR—that’s it!

After submitting your PR, you can head over to the Magento 2 repository’s Pull Requests panel to see your PR. Your PR undergoes automated testing, and if it passes, the Community Engineering Team considers it for inclusion in the Magento 2 core. If some tests fail, please make the corresponding corrections in your code.

Report an issue

If you find a bug in Magento 2 code, you can report it by creating an issue in the Magento 2 repository.

Before creating an issue:

  1. Read the issue reporting guidelines to learn how to create an issue that can be processed in a timely manner.
  2. Check the documentation to make sure the behavior you are reporting is really a bug, not a feature.
  3. Check the existing issues to make sure you are not duplicating somebody’s work.

To add an issue:

  1. In the Magento 2 public repository, click the Issues link on the right.
    the Issues link at the right
  2. Click New issue.
    the New Issue button
  3. Fill in the Title and Issue description.
  4. Click Submit new issue.

Help triage issues

In addition to contributing code, you can help to triage issues. This can include reproducing bug reports or asking for vital information, such as affected versions or instructions to reproduce bugs. If you would like to start triaging issues, one easy way to get started is to subscribe to Magento on CodeTriage.

Labels applied by the Magento team

Refer to the following table for a description of each label. These labels are applied by the Magento development team to community contributed issues and pull requests, to communicate status, impact, or which team is working on it.

Label image Description
Pull Request Resolution Status
the Accept button The pull request has been accepted and will be merged into mainline code.
the Reject button The pull request has been rejected and will not be merged into mainline code. Possible reasons can include but are not limited to: issue has already been fixed in another code contribution, or there is an issue with the code contribution.
the needs update button The Community Engineering Team needs additional information from the reporter to properly prioritize and process the pull request.
Issue Resolution Status
G1 Passed Automatic verification of the issue description successfully passed. Minimum required information is provided (Preconditions, Steps to Reproduce, Actual Result, Expected Result).
G1 Failed Automatic verification of the issue description failed. Minimum required information is not provided (Preconditions, Steps to Reproduce, Actual Result, Expected Result).
G2 Passed The Community Engineering Team has confirmed that this issue contains the minimum required information to reproduce.
G3 Passed The Community Engineering Team has validated and confirmed the issue.
Reproduced on 2.0.x The Community Engineering Team reproduced the issue on latest 2.0.x release.
Reproduced on 2.1.x The Community Engineering Team reproduced the issue on latest 2.1.x release.
Reproduced on 2.2.x The Community Engineering Team reproduced the issue on latest 2.2.x release.
Reproduced on 2.3.x The Community Engineering Team reproduced the issue on latest 2.3.x release.
Fixed in 2.0.x The issues has been fixed in one of the 2.0.x releases or in 2.0-develop branch and will be available with upcoming patch release.
Fixed in 2.1.x The issues has been fixed in one of the 2.1.x releases or in 2.1-develop branch and will be available with upcoming patch release.
Fixed in 2.2.x The issues has been fixed in one of the 2.2.x releases or in 2.2-develop branch and will be available with upcoming patch release.
Fixed in 2.3.x The issues has been fixed in one of the 2.3.x releases or in 2.3-develop branch and will be available with upcoming patch release.
the acknowledged button The Community Engineering Team has created internal ticket.
the needs update button The Community Engineering Team needs additional information from the reporter to properly prioritize and process the issue.
Can Not Reproduce The Community Engineering Team can not reproduced the issue following steps to reproduce.
Non Issue A described behavior in the issue description is valid and shouldn't be changed in Magento code base.