Files
openproject/docs/development
Judith Roth 2b154a52c9 Documentation: Fix command for running tests in docker
This is the command the backend-test container itself promotes in its
logs. The output of the replaced command is not usable:

```
docker compose run --rm backend-test bundle exec rspec spec/models/project_spec.rb
[+]  8/8t 8/88
 ✔ Network openproject-no-tls_testing             Created                                                                                                                                                                                 0.0s
 ✔ Container openproject-no-tls-db-test-1         Started                                                                                                                                                                                 0.2s
 ✔ Container openproject-no-tls-cuprite-chrome-1  Started                                                                                                                                                                                 0.2s
 ✔ Container openproject-no-tls-chrome-1          Started                                                                                                                                                                                 0.2s
 ✔ Container openproject-no-tls-hocuspocus-test-1 Started                                                                                                                                                                                 0.3s
 ✔ Container openproject-no-tls-frontend-test-1   Started                                                                                                                                                                                 0.3s
 ✔ Container openproject-no-tls-firefox-1         Started                                                                                                                                                                                 0.2s
 ✔ Container selenium-hub                         Started                                                                                                                                                                                 0.3s
Container openproject-no-tls-frontend-test-1 Waiting
Container openproject-no-tls-frontend-test-1 Healthy
Container openproject-no-tls-backend-test-run-8cf0273581eb Creating
Container openproject-no-tls-backend-test-run-8cf0273581eb Created
Waiting for the Grid...
In a future version of Bundler, running `bundle` without argument will no longer run `bundle install`.
Instead, the `cli_help` command will be displayed. Please use `bundle install` explicitly for scripts like CI/CD.
You can use the future behavior now with `bundle config set default_cli_command cli_help --global`,
or you can continue to use the current behavior with `bundle config set default_cli_command install --global`.
This message will be removed after a default_cli_command value is set.

Bundle complete! 222 Gemfile dependencies, 494 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
13 installed gems you directly depend on are looking for funding.
  Run `bundle fund` for details
```

With `bin/compose` the output looks like this:

```
bin/compose exec rspec spec/models/project_spec.rb
DEPRECATION WARNING: Setting action_controller.escape_json_responses = true is deprecated and will have no effect in Rails 8.2. Set it to `false`, or remove the config. (called from block (2 levels) in <top (required)> at /home/dev/openproject/config/initializers/doorkeeper.rb:241)

Randomized with seed 18555

Project
  when the wiki module is enabled
    creates a wiki menu item named like the default start page
    creates a wiki
  #active?
    if active
      is true
    if not active
      is false
  #parent_allowed?
    for a project
      is truthy
    for a program
...
```
2026-03-27 11:28:06 +01:00
..
2026-01-14 13:37:30 +01:00
2026-03-11 15:03:41 +01:00
2025-05-22 14:44:48 +02:00
2025-08-12 14:17:41 +02:00
2024-04-29 17:13:24 +02:00
2024-04-29 17:13:24 +02:00
2025-05-22 14:44:48 +02:00

sidebar_navigation
sidebar_navigation
title priority
Development 920

Develop OpenProject

We are pleased that you are thinking about contributing to OpenProject! This guide details how to contribute to OpenProject.

Get in touch

Please get in touch with us using our development forum or send us an email to info@openproject.org.

Issue tracking and coordination

We eat our own ice cream so we use OpenProject for roadmap planning and team collaboration. Please have a look at the following pages:

Development Environment

Take a look at the bottom under Additional resources to see how to setup your development environment.

Highlighting Development Environment

To make it easier to distinguish a development instance, it is using a tinted website icon and modified app header.

This behavior can be disabled by setting an environment variable OPENPROJECT_DEVELOPMENT_HIGHLIGHT_ENABLED=false (see also documentation on configuration).

Branching model and development flow

Please see this separate guide for the git branching model and core development.

Development concepts

We prepared a set of documentation concepts for an introduction into various backend and frontend related topics of OpenProject. Please see the concepts main page for more.

Translations

If you want to contribute to the localization of OpenProject and its plugins you can do so on the Crowdin OpenProject page. Once a day we fetch those locales and automatically upload them to GitHub. Contributing there will ensure your language will be up to date for the next release!

More on this topic can be found in our blog post.

Packaging process

Please see this separate guide for the process of building packages of OpenProject.

Testing

Please add tests to your code to verify functionality, especially if it is a new feature.

Pull requests will be verified by TravisCI as well, but please run them locally as well and make sure they are green before creating your pull request. We have a lot of pull requests coming in and it takes some time to run the complete suite for each one.

If you push to your branch in quick succession, please consider stopping the associated Travis builds, as Travis will run for each commit. This is especially true if you force push to the branch.

Please also use [ci skip] in your commit message to suppress builds which are not necessary (e.g. after fixing a typo in the README).

Inactive pull requests

We want to keep the Pull request list as cleaned up as possible - we will aim close pull requests after an inactivity period of 30 days (no comments, no further pushes) which are not labeled as work in progress by us.

Security

If you notice a security issue in OpenProject, please send us a GPG encrypted email to security@openproject.com and describe the issue you found. Download our public GPG key BDCF E01E DE84 EA19 9AE1 72CE 7D66 9C6D 4753 3958 here.

Please include a description on how to reproduce the issue if possible. Our security team will get your email and will attempt to reproduce and fix the issue as soon as possible.

Contributor code of conduct

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion.

Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.

This code of conduct is adapted from the Contributor Covenant, version 1.0.0, available at contributor-covenant.org/version/1/0/0/

OpenProject Contributor License Agreement (CLA)

If you want to contribute to OpenProject, please make sure to accept our Contributor License Agreement. The contributor license agreement documents the rights granted by contributors to OpenProject.

A GitHub action will enforce the CLA has been read and accepted by every new contributor. You will only be asked once, the document is short, and signing is easy.

Additional resources