Skip to content

Latest commit

 

History

History
97 lines (60 loc) · 4.65 KB

CONTRIBUTING.md

File metadata and controls

97 lines (60 loc) · 4.65 KB

Contribution guidelines

Thanks for considering contributing to FlorisBoard!

There are several ways to contribute to FlorisBoard. This document provides some general guidelines for each type of contribution.

General contributions

Translation

To make FlorisBoard accessible in as many languages as possible, the platform Crowdin is used to crowdsource and manage translations. The list of languages in Crowdin covers a good range of languages, but feel free to send an email to [email protected] to request a new language.

Important

This is the only source of translations - PRs that add/update translations are not accepted.

Feedback

You can give general feedback directly here on GitHub. This is the preferred way to give feedback, as it allows not only for me to read and respond to feedback, but for everyone in this community.

Bug reporting

This kind of contribution is the most important, as it tells where FlorisBoard has flaws and thus should be improved to maximize stability and user experience. To make this process as smooth as possible, please use the pre-made issue template for bug reporting. This makes it easy for us to understand what the bug is and how to solve it.

Capturing error logs

Logs are captured by FlorisBoard's crash handler, which gives you the ability to copy it to the clipboard and paste it in GitHub. This is the preferred way to capture logs.

Alternatively, you can also use ADB (Android Debug Bridge) to capture the error log. This is recommended for experienced users only.

Feature proposals

Use the feature proposal issue template to suggest a new idea or improvement for this project.

Code contributions

You are always welcome to contribute new features or work on existing issues, there are a lot to choose from :) It is always best to quickly ask if someone is already working on this issue to avoid duplicate issues.

Note

If you intend to implement a bigger feature please coordinate with us so we can prevent that there's a major difference in expected implementation.

If you are overwhelmed by the code don't hesistate to ask for help in the dev chat or the discussions tab! Some issues are also marked as good first issue, which are easy to do tasks.

System requirements for development

  • Desktop PC with Linux or WSL2 (Windows)
    • MacOS and Windows without WSL2 probably works too however there's no official support
  • At least 16GB of RAM (because of Android Studio)
  • The following tools must be installed:
    • Android Studio (bundles SDK and NDK)
    • Java 17
    • CMake 3.22+
    • Clang 15+
    • Git
    • Rust
  • Utilities (optional)
    • Python 3.10+
    • Bash, realpath, grep, ...

Manual build without Android Studio

If you want to manually build the project without Android Studio you must ensure that the Android SDK and NDK are properly installed on your system. Then issue

./gradlew clean && ./gradlew assembleDebug

and Gradle should take care of every build task.

Joining the team

If you want to join the core maintainer/moderator team on a volunteer basis and be part of this project's journey that's great to hear!

Basic Requirements

  • A passion for seeing FlorisBoard flourish
  • Good English skills for team and public communication
  • A GitHub account and a Matrix handle

Why Join

You'll have the chance to work directly with me and other team members. While the general idea is for us to work on all kinds of different aspects of the project as a team, if you're particularly interested in a specific area (e.g., UI, extensions, text processing), that's totally okay too!

Available Roles

Currently the following roles are available and need help:

Role Description Required Dev Experience
Software Developer (Kotlin) for Core App Java/Kotlin development experience (on Android)
Software Developer (Rust) for Native Core Some Rust development experience
GitHub Issues/Discussions Moderator None
Crowdin Translation Verifier Language proficiency for the language you want to verify

Interested? Feel free to dm me (@patrickgold) on Matrix or send an email to [email protected].

Donating

Alternatively you can also show your support by buying me a coffee, so I can stay up all night and chase away bugs or add new cool stuff :) See the Sponsors button for available options!