Contributing

There are dozens of ways to contribute in Weblate. Any help is welcomed, be it coding, graphics design, documentation or sponsorship.

Code and development

Weblate is developed on GitHub. You are welcome to fork the code and open pull requests. Patches in any other form are welcome too.

См.также

Check out Internals to see how Weblate looks from inside.

Coding standard

The code should follow PEP-8 coding guidelines. It is recommended to format new code using black code formatter (though existing code is yet formatted).

To check the code quality, you can use flake8, the recommended plugins are listed in requirements-test.txt.

You can execute all coding style checks with the script ci/run-lint.

Security by Design Principles

Any code for Weblate should be writted with Security by Design Principles in mind.

Testsuite

Testsuites exist for most of the current code, increase coverage by adding testcases for any new functionality, and verify that it works. Current test results can be found on Travis and coverage is reported on Codecov.

To run a testsuite locally, use:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test

You can also specify individual tests to run:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport

Подсказка

The tests can also be executed inside developer docker container, see Running Weblate locally in Docker.

См.также

See Testing in Django for more info on running and writing tests for Django.

Reporting issues

Our issue tracker is hosted at GitHub:

Feel welcome to report any issues with, or suggest improvement of Weblate there. If what you have found is a security issue in Weblate, please consult the «Security issues» section below.

Security issues

In order to give the community time to respond and upgrade your are strongly urged to report all security issues privately. HackerOne is used to handle security issues, and can be reported directly at HackerOne.

Alternatively, report to security@weblate.org, which ends up on HackerOne as well.

If you don’t want to use HackerOne, for whatever reason, you can send the report by e-mail to michal@cihar.com. You can choose to encrypt it using this PGP key 3CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D.

Примечание

Weblate depends on third party components for many things. In case you find a vulnerability affecting one of those components in general, please report it directly to the respective project.

Some of these are:

Starting with our codebase

If looking for some bugs to familiarize yourself with the Weblate codebase, look for ones labelled good first issue.

Directory structure

Quick overview of directory structure of Weblate main repository:

doc
Source code for this documentation, built using Sphinx.
dev-docker
Docker code to run development server, see Running Weblate locally in Docker.
weblate
Source code of Weblate as a Django application, see Internals.
weblate/static
Client files (CSS, Javascript and images).

Running Weblate locally in Docker

If you have Docker and docker-compose installed, you can spin up the development environment simply by running:

./rundev.sh

It will create development Docker image and start it. Weblate is running on <http://127.0.0.1:8080/> and you can login with admin user and admin password. The new installation is empty, so you might want to continue with Adding translation projects and components.

The Dockerfile and docker-compose.yml for this are located in dev-docker directory.

The script also accepts some parameters, to execute tests run it with test parameter and then specify any test parameters, for example:

./rundev.sh test --failfast weblate.trans

To stop the background containers run:

./rundev.sh stop

Running the script without args will recreate Docker container and restart it.

Примечание

This is not suitable setup for production, it includes several hacks which are insecure, but make development easier.

Translating

Weblate is being translated using Weblate itself, feel free to take part in the effort of making Weblate available in as many human languages as possible.

Funding Weblate development

You can fund further Weblate development on the donate page. Funds collected there are used to fund gratis hosting for libre software projects, and further development of Weblate. Please check the the donate page for details, such as funding goals and rewards you can get by being a funder.

Backers who have funded Weblate

List of Weblate supporters:

  • Yashiro Ccs
  • Cheng-Chia Tseng
  • Timon Reinhard
  • Cassidy James
  • Loic Dachary
  • Marozed

Do you want to be in the list? Please see options on the Donate to Weblate.

Releasing Weblate

Release checklist:

  1. Check newly translated languages by ./scripts/list-translated-languages.
  2. Set final version by ./scripts/prepare-release.
  3. Make sure screenshots are up to date make -C docs update-screenshots
  4. Create a release ./scripts/create-release --tag
  5. Enable building version docs on Read the Docs
  6. Update Docker image
  7. Close GitHub milestone
  8. Once the Docker image is tested, add a tag and push it

Developer’s Certificate of Origin

In contributing to the Weblate project, please certify to the following:

Weblate Developer’s Certificate of Origin. Version 1.0

By making a contribution to this project, I certify that:

  1. The contribution was created in whole or in part by me and I have the right to submit it under the license of «GNU General Public License or any later version» («GPLv3-or-later»); or

  2. The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under GPLv3-or-later; or

  3. The contribution was provided directly to me by some other person who certified (a) or (b) and I have not modified it.

  4. I understand and agree that this project and the contribution are public and that a record of the contribution (including all metadata and personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with Weblate’s policies and the requirements of the GPLv2-or-later where they are relevant.

  5. I am granting this work to this project under the terms of the GPLv3-or-later.

    https://www.gnu.org/licenses/gpl-3.0.html

Please confirm your affirmation of the above by adding the following line to your patch:

Signed-off-by: Jane Developer <jane@example.org>

using your real name (sorry, no pseudonyms or anonymous contributions).

If you are a developer authorized to contribute to Weblate on behalf of your employer, please use your corporate e-mail address in the «Signed-off-by» tag. If not, please use a personal e-mail address.