This document outlines the rules for submitting a plugin to the Indigo Plugin Store. While it may seem like a lot, it's mostly common sense. You can start the process from the Plugin Contributions section of your Indigo Account.
First and foremost: please do not attempt to add a plugin that you don't “own.” If a developer of a plugin has abandoned it and you would like to take it over, please let us know and we'll take it from there (we've done this in the past and it's usually not a problem). Once we get permission we'll let you know and we can coordinate from there. If the developer is still active, let them know that you'd like to see it in the Plugin Store.
There are two ways to add a plugin:
The first and recommended option is via a GitHub Repository. You'll manage your plugin almost completely through GitHub. You'll create releases there, manage the various descriptions, etc. You will have the option to override some of that information in the plugin administration UI that we provide, but you'll likely find that managing everything through GitHub will be a better and more consistent experience.
The other option is to directly manage everything through our UI. With this approach you'll create your own plugin releases and upload each new release via our plugin administration UI. You'll need to manage all descriptions through our UI. If you don't want to learn how to use GitHub then this is the option for you.
First, some general rules that you need to follow regardless of which approach you take:
Info.plist
file must be of the form X.Y.Z (except the ServerApiVersion, which is X.Y). There are no beta/pre-release signifiers allowed.Contents/Resources/icon.png
file exists in your Plugin bundle it will be used as the icon in the store (the If you want to use GitHub (and there are many advantages to doing so), there are a few things to consider. We have a few (but not many) requirements in how your repo is constructed and how you do releases. There are also some optional things that you'll want to consider to make the experience for users even better.
If you're new to GitHub but want to try it out, we've written a simple How-To with lots of screen captures describing one way to set up your repository.
This is the required GitHub Repo layout:
At the top level of the repo should be your plugin folder and an optional README
file. You may have other files in there as well, like the LICENSE
file in the rachio-indigo repo above. The plugin is there for obvious reasons – it's the path into the source for your plugin. The README
file's contents will automatically be used as plugin's description and shown on the About tab on your Plugin's detail page:
Markdown in the README.md
file will be rendered correctly in the Plugin Store though you can also use a plain text file (README.txt
).
When you are ready to publicy release a version of the plugin (either initially or a follow-up release), you should add a release in GitHub:
We do not look at the “master branch” (or “tips”) of the repo. Only published releases (not pre-releases) will be added to the Plugin Store's release list (see Adding a GitHub Release below for details). The Plugin Store currently doesn't support listing betas (pre-releases) but you can still create them and point your beta testers to them on GitHub (one of the advantages to using GitHub).
There are a few requirements for GitHub releases:
Info.plist
file, otherwise the release will be rejected when added to the Plugin Store. Note: we will be looking in the source code zipball from the release for the Info.plist, not the attached plugin. If you're getting the mismatch error, that's where you'll need to look to fix any mismatching version numbers.README.md
or README.txt
file must be at the top level of the archive for it to automatically be used. This is to avoid issues if your plugin includes other source projects that may also have their own README files.MyPlugin.indigoPlugin.zip
) and make sure that there aren't any other zip files attached to the release. If you don't include an attached zipped plugin, the user will download a zipped copy of the repo itself, including the plugin, the README, etc. (basically everything in the repo). This may make it confusing for users to find and install the plugin.As we mentioned at the top, there are two ways to add a new plugin to the Plugin Store: by specifying a GitHub repo or by uploading an existing plugin:
Note: There is no automated way to convert between a github-based plugin and a directly managed plugin, so please carefully consider which approach you want to use before initially adding the plugin (we recommend github!). We can manually convert between the two, but it takes some time and effort.
To add a new plugin from a GitHub repo, just enter the GitHub user and repo names. As an example, for our Rachio Sprinkler repo, which is located here:
https://github.com/IndigoDomotics/rachio-indigo
We entered IndigoDomotics for the user and rachio-indigo as the repo. Note your repo must have at least one published release to be added to the Plugin Store.
Click the Next
button and you'll see the following page with the appropriate data pre-populated:
This form has a variety of fields (some read-only) that fall into two groups. The first group are fields about the plugin itself (not any specific release of the plugin):
Info.plist
file (read-only).Info.plist
file (read-only).README
file's contents from the repo will be inserted here. It may contain Markdown and you can edit it to make any changes you like. You will have the option of updating it from GitHub when you add new releases.Info.plist
. You may override it and it will never be overwritten automatically.Contents/Resources/icon.png
file) then it will automatically be used if you leave this field blank. Alternately, you can add a PNG file here.And the next section is specific information about the release that you're adding:
Info.plist
and just shown here for completeness. The Server API version is particularly important in that it determines what's shown as the minimum Indigo version required to use the plugin.
Required fields are marked with an asterisk (*). The majority of GitHub repos will have all the information needed for the required fields so it's only likely that you'll have to edit the Category field as a minimum (and if your plugin is an A/V or IR plugin you won't even have to do that!). Once you have reviewed all the form fields hit Add Plugin
.
You'll notice that on the right side of the screen we've provided a quick cheatsheet for Markdown syntax. This will be helpful when editing any fields that allow Markdown.
To add a new plugin from an existing zipped plugin, just click the Choose File button and select the file. Note that Safari will automatically zip plugin folders before uploading (but your browser of choice may not).
Click the Next
button and you'll see the following page (with the appropriate data pre-populated):
This form has a variety of fields (some read-only) that fall into two groups. The first group are fields about the plugin itself (not any specific release of the plugin):
Info.plist
file (read-only).Info.plist
file (read-only).Info.plist
. You may override it and it will never be overwritten automatically. Commonly developers use this URL to point to a specific post on their own sub-forum.Contents/Resources/icon.png
) then it will automatically be used if you leave this field blank. Alternately, you can add a PNG file here that will be used in the plugin's display in the Plugin Store.And the next section is specific information about the release that you're adding:
Info.plist
file.Info.plist
and just shown here for completeness. The Server API version is particularly important in that it determines what's shown as the minimum Indigo version required to use the plugin.
Required fields are marked with an asterisk (*). Once you've filled out the form hit Add Plugin
.
You'll notice that on the right side of the screen we've provided a quick cheatsheet for Markdown syntax. This will be helpful when editing any fields that allow Markdown.
To edit a plugin, just go to your Indigo Account's Plugin Contributions page, find the release in the list and click the Edit
button. You'll be able to change all editable fields there.
When you have an update to a plugin, you just need to add a release to it. Go to the Plugin Contributions section of your Indigo Account, find the plugin, and click either the Edit/Add Release
button for GitHub plugins or the Add Release
button for directly managed plugins.
Adding a GitHub release couldn't be easier. Once you've clicked the Edit/Add Release
button, you'll see the plugin edit form where you can edit the plugin and release information. At the bottom of the form, you'll see the following checkboxes:
The first checkbox is automatically checked and therefore when you Save the form it will add any new releases. The next checkbox will update the main plugin description with the README
file from the most recent release, and the last checkbox will update the icon from the most recent release. Super simple!
Note: the release version number in the Github release source zip's Info.plist must match the tag for the Github release. Otherwise, the release will not be added. This sanity check will help ensure that you don't end up with version mismatches and the associated problems that will result (failed update checking, failed upgrades, etc).
Adding a new release this way isn't really very hard either, there are just a few fields you need to fill out:
Choose File
button and select the plugin folder. Note that Safari will automatically zip plugin folders before uploading (but your browser of choice may not).If there is an icon in the bundle, use it for the plugin's icon in the Plugin Store
- if checked then the icon in the bundle will replace the icon currently being used.
Required fields are marked with an asterisk (*). Once you've filled out the form hit Add Release
.
You'll notice that on the right side of the screen we've provided a quick cheatsheet for Markdown syntax. This will be helpful when editing any fields that allow Markdown.
To edit a release, just go to your plugin's detail page, switch to the Releases tab, expand the release you want to edit and click the Edit
button. You'll be able to change all editable fields there.
The Plugin Store shows icons for each plugin. If you don't include one in the the plugin bundle (Contents/Resources/icon.png
) and you don't add one explicitly to the release (see Adding and Editing Releases for details) then the default Indigo Plugin icon will be shown.
To make it easy for users browsing the Plugin Store to identify something they're looking for, it's quite helpful to include an icon that represents what your plugin does. For instance, if you are integrating a specific vendor's products (like the Rachio Sprinkler example above) then you'll probably want to use their icon. Here are some tips to help find an appropriate icon:
We believe that the vast majority of companies won't mind you using their logos to promote their products as long as it's clear that you have no direct affiliation to the company. If there is an issue it's easy for us to remove.
Icon details: 256 x 256 is the optimal size. Images must be 128px high or they aren't going to look good (somewhat wider might work on some screen sizes). The icons must be .png files and the file name should always be icon.png
. Note the macOS Preview app can be used to convert other image formats to .png.
If your documentation needs to link to Indigo's main wiki documentation then understanding how we handle documentation versioning is important. When we make major release changes that require significant documentation changes, we create a new wiki namespace for that release. For instance, the Indigo 6 docs are at:
https://wiki.indigodomo.com/doku.php?id=indigo_6_documentation:documents
and the Indigo 7 docs are at:
https://wiki.indigodomo.com/doku.php?id=indigo_7_documentation:documents
As an example, if Indigo 7.2 had significant enough changes that we decided to create a new namespace then they would be found at:
(https://wiki.indigodomo.com/doku.php?id=indigo_7_2_documentation:documents)
and all references to previous (version 7) doc pages would now point to the old version. In order to help prevent this problem, you can use the following version-agnostic URL instead:
http://www.indigodomo.com/docs/PATH_TO_WIKI_DOC
where PATH_TO_WIKI_DOC is everything after the colon (:) in one of the docs. So, for instance, if you want to link to the sprinkler controls:
(https://wiki.indigodomo.com/doku.php?id=indigo_7_documentation:overview#sprinkler_controls)
but always want to link to whatever the latest docs are, you could instead use:
http://www.indigodomo.com/docs/overview#sprinkler_controls
That url will attempt to map that wiki path (and optional anchor) to the most recent doc release. You may, of course, link directly to a specific version namespace doc if that is what is needed.
That's pretty much all there is to managing a plugin in the Plugin Store. Here are a few final random thoughts and important reminders: