As we, the Community Engineering Team, work together with 3rd party developers on Hackathons and Magento Contribution days, our main goal is to communicate the additional practices required for making changes to core Magento modules. When developers make these changes, they must consider the following:
Have I implemented the feature correctly?
Have I made the proper modular programming decisions?
Will my contribution meet the expectations of the open source community?
Does my code pass the automated testing and static code analysis suites?
Have I followed the guidelines and requirements around backwards compatibility, DoD (definition of done), and M2 Technical Guideline compliance?
This experience sheds light on why core team development is a more careful and deliberate process than what system integrators and 3rd party developers can achieve –
we are responsible for minimizing impact across a wider number and range of sites.
The main reason the Community Engineering team rejects a community Pull Request (PR) or requests additional changes is that the code is not compliant with our Technical Vision and/or Backward Compatibility Policy.
To address these issues, Magento has recently published the following important documents for those who would like to contribute to the Magento 2 codebase or become more familiar with M2 principles and architectural approach:
Each day brings new Magento 2 customizations and integrations. Meanwhile, Magento is developing new features and fixing bugs. The challenge is to both fix existing flaws and keep Magento backward compatible as much as possible. For merchants, the upgrade process must be cost-effective, while extension developers want their extensions to be forward-compatible for as long as possible.
We have a list of prohibited code changes and proposed solutions of what should you do to accomplish your goal if you need to refactor code or create a bug fix. Backwards compatibility should not be an excuse for not doing refactoring. If we will always postpone refactoring, the technical debt will accumulate and system entropy will increase, leading to complication in development and customization. The process of code refactoring can overcome such issues.
All of these issues will be discussed in the open webinar devoted to Versioning and Backward Compatible development for Magento 2. This webinar will take place on May 16, 2017 10:00 AM CDT.