Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Contributing code as a community member

The workflow for a code contribution to the Exponential kernel from a community member's point of view - fork, branch, coding standards and naming prefixes, prefixed commit messages, the file manifest, tests, the CLA…

Download as PDF

Address: https://doc.exponential.earth/learninminutes/exphelp/viewer/help/community/contributing/contributing-code.md

On this page

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

  1. Before you write code
  2. While you write code
  3. Before you open the pull request
  4. The pull request
  5. Code that is not kernel code

Before you write code

  1. 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.
  2. Fork and clone: git clone https://github.com/your-username/exponential.git, then composer install (CONTRIBUTING.md, "Getting Started").
  3. 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.
  4. Branch: git checkout -b feature/your-feature.

While you write code

RuleSource
Follow the PSR standards and the project's coding standardsCONTRIBUTING.md, "Making Changes"
Name new code by the prefix rule: new kernel code uses exp; existing identifiers such as eZContentObject or eZINI are never renamedsame
Templates and stylesheets of the administration designs follow Styling the administration: no <style> block or style="" attribute, shared components and tokenssame
Add tests that fail without your change and pass with itCONTRIBUTING.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: or Renamed: , for example Fixed: 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

  1. Push your branch to your fork and open a pull request against main.
  2. Fill in the template and tick the CLA checkbox.
  3. 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").
  4. Squash and rebase your pull request onto main while it is open; force-push only to your own branch.
  5. 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 codeWhere it goesCLA?
A fix to an extension that has its own repositoryThat repository's pull requestsAsk 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 packageYour own repository, Projects, PackagistNo (Sharing extensions and themes)
A fix to a library Exponential depends onThe library's own projectIts rules

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x