Contributing code as a community member
Code contributions go to the kernel repository se7enxweb/exponential as
GitHub pull requests. The binding rules are in CONTRIBUTING.md; this page puts them in the order you meet them.
Contents
- Before you write code
- While you write code
- Before you open the pull request
- The pull request
- Code that is not kernel code
Before you write code
- Check for an issue. Search the tracker; if your change fixes a known issue, mention it. For a larger feature, open an issue first and describe the idea, so you do not build something that cannot be merged. Do the same when the behavior you want to change may be deliberate or open to interpretation: such a negative feature is something other sites rely on, so the change needs a clear justification, works best as an option rather than a new default, and may take several rounds of review before it is accepted.
- Fork and clone:
git clone https://github.com/your-username/exponential.git, thencomposer install(CONTRIBUTING.md, "Getting Started"). - Install the hooks with
make hooks: the pre-commit hook checks the manifest, the PHP syntax and the code style; the commit-msg hook checks the message. - Branch:
git checkout -b feature/your-feature.
While you write code
| Rule | Source |
|---|---|
| Follow the PSR standards and the project's coding standards | CONTRIBUTING.md, "Making Changes" |
Name new code by the prefix rule: new kernel code uses exp; existing identifiers such as eZContentObject or eZINI are never renamed | same |
Templates and stylesheets of the administration designs follow Styling the administration: no <style> block or style="" attribute, shared components and tokens | same |
| Add tests that fail without your change and pass with it | CONTRIBUTING.md, "Code Reviews" |
| One change per pull request: "A fix and a refactoring are two pull requests" | same |
Before you open the pull request
- Commit messages start with
Added:,Updated:,Fixed:,Removed:orRenamed:, for exampleFixed: The redirect keeps the query string on the own host(CONTRIBUTING.md). - The manifest: "every commit that adds, changes or removes a file updates its line in
share/filelist.md5(make manifest-fix)". - Tests pass, and the documentation is updated if behavior changed.
- Your CLA is on file with 7x (The CLA explained).
The checks that CI runs are described in Quality checks.
The pull request
- Push your branch to your fork and open a pull request against
main. - Fill in the template and tick the CLA checkbox.
- Expect review rounds: "7x does a much larger than usual number of review rounds before it accepts a commit or pull
request, sometimes hundreds of revisions" (
CONTRIBUTING.md, "Code Reviews"). - Squash and rebase your pull request onto
mainwhile it is open; force-push only to your own branch. - Once merged,
main's history is never rewritten; a later fix is a new pull request.
Reviewing and being reviewed has advice for the review rounds.
Code that is not kernel code
| Your code | Where it goes | CLA? |
|---|---|---|
| A fix to an extension that has its own repository | That repository's pull requests | Ask its maintainer; the CLA covers code "you want 7x to include" in the project |
A fix to one of the kernel's libraries (ezc* classes) | The fork's repository, se7enxweb/expcomponents-<name> | Apache 2.0 code; see Contributing to expcomponents |
| Your own extension, theme or site package | Your own repository, Projects, Packagist | No (Sharing extensions and themes) |
| A fix to a library Exponential depends on | The library's own project | Its rules |
Related pages
- Contributing as a community member
- Contributing code (supporters)
- Develop with Git
- Contributing back with pull requests
- Pull request etiquette
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.