termux-packages/CONTRIBUTING.md

4.1 KiB

Contributing

Termux is an open source application and it is built on users' contributions. However, most of work is done by Termux maintainers on their spare time and therefore only priority tasks are being completed.

Here are ways how you can help:

Developer's wiki is available in https://github.com/termux/termux-packages/wiki.

Fixing issues

By fixing bugs you will ensure that Termux packages are running smoothly. Pay attention to issues labeled as "bug report" and "help wanted". Note that solution for these issues may not be easy.

A note about package requests

We tend not to package everything what was requested, but making exception for packages that we consider important. If you want to submit a package, make sure that following conditions are met:

  • Package should have widely recognised OSS licenses like GNU GPL, MIT, Apache-2.0 and similar.
  • Package should NOT be an outdated, dead project.
  • Package should NOT be a part of language-specific ecosystem. Such packages are installable through pip, gem, cpan, npm.

We will reject requests for packaging single-file scripts. Also we may not package infamous projects as we need to be sure that package is used by other people, not just by someone who requested it.

Hosting a mirror

Our APT repositories are receiving large amount of downloads per day. You can create own public mirror to help to deal with large amount of traffic.

Requirements for a server where mirror will be hosted:

  • At least 20 GB of free space on HDD.
  • Unlimited traffic, otherwise 3 TB monthly bandwidth + caching CDN.
  • Cron job for updating mirror at least once in 24 hours.

Software: you can use any utility (for example apt-mirror) for mirroring APT repositories as soon as it doesn't change the file structure. Hash sums and signatures must be original, otherwise GPG verification will not be passed.

Origin URLs for mirroring:

https://dl.bintray.com/termux/termux-packages-24
https://dl.bintray.com/grimler/game-packages-24
https://dl.bintray.com/grimler/science-packages-24
https://dl.bintray.com/grimler/termux-root-packages-24
https://dl.bintray.com/xeffyr/unstable-packages
https://dl.bintray.com/xeffyr/x11-packages

Once your mirror is ready, open the issue so it will be added to the list.

Updating packages

Keeping packages up-to-date ensures that Termux users' will not experience the upstream bugs or security issues and will be able to use the latest features.

Periodically check the Repology page to see what is outdated and submit a pull request with version update.

How to update package

In most cases it is strightforward modification of build script with chaning variables TERMUX_PKG_VERSION and TERMUX_PKG_SHA256.

TERMUX_PKG_VERSION is a text string that represents a full package version in this format:

{EPOCH}:{PROJECT VERSION}

In most cases you need to change only the {PROJECT VERSION}. {EPOCH} is used only in rare cases such as downgrading or versioning scheme change.

You may see a TERMUX_PKG_REVISION variable in a build.sh file. Remove it when package is upgraded.

TERMUX_PKG_SHA256 is a SHA-256 checksum of the source code archive downloaded from the URL specified with TERMUX_PKG_SRCURL.

More about build.sh variables you can read in developer's wiki.

Example of package upgrading: fbcaa06ecc.

Important: if package has patches, ensure that they can be applied to updated source bundle. Otherwise we may reject your pull request.