Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
plugin_store_guidelines [2025/04/14 20:10] – external edit 127.0.0.1plugin_store_guidelines [2026/04/07 18:27] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ===== Plugin Store Submission Guidelines ===== ===== Plugin Store Submission Guidelines =====
- 
 This document outlines the rules for submitting a plugin to the [[http://www.indigodomo.com/pluginstore/|Indigo Plugin Store]]. While it may seem like a lot, it's mostly common sense. You can start the process from the [[https://www.indigodomo.com/account/plugins|Plugin Contributions section of your Indigo Account]]. This document outlines the rules for submitting a plugin to the [[http://www.indigodomo.com/pluginstore/|Indigo Plugin Store]]. While it may seem like a lot, it's mostly common sense. You can start the process from the [[https://www.indigodomo.com/account/plugins|Plugin Contributions section of your Indigo Account]].
  
 +**<color #ed1c24>NOTE</color>**: due to a configuration option on our backend system database, plugins with releases or README.md <color #ed1c24>files that contain emoji's will fail</color>. We intend to correct this at some point this year (2026), but for the time being please remove emojis from those files or they will fail to add to the store.
 ==== Creating Your Developer Account ==== ==== Creating Your Developer Account ====
- 
 If you haven't already, you'll need to go to the [[https://www.indigodomo.com/account/plugins|Plugin Contributions]] page in your Indigo Account and add your developer information: If you haven't already, you'll need to go to the [[https://www.indigodomo.com/account/plugins|Plugin Contributions]] page in your Indigo Account and add your developer information:
  
Line 14: Line 13:
  
 ==== Adding A Plugin ==== ==== Adding A Plugin ====
- 
 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. 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.
  
Line 24: Line 22:
  
 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. 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.
-==== General Rules ==== 
  
 +==== General Rules ====
 First, some general rules that you need to follow regardless of which approach you take: First, some general rules that you need to follow regardless of which approach you take:
  
   * Version numbers in the ''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.   * Version numbers in the ''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.
   * No two releases can have the same version number (X.Y.Z).   * No two releases can have the same version number (X.Y.Z).
-  * The Plugin ID (CFBundleIdentifier) can't change once once a plugin as been added.+  * The Plugin ID (CFBundleIdentifier) can't change once a plugin has been added.
   * The Plugin ID **must begin with your developer ID** specified above. This **should not** begin with ''com.indigodomo'' or ''com.perceptiveautomation''. So, if you specified ''com.johnsmith'' as your developer id, your plugin IDs would look like ''com.johnsmith.myfirstplugin''.   * The Plugin ID **must begin with your developer ID** specified above. This **should not** begin with ''com.indigodomo'' or ''com.perceptiveautomation''. So, if you specified ''com.johnsmith'' as your developer id, your plugin IDs would look like ''com.johnsmith.myfirstplugin''.
   * If the ''Contents/Resources/icon.png'' file exists in your Plugin bundle it will be used as the icon in the store (the {{:plugin_128x128.png?nolink&24|Plugin Image}} icon will be used if the file doesn't exist). See [[#Icons and Branding]] below for more details.   * If the ''Contents/Resources/icon.png'' file exists in your Plugin bundle it will be used as the icon in the store (the {{:plugin_128x128.png?nolink&24|Plugin Image}} icon will be used if the file doesn't exist). See [[#Icons and Branding]] below for more details.
Line 36: Line 34:
  
 ==== GitHub Specifics ==== ==== GitHub Specifics ====
- 
 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 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 [[https://wiki.indigodomo.com/doku.php?id=developer:github_setup_for_plugins|a simple How-To]] with lots of screen captures describing one way to set up your repository. If you're new to GitHub but want to try it out, we've written [[https://wiki.indigodomo.com/doku.php?id=developer:github_setup_for_plugins|a simple How-To]] with lots of screen captures describing one way to set up your repository.
 +
 === GitHub Repo Layout === === GitHub Repo Layout ===
- 
 This is the required GitHub Repo layout: This is the required GitHub Repo layout:
  
Line 53: Line 50:
  
 === GitHub Releases === === GitHub Releases ===
- 
 When you are ready to publicly release a version of the plugin (either initially or a follow-up release), you should add a release in GitHub: When you are ready to publicly release a version of the plugin (either initially or a follow-up release), you should add a release in GitHub:
  
Line 61: Line 57:
  
 == Release Requirements == == Release Requirements ==
- 
 There are a few requirements for GitHub releases: There are a few requirements for GitHub releases:
  
Line 69: Line 64:
  
 ==== Adding a Plugin ==== ==== Adding a 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: 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:
  
 {{ :add_plugin_1.png?nolink&400 |Add Plugin Image}} {{ :add_plugin_1.png?nolink&400 |Add Plugin Image}}
  
-<color red>**Note:**</color> 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.+<color red>**Note:**</color> 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.
  
 === Adding a Plugin from GitHub === === Adding a Plugin from GitHub ===
- 
 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: 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:
  
Line 114: Line 107:
  
 === Adding a Directly Managed Plugin === === Adding a Directly Managed Plugin ===
- 
 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). 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).
  
Line 147: Line 139:
  
 ==== Editing a Plugin ==== ==== Editing a Plugin ====
- 
 To edit a plugin, just go to your Indigo Account's [[http://www.indigodomo.com/account/plugins|Plugin Contributions]] page, find the release in the list and click the ''**Edit**'' button. You'll be able to change all editable fields there. To edit a plugin, just go to your Indigo Account's [[http://www.indigodomo.com/account/plugins|Plugin Contributions]] page, find the release in the list and click the ''**Edit**'' button. You'll be able to change all editable fields there.
  
 ==== Adding a Release ==== ==== Adding a Release ====
- 
 When you have an update to a plugin, you just need to add a release to it. Go to the [[http://www.indigodomo.com/account/plugins|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. When you have an update to a plugin, you just need to add a release to it. Go to the [[http://www.indigodomo.com/account/plugins|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 === === Adding a GitHub Release ===
- 
 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: 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:
  
Line 163: Line 152:
  
 **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). **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 Release for a Directly Managed Plugin === === Adding a Release for a Directly Managed Plugin ===
- 
 Adding a new release this way isn't really very hard either, there are just a few fields you need to fill out: Adding a new release this way isn't really very hard either, there are just a few fields you need to fill out:
  
Line 181: Line 170:
  
 ==== Editing a Release ==== ==== Editing a Release ====
- 
 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. 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.
  
 ==== Icons and Branding ==== ==== Icons and Branding ====
- +The Plugin Store shows icons for each plugin. If you don't include one in 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 {{:plugin_128x128.png?nolink&24|Plugin Image}} will be shown.
-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 {{:plugin_128x128.png?nolink&24|Plugin Image}} 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: 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:
Line 199: Line 186:
  
 ==== Linking to Indigo Docs ==== ==== Linking to Indigo Docs ====
- 
 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: 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:
  
Line 227: Line 213:
  
 ==== A Few Final Thoughts ==== ==== A Few Final Thoughts ====
- 
 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: 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:
  
  • /www/perceptive/wiki/data/attic/plugin_store_guidelines.1744661437.txt.gz
  • Last modified: 2025/04/14 20:10
  • by 127.0.0.1