MODX Evolution is the reason MODX exists and is very important to this project, but the core team is focused on Revolution, not the legacy codebase. We do want to improve things for the MODX community dependent on Evo, by finding a mutually beneficial way to enable those interested to continue Evo development.
For it to work, we’ve provided a set of guidelines and standards for the community contributions below. These are the same standards applied for any contributions, whether from the core team or from the Community.
Ownership of the MODX Evolution Repository
Currently, only a few people have the rights to push to the official MODX Evolution repository on GitHub. This serves as a gateway to the community of contributors to submit their contributions from their forks for review and acceptance before being pushed for permanent inclusion in the official, upstream repository.
With the current workload of the MODX Team, it also serves as a barrier. That must change!
To revitalize Evolution-ary progress, we would like to invite those interested to identify and agree upon a single liaison—an Integration Manager to serve as the gatekeeper to the official Evolution repository. This person would be responsible for reviewing, managing and merging Pull Requests and marshalling related tracker issues, according to MODX contribution rules and standards, and would have push access to the official repository.
This is an incredibly important responsibility, and the person the community decides upon for this role needs to adhere to and enforce the contribution rules and standards.
While the quantity of contributions to Evo are enormous, many unfortunately don’t meet the proposed quality or project standards, as outlined below. Many have some great improvements that could be accepted into the project if they were not combined with a number of other unrelated changes that are not acceptable for one reason or another.
Contribution Rules and Standards
For the last 7+ years, we’ve figured out what works and what doesn’t in managing a large Open Source project. The following outlines the key take aways.
The first, and most important contribution rule at MODX is: one Pull Request per feature or bug. This is the one thing that will do the most to alleviate the Pull Request bottleneck that currently exists in MODX Evolution. Here are the reasons why:
- it is much easier for the Integration Manager to review the code and decide if it should be accepted or rejected
- it is easier to decide or alter where it can best be integrated for the current release cycle(s)
- it is easier to un-apply the change post-haste, and without affecting other features or bug fixes, if a problem is found after the integration has been pushed
In addition, each Pull Request must have a corresponding ticket in the MODX Project Tracker for Evolution. See https://tracker.modx.com/projects/evo/issues for the current open list of issues.
Other MODX contribution standards which reinforce the MODX philosophy include:
- The contribution should be as extensible as possible when implementing feature requests
- The contribution should provide a reasonably seamless upgrade path for existing users of a feature being changed in any way
- The contribution must not break backwards compatibility:
- of core API methods
- of included Extras or their associated API methods
- The contribution should follow MODX Coding Standards as defined here.
- All code contributors (this means the author of the commit, not just the integrator) must sign a CLA as described here.
Finally, new feature contributions in Evo should not significantly increase the challenges in providing a migration path from Evolution to Revolution. Though we do not yet provide a direct service or official tool for doing this, it is something the MODX Team is committed to accomplishing. We also think this will help keep the community better-aligned on key goals, preventing duplicated or other wasted effort where possible for both Evolution and Revolution contributors. Additional resources and standards for MODX community contributions can be found here.
Let’s Get Started, Today
Please take a few minutes to review these standards and processes. We consider these essential for anything with the “MODX” label attached—based on our extensive experience leading the project, integrating contributions, and releasing the product. We’re ready and excited to see Evo reinvigorated, and we look forward to handing over the keys to the Community ASAP.