Contributing code
This page is for developers who want to send their first or next pull request to Exponential. The rules are in CONTRIBUTING.md; the Git workflow is explained step by step on Develop with Git.
Find something to work on
- Open issues: https://github.com/se7enxweb/exponential/issues.
- Something that annoyed you in your own work: that is usually the best first contribution.
- Extensions: each
se7enxweb/*extension is its own repository with its own issues.
Set up
Install Exponential from Git with full history (Develop with Git). SQLite is the default database, so a development installation needs no database server (Database support).
The workflow
- Fork the repository and clone your fork.
- Create a branch:
git checkout -b feature/your-feature. - Follow the PSR standards and the coding style; administration templates follow the styling rules (no
<style>blocks, nostyle=""attributes; shared components and tokens) (CONTRIBUTING.md). - Commit with a subject that starts with
Added:,Updated:,Fixed:,Removed:orRenamed:, for exampleFixed: The redirect keeps the query string on the own host(CONTRIBUTING.md). - Update
share/filelist.md5for every file you add, change or remove (make manifest-fix);make hooksinstalls a pre-commit hook that checks it, the PHP syntax and the code style. - Run the tests, update the documentation, push and open a pull request. "Keep your pull request focused. If you have multiple contributions, submit multiple pull requests."
What happens to your pull request
- CI runs syntax, manifest, commit message, code style, PHPStan and test checks on the supported PHP versions
(
doc/eng-us/bc/6.0/ci.md). - It is reviewed, and every pull request is merged. While it is open, you squash it and rebase it onto
mainas the reviews ask (git fetch origin,git rebase -i origin/main,git push --force-with-leaseto your pull request branch only); once it is merged,main's history is never rewritten (doc/eng-us/bc/6.0/ci.md). - A pull request that changes deliberate behavior, a negative feature other sites depend on, needs a clear justification and can take several rounds of review before it is accepted and merged. Adding an option instead of changing the default is the easier path.
License
"By contributing, you agree that your contributions will be licensed under the GNU General Public License, version 2.0 or later" (CONTRIBUTING.md).
Copyright assignment (CLA). The Exponential Foundation and 7x merge a code contribution to the core kernel, sent in any form (pull request, patch, issue or mail), only after you have signed the Contributor Licensing Agreement. By signing and submitting, you assign the copyright in your contribution to the Exponential Foundation and 7x, which become its owners, and give up control over it: The Exponential Foundation and 7x may use, change, relicense and distribute it in any way, also under other licenses and in commercial products, without asking or paying you, and you cannot withdraw it or set conditions on it. One signature covers all your future contributions. Extensions you write for yourself are not affected. How to sign: Copyright assignment (CLA).
First contribution ideas
- A test that reproduces a reported bug.
- A PHP deprecation fix for the newest PHP version.
- A small usability fix in the administration.
Related pages
- Develop with Git
- Testing and reporting bugs
- Contributing code back (for partners)
- Contribute to the project: every way to help build Exponential
- 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.