If you have not previously submitted a version of your plugin, you can use the "New Plugin" button here to upload a gem. Note that you must be logged in to do this. We will then manually review your submission and publish it to the app store. If we reject your submission, you will be notified with a reason for the rejection. You can view your pending submissions on the My Plugins page.
Once you have a plugin published, you can submit additional versions using the "Update" button on the plugin details card. You can submit new versions, or backfill old ones. Each update is subject to the same review process as new submissions. All versions of a plugin must have the same name, title, and access type (see metadata below).
We reserve the right to reject any submission for any reason. All app store submissions are subject to the following rules:
Your gem must be a COSMOS plugin. We recommend using our generator when getting started.
Your plugin must include a cover image, which displays in the plugin cards here. The default location is at public/store_img.png, but you can place the image anywhere in your gem as long as you set the openc3_store_image metadata field in your gemspec. Make sure that the path to the image is included in the s.files of your gemspec when you build the gem.
Required fields
| Field | Location in gemspec (in order of precedence) | Description |
|---|---|---|
| Name | s.name |
Unique identifier for your plugin. Example: "openc3-cosmos-tool-videoplayer"
|
| Title | s.metadata['openc3_store_title'] OR s.summary |
Short, user-friendly name for your plugin. Example: "Video Player"
|
| Description | s.metadata['openc3_store_description'] OR s.description |
A few sentences describing what your plugin does. Example: "This plugin provides COSMOS with an integrated video player capable of playing back most common video file types..."
|
| Licenses | s.licenses |
An array of the applicable software license(s) for your gem. Note: Must be compatible with COSMOS (cannot be copyleft like AGPL). Example: ['MIT', 'BSD']
|
| Keywords | s.metadata['openc3_store_keywords'] |
A comma delimited list of keywords to help search for your plugin. Example: "video, streaming"
|
| Homepage | s.homepage |
The URL to the homepage for your plugin (can be its repository page in github, or another website). Example: "https://github.com/OpenC3/openc3-cosmos-tool-videoplayer"
|
| Version | s.version |
The semver version of your gem. Example: "1.2.3"
|
Optional fields
| Field | Location in gemspec | Description |
|---|---|---|
| Repository | s.metadata['source_code_uri'] |
A link to the source code for your plugin. Example: "https://github.com/OpenC3/openc3-cosmos-tool-videoplayer" Default: none |
| Minimum COSMOS Version | s.metadata['openc3_minimum_cosmos_version'] |
The minimum version of COSMOS your plugin is compatible with. Example: "6.10.0" Default: "5.0.0"
|
| Access type | s.metadata['openc3_store_access_type'] |
Who can access your plugin ("public" means everyone can access it, "enterprise" means customers of COSMOS Enterprise can access it, and "allowlist" means only a specific list of people can access it). You must be an Enterprise user to submit an "enterprise" plugin. Please contact us prior to submitting an "allowlist" plugin. Example: "enterprise" Default: "public"
|
| Image path | s.metadata['openc3_store_image'] |
The path to the cover image file in your gem. This field can be omitted if you store your image at the default path (`public/store_img.png`), but you must set it if your cover image is stored somewhere else. Example: "img/cover.jpg" Default: "public/store_img.png"
|
Example gemspec
(This is truncated to omit fields that are not relevant to the app store submission, but might be required for building your gem.)
spec = Gem::Specification.new do |s|
s.name = 'openc3-cosmos-tool-videoplayer'
s.summary = 'Video Player Tool for OpenC3 COSMOS' # Overridden by openc3_store_title
s.description = 'This plugin adds the COSMOS Video Player tool' # Overridden by openc3_store_description
s.homepage = 'https://github.com/OpenC3/openc3-cosmos-tool-videoplayer'
s.licenses = ['MIT']
s.files = Dir.glob("{targets,lib,procedures,public,tools,microservices}/**/*") + %w(Rakefile LICENSE.txt README.md plugin.txt)
s.metadata = {
"source_code_uri" => "https://github.com/OpenC3/openc3-cosmos-tool-videoplayer",
"openc3_store_title" => "Video Player",
"openc3_store_description" => "This plugin provides COSMOS with an integrated video player capable of playing back most common video file types, as well as HLS streams. Included is the top-level tool and a widget that can be used in TlmViewer screens.",
"openc3_store_keywords" => "video, streaming",
"openc3_store_image" => "public/store_img.png",
"openc3_store_access_type" => "public",
"openc3_cosmos_minimum_version" => "6.10.0"
}
# ...
end