Skip to content
This repository has been archived by the owner on Aug 30, 2022. It is now read-only.

Latest commit

 

History

History
59 lines (43 loc) · 2.65 KB

CONTRIBUTING.md

File metadata and controls

59 lines (43 loc) · 2.65 KB

Looking to report a Bug or make a feature request? Take a look here.


Thank you for your interest in contributing to Tenshi!

⚠ This Page is under Construction ⚠

Translations

Translations are currently only possible by directly editing the strings.xml file.

I'm planning to use a Service like Crowdin or Weblate soon.

Code Contributions

Pull requests are welcome! Please read follow the Code Style Guidelines below.

If you're interested in taking on an open issue, please comment on it so others are aware.

Forks

Forks are allowed so long they abide by Tenshi's LICENSE

When creating a fork, remember to:

  • Avoid confusion with the main app and conflicts by:
    • Changing the app name (strings/shared_app_name)
    • Changing the app icon
    • Changing the OAUTH redirect URL
    • Change the 'applicationId' in build.gradle
  • Create a new API Client
  • Setup your build config (/app/build.properties)
    • copy the sample config to /app/build.properties and fill the values as per the comments
    • ⚠ Make sure the build config is NOT tracked by git

Code Style Guidelines

These are the guidelines you should follow when contributing code to Tenshi.
These Guidelines outline what I think are useful rules to create readable and manageable code, tho they are always open for discussion(i'm not a professional developer after all, so what do i know :P)

  • Please use Java
  • Do not hardcode random values (like intent extras, ...), but use constants in the appropriate classes instead
  • Avoid hardcoding URLs, use constants in Urls.java instead
  • Use Enums instead of string / integer constants (especially in MAL model)
    • Enum values are in PascalCase (i know, java default is all uppercase, but that look stupid)
    • Use @SerializedName if the enum name differs from eg. an API requirement
    • Use EnumHelper instead of Enum functions to allow for @SerializedName
  • Write descriptive JavaDoc comments for:
    • all classes, interface and enums
    • all public fields and enum constants
    • all public methods
    • optionally private fields and methods
  • Use @Nullable / @NonNull annotations on:
    • all public fields and methods
    • optionally private fields and methods
  • Usage of Lambda expression for handlers and callbacks is strongly encouraged.
  • Have a look at Tenshis' Language Extensions.