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

Latest commit

 

History

History
84 lines (42 loc) · 4.61 KB

CONTRIBUTING.md

File metadata and controls

84 lines (42 loc) · 4.61 KB

Contributing

Thank you for visiting this page. Contributions is one of the main reasons Shuttle was open-sourced, so I'm happy to have you here!

The following is a set of guidelines for contributing to Shuttle. These are just guidelines, not rules. Use your best judgement, and feel free to propose changes to this document in a pull request.

Contributing Code

There are a couple of important things to know:

  1. You must be aware of the GPL v3 license, and agree to the Contributors License Agreement.
  2. Not all proposed contributions can be accepted. The more effort you invest, the better you should clarify in advance whether the contribution fits: the best way would be to just open an issue to discuss the feature you plan to implement (make it clear you intend to contribute).

When you contribute (code, documentation, or anything else), you have to be aware that your contribution is covered by the same GPLv3 License that is applied to Shuttle Music Player itself. In particular you need to agree to the Individual Contributor License Agreement, which can be found here. (This applies to all contributors, including those contributing on behalf of a company). If you agree to its content, you simply have to click on the link posted by the CLA assistant as a comment to the pull request. Click it to check the CLA, then accept it on the following screen if you agree to it. CLA assistant will save this decision for upcoming contributions and will notify you if there is any change to the CLA in the meantime.

Development

One of the main reasons for open sourcing Shuttle is to get some help from fellow programmers. I encourage you to make pull requests, and I will do my best to look over them, and either approve, provide constructive criticism, or improve upon them myself before merging.

Keep in mind that Shuttle is currently on the Play Store, as a free and paid app. The paid features are open source and visible in this repository. I do make money from these features, and the current plan is to continue to do so. If you feel that it's unfair for me to profit from your contributions, I encourage you to stay away from the paid aspects of the app, including:

  • Folder browsing
  • Chromecast
  • Theming
  • Tag editing

Feel free to open an issue if you have any questions/concerns on this matter.

If you plan on working on a new feature, changing the existing code in some significant way, or make UI changes, please create an issue where we can discuss the idea/implementation/UI before working on it.

Please be aware of and try to keep under the 65k method limit (Shuttle is precariously close at the moment).

Also, please respect the licenses of any code that is used/contributed to Shuttle. Credit should be given where it is due.

Getting started:

I strongly encourage you to join the Slack channel, where you can get help compiling the app, or discuss proposed changes.

Clone the dev branch. Shuttle has been setup so you should be able to run it without any additional configuration.

Change the build variant in Android Studio to devDebug to avoid initial build problems. The release variants are for Shuttle Play Store releases, and will not compile for you as you need private API keys & keystore information.

If you're using the Last.fm artwork a lot, please go to https://www.last.fm/api/account/create and create your own key.

Git

Shuttle uses the Git-flow branching model. Feature branches should branch off dev.

Bug Reports:

Bugs are tracked using the Github Issue Tracker

Please be descriptive and include:

  • Shuttle version
  • Device, OS
  • Description of bug
  • Steps to reproduce
  • Expected outcome
  • Observations (actual outcome)

Code Style:

Shuttle doesn't actually have a very consistent code style at the moment. I'm moving away from using hungarian notation, so prefer if you don't use it.

Use your judgement, and try and keep the code as consistent as possible with neighbouring code.

Translations:

Translations are managed via OneSky. Translations are imported from the OneSky project fairly frequently. Please don't perform translations directly on the source files.

Contact

Shuttle is developed and maintained by Tim Malseed. Get in touch via Slack, email or hangouts: t.malseed@gmail.com