mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-15 00:25:17 +00:00
231 lines
11 KiB
Markdown
231 lines
11 KiB
Markdown
# Contributing to Spotube
|
|
|
|
First off, thanks for taking the time to contribute!
|
|
|
|
All types of contributions are encouraged and valued.
|
|
See the [Table of Contents](#table-of-contents) for different ways
|
|
to help and details about how this project handles them.
|
|
Please make sure to read the relevant section before making
|
|
your contribution.
|
|
It will make it a lot easier for us maintainers and smooth out the experience for all involved.
|
|
The
|
|
community looks forward to your contributions.
|
|
|
|
> And if you like the project, but just don't have time to contribute, that's fine.
|
|
> There are other easy ways to support
|
|
> the project and show your appreciation, which we would also be thrilled about:
|
|
>
|
|
> - Star the project
|
|
> - Tweet about it
|
|
> - Refer this project to your project's readme
|
|
> - Mention the project at local meetups and tell your friends/colleagues
|
|
|
|
## Table of Contents
|
|
|
|
- [Contributing to Spotube](#contributing-to-spotube)
|
|
- [Table of Contents](#table-of-contents)
|
|
- [Code of Conduct](#code-of-conduct)
|
|
- [I Have a Question](#i-have-a-question)
|
|
- [I Want To Contribute](#i-want-to-contribute)
|
|
- [Reporting Bugs](#reporting-bugs)
|
|
- [Before Submitting a Bug Report](#before-submitting-a-bug-report)
|
|
- [How Do I Submit a Good Bug Report?](#how-do-i-submit-a-good-bug-report)
|
|
- [Suggesting Enhancements](#suggesting-enhancements)
|
|
- [Before Submitting an Enhancement](#before-submitting-an-enhancement)
|
|
- [How Do I Submit a Good Enhancement Suggestion?](#how-do-i-submit-a-good-enhancement-suggestion)
|
|
- [Your First Code Contribution](#your-first-code-contribution)
|
|
- [Submit Translations](#submit-translations)
|
|
|
|
## Code of Conduct
|
|
|
|
This project and everyone participating in it is governed by the
|
|
[Spotube Code of Conduct](https://github.com/KRTirtho/spotube/blob/master/CODE_OF_CONDUCT.md).
|
|
By participating, you are expected to uphold this code. Please report unacceptable behavior
|
|
to krtirtho@gmail.com.
|
|
|
|
## I Have a Question
|
|
|
|
> If you want to ask a question, we assume that you have read the
|
|
> available [Documentation](https://github.com/KRTirtho/spotube#readme).
|
|
|
|
Before you ask a question, it is best to search for existing [Issues](https://github.com/KRTirtho/spotube/issues) that
|
|
might help you.
|
|
In case you have found a suitable issue and still need clarification, you can write your question in
|
|
this issue.
|
|
It is also advisable to search the internet for answers first.
|
|
|
|
If you then still feel the need to ask a question and need clarification, we recommend the following:
|
|
|
|
- Open a [Discussion](https://github.com/KRTirtho/spotube/discussions/new) with the question label.
|
|
- Provide as much context as you can about what you're running into.
|
|
- Provide project and platform versions (flutter, dart, pub, linux etc..), depending on what seems relevant.
|
|
|
|
We will then take care of the issue as soon as possible.
|
|
|
|
## I Want To Contribute
|
|
|
|
> ### Legal Notice
|
|
>
|
|
> When contributing to this project, you must agree that you have authored 100% of the content, that you have the
|
|
> necessary rights to the content and that the content you contribute may be provided under the project license.
|
|
|
|
### Reporting Bugs
|
|
|
|
#### Before Submitting a Bug Report
|
|
|
|
A good bug report shouldn't leave others needing to chase you up for more information.
|
|
Therefore, we ask you to
|
|
investigate carefully, collect information and describe the issue in detail in your report.
|
|
Please complete the
|
|
following steps in advance to help us fix any potential bug as fast as possible.
|
|
|
|
- Make sure that you are using the latest version.
|
|
- Determine if your bug is really a bug and not an error on your side, e.g., using incompatible environment
|
|
components/versions (Make sure that you have read the [documentation](https://github.com/KRTirtho/spotube#readme). If
|
|
you are looking for support, you might want to check [this section](#i-have-a-question)).
|
|
- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there
|
|
is not already a bug report existing for your bug or error in
|
|
the [bug tracker](https://github.com/KRTirtho/spotubeissues?q=label%3Abug).
|
|
- Also make sure to search the internet (including Stack Overflow) to see if users outside the GitHub community have
|
|
discussed the issue.
|
|
- Collect information about the bug:
|
|
- Stack trace (Traceback)
|
|
- OS, Platform and Version (Windows, Linux, macOS, x86, ARM)
|
|
- Version of the interpreter, compiler, SDK, runtime environment, package manager, depending on what seems relevant.
|
|
- Possibly your input and the output
|
|
- Can you reliably reproduce the issue? And can you also reproduce it with older versions?
|
|
|
|
#### How Do I Submit a Good Bug Report?
|
|
|
|
> You must never report security related issues, vulnerabilities or bugs, including sensitive information to the issue
|
|
> tracker, or elsewhere in public.
|
|
> Instead, sensitive bugs must be sent by email to
|
|
|
|
We use GitHub issues to track bugs and errors. If you run into an issue with the project:
|
|
|
|
<list>
|
|
<li><p>Open an <a href="https://github.com/KRTirtho/spotube/issues/new">Issue</a>.
|
|
(Since we can't be sure at this point whether it is a
|
|
bug or not, we ask you not to talk about a bug yet and not to label the issue.)</p></li>
|
|
<li><p>Explain the behavior you would expect and the actual behavior.</p></li>
|
|
<li><p>Please provide as much context as possible and describe the <emphasis>reproduction steps</emphasis> that someone else can follow to
|
|
recreate the issue on their own.
|
|
This usually includes your code.
|
|
For good bug reports, you should isolate the problem
|
|
and create a reduced test case.</p></li>
|
|
<li><p>Provide the information you collected in the previous section.</p></li>
|
|
</list>
|
|
|
|
Once it's filed:
|
|
|
|
- The project team will label the issue accordingly.
|
|
- A team member will try to reproduce the issue with your provided steps.
|
|
If there are no reproduction steps or no
|
|
obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`.
|
|
Bugs
|
|
with the `needs-repro` tag will not be addressed until they are reproduced.
|
|
- If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as
|
|
`critical`), and the issue will be left to be [implemented by someone](#your-first-code-contribution).
|
|
|
|
### Suggesting Enhancements
|
|
|
|
This section guides you through submitting an enhancement suggestion for Spotube, **including completely new features
|
|
and minor improvements to existing functionality**.
|
|
Following these guidelines will help maintainers and the community
|
|
to understand your suggestion and find related suggestions.
|
|
|
|
<!-- omit in toc -->
|
|
|
|
#### Before Submitting an Enhancement
|
|
|
|
<list>
|
|
<li><p>Make sure that you are using the latest version.</p></li>
|
|
<li><p>Read the <a href="https://github.com/KRTirtho/spotube#readme">documentation</a> carefully and find out if the functionality is
|
|
already covered, maybe by an individual configuration.</p></li>
|
|
<li><p>Perform a <a href="https://github.com/KRTirtho/spotube/issues">search</a> to see if the enhancement has already been suggested.
|
|
If it has, add a comment to the existing issue instead of opening a new one.</p></li>
|
|
<li><p>Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to
|
|
convince the project's developers of the merits of this feature. Keep in mind that we want features that will be
|
|
useful to the majority of our users and not just a small subset</p></li>
|
|
</list>
|
|
|
|
<!-- omit in toc -->
|
|
|
|
#### How Do I Submit a Good Enhancement Suggestion?
|
|
|
|
Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirtho/spotube/issues).
|
|
|
|
- Use a **clear and descriptive title** for the issue to identify the suggestion.
|
|
- Provide a **step-by-step description of the suggested enhancement** in as many details as possible.
|
|
- **Describe the current behavior** and **explain which behavior you expected to see instead** and why.
|
|
At this point,
|
|
you can also tell which alternatives do not work for you.
|
|
- You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part
|
|
which the suggestion is related to.
|
|
You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS
|
|
and Windows, and [this tool](https://github.com/colinkeenan/silentcast)
|
|
or [this tool](https://github.com/GNOME/byzanz) on
|
|
Linux.
|
|
<!-- this should only be included if the project has a GUI -->
|
|
- **Explain why this enhancement would be useful** to most Spotube users.
|
|
You may also want to point out the other
|
|
projects that solved it better and which could serve as inspiration.
|
|
|
|
### Your First Code Contribution
|
|
|
|
<!-- Download -->
|
|
|
|
Do the following:
|
|
|
|
- Download the latest Flutter SDK (>=3.16.0) & enable desktop support
|
|
- Install Development dependencies in linux
|
|
- Debian (>=12/Bookworm)/Ubuntu
|
|
```bash
|
|
$ apt-get install mpv libmpv-dev libappindicator3-1 gir1.2-appindicator3-0.1 libappindicator3-dev libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan libwebkit2gtk-4.1-0 libwebkit2gtk-4.1-dev libsoup-3.0-0 libsoup-3.0-dev
|
|
```
|
|
- Use `libjsoncpp1` instead of `libjsoncpp25` (for Ubuntu < 22.04)
|
|
- Arch/Manjaro
|
|
```bash
|
|
yay -S mpv libappindicator-gtk3 libsecret jsoncpp libnotify avahi nss-mdns mdns-scan webkit2gtk-4.1 libsoup3
|
|
```
|
|
- Fedora
|
|
```bash
|
|
dnf install mpv mpv-devel libappindicator-gtk3 libappindicator-gtk3-devel libsecret libsecret-devel jsoncpp jsoncpp-devel libnotify libnotify-devel avahi mdns-scan nss-mdns webkit2gtk4.1 webkit2gtk4.1-devel libsoup3 libsoup3-devel
|
|
```
|
|
- Clone the Repo
|
|
- Create a `.env` in root of the project following the `.env.example` template
|
|
- Now run the following to bootstrap the project
|
|
```bash
|
|
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
|
|
```
|
|
- Finally, run these following commands in the root of the project to start the Spotube Locally
|
|
```bash
|
|
flutter run # -d [device]
|
|
```
|
|
|
|
Do `debugging/testing/build` etc. then submit to us with PR against the `dev` branch, and we'll review your code
|
|
|
|
### Submit Translations
|
|
|
|
Make sure you're familiar
|
|
with [Flutter localization](https://docs.flutter.dev/ui/accessibility-and-localization/internationalization).
|
|
Then, you
|
|
can start translating the app by following these steps:
|
|
|
|
- Do all the steps in [Your First Code Contribution](#your-first-code-contribution)
|
|
- Make sure the application starts in debug mode
|
|
- Now, in `lib/l10n/app_<2-letter code of your language>.arb` (create if not exists) add the necessary translations
|
|
> (You can follow the `lib/l10n/app_en.arb` for reference)
|
|
- If you're adding missing translations, you can check the `/untranslated_messages.json` file to see which messages are
|
|
missing in your native locale
|
|
- If you add entirely new translations:
|
|
- Add `const Locale('<2-letter language code>', '<2-letter ISO country code>')` in `lib/l10n/l10n.dart`'s
|
|
`static final all = [...]` variable
|
|
- Uncomment the Map entry of your locale from `lib/collections/language_codes.dart`'s
|
|
`static final Map isoLangs = {` variable
|
|
- Now restart (hot restart if running already) the app in debug mode & go to "Settings" > "Language" & see if your
|
|
locale shows up
|
|
- If it does, select it and see if the app is translated properly
|
|
- Now git commit changes and push
|
|
- Finally, submit a PR against the development branch (dev) & we'll review your code
|