If you would like to have your service integration maintained as a part of the Nuvola Player project and distributed in the Nuvola Player repository, following rules apply.
Copyright and license of all files must be clearly documented in README.md
. All files must
have license approved by the Open Source Initiative,
preferably the same license as Nuvola Player (BSD 2-Clause "Simplified" or "FreeBSD" license).
Full text of a license must be provided in file LICENSE
or LICENSE.txt
. If more than one
license are used, add a distinguishing suffix, e.g. LICENSE-BSD.txt
. You can look at
README.md template
for inspiration. In addition, the metadata.json
file must contain a list of licenses in the
license
field, e.g. "license": "2-Clause BSD, CC-BY-3.0"
.
The field maintainer_link
of metadata.json
must contain URL of your
Github profile. (You will be subscribed to bug reports related to your service
integrations).
You must provide contact e-mail in README.md
, e.g. inside Copyright section.
You must use Standard JS coding style for integrate.json
.
You must use strict JavaScript mode and self-executing anonymous function. (See tutorial.)
You have to use NuvolaKit JavaScript API >= 4.11.
You have to mark translatable strings in integrate.js
.
Your repository must contain file CONTRIBUTING.md
with instructions for contributors.
You can copy
CONTRIBUTING.md template
and adjust it to your needs.
You have to create a CHANGELOG.md
file with a limited subset of Markdown syntax (headings, links, bullet points).
Example with an unreleased initial release.
Example with a few released releases.
You should use the same license as Nuvola Player does (BSD 2-Clause "Simplified" or "FreeBSD" license) unless you have severe reasons to choose different license. In that case you should stick to the popular open-source licenses with strong communities:
You must specify the license in README.md
and in the licence
field of metadata.json
.
Nuvola Player expects your integration to provide a set of icons in the icons
directory. However,
you don't have to care about it as service integration template already contains generic Nuvola
Player source icons and a Makefile target to build the icon set from them. These generic icons
will be later replaced by icons provided by Alexander King. In case you insist on providing your
own icons, the resulting icon set must consist of:
16.png
- 16×16 px PNG icon22.png
- 22×22 px PNG icon24.png
- 24×24 px PNG icon32.png
- 32×32 px PNG icon48.png
- 48×48 px PNG icon64.png
- 64×64 px PNG icon128.png
- 128×128 px PNG icon256.png
- 256×256 px PNG iconscalable.svg
- scalable SVG icon with base size 512×512 pxAll PNG icons must be build from source SVG icons via a Makefile rule. While the file
scalable.svg
can be used to build icon sizes 64-256, smaller icons will need their own fine-tuned
source SVG icons: icons 16, 22 and 24 from a SVG image with base size 16 px and icons 32 and 48 from a SVG image
with base size 32 px. See template
for inspiration.
Beware of copyright infringement
A common mistake is to take an official logo of a particular streaming service, resize it or crop it and then use it as icon for Nuvola Player. This approach has always led to violation of the first rule regarding to copyright and license and affected integration scripts were rejected until the file was removed.
metadata.json
in regular commits nor in pull requests,
but only in special release commits.Release X.Y
, are tagged X.Y
(not vX.Y
nor release-X.Y
, just X.Y
)
and must also update changelog (X.Y.Z - unreleased
→ X.Y.Z - ${release date}
, e.g. 1.2 - September 28, 2016
,
example).
However, you don't have to make release commits at all, just jump to the next step.${app name} Changelog
.- unreleased
(example).Commit messages should follow this template:
Short (50 chars or less) summary of changes More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. The blank line separating the summary from the body is critical (unless you omit the body entirely); tools like rebase can get confused if you run the two together. Further paragraphs come after blank lines. Also don't forget to link to issues. Issue: tiliado/nuvolaplayer#128
tiliado/nuvolaplayer#128
, if there is any. See
Writing on GitHub for details.If you would like to get your code contributions merged to the main repository, create a pull request. Pull request should follow similar template like commit messages, because a merge commit message will be based it:
Short (50 chars or less) summary of changes More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. The blank line separating the summary from the body is critical (unless you omit the body entirely); tools like rebase can get confused if you run the two together. Further paragraphs come after blank lines. Also don't forget to link to issues. - Author: Pull Request Author Name <your@email> - Reviewed by: FIXME <FIXME> - Issue: tiliado/nuvolaplayer#128 --- If you have some other notes regarding the pull request, add a separator "---" and then write anything you want to ;-) This part won't be included in a commit message.
Author: Pull Request Author Name <your@email>
- you will be recorded as the author of the
merge commit (see bellow)Reviewed by: FIXME <FIXME>
- the FIXME
placeholder will be filled by a reviewer,Issue: tiliado/nuvolaplayer#128
If you are a maintainer of a repository, follow these rules how to accept pull requests and create merge commits. First of all, check whether the title of a pull request and a description conforms guidelines above. If not, notify the author of the pull request (less work for you) or prepare a well formed commit message on your own (more work for you).
Message of merge commits should follow this template:
Short (50 chars or less) summary of changes More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. The blank line separating the summary from the body is critical (unless you omit the body entirely); tools like rebase can get confused if you run the two together. Further paragraphs come after blank lines. Also don't forget to link to issues. - Reviewed by: Your Name <your@email> - Reviewed by: Another Reviewer <his@email> - Pull Request: fenryxo/test#2 - Issue: fenryxo/test#3
https://github.com/fenryxo/test/pull/2
→ - Pull request: fenryxo/test#2
https://github.com/fenryxo/test/issues/3
-> + - Issue: fenryxo/test#3
Don't use GitHub to do a merge. It's a pure crap:
Always merge pull requests via command line:
git remote add gh-USER https://github.com/USER/REPO.git; git fetch gh-USER
git checkout gh-USER/BRANCH
git checkout master
git merge --no-ff --no-commit gh-USER/BRANCH
instead of a plain git merge
to merge the
pull request.git commit --author "Pull Request Author Name <author@email>"
to commit the merge on
behalf of the pull request author with a very descriptive commit message:Reviewed by: Your Name <Your@email>
https://github.com/fenryxo/test/pull/2
→ - Pull Request: fenryxo/test#2
https://github.com/fenryxo/test/issues/3
-> + - Issue: fenryxo/test#3
git push
.git remote remove gh-USER/BRANCH