General

The catalog is an XML file describing all plugins available to be downloaded. A formal xsl definition is available at the plugins project (see below).

The basic structure is

  <plugins>
    <version>0.0.2</version>
    <date>2019-11-15 14:21:46</date>
    <plugin version="1">
    ...
    </plugin>
    <plugin version="1">
    ...
    </plugin>
  </plugins>

Here we have:

  • The version, a semantic version as of https://semver.org. The version level is independent of opencpn’s.

  • Date is a free-format string.

  • Each <plugin> represents a tarball to download; that is, a plugin build for a specific platform.

The file is typically large, several thousand lines, and requires tooling to be maintained. To provide these tools is one of the purposes of the plugins project.

Plugin

Each <plugin> section defines some tags for the actual tarball:

name must match (case sensitive) the name as returned by the plugin’s GetCommonName() function, typically without any _pi suffix and often mixed case.

version is what defines the download as an update or downgrade when compared to an already installed version. The preferred version format is semantic versioning as of https://semver.org/. Even if semantic versioning isn’t used the versions must be sortable in a sane way.

release is intended for downstream packaging, an extra digit in the version (normally "1").

target can be either darwin (for MacOS) or msvc (visual studio windows build). For other platforms it’s an operating system-arch tuple like flatpak-x86_64 or ubuntu-armhf.

target-version is the operating system version, preferably in numerical form like 18.04.

target-arch is the hardware platform, for example "x86_64" or "armhf". On windows, flatpak and darwin/macos it should always be x86_64. On linux, the same as the -arch suffix in target (see above).

api-version defines the lowest OpenCPN plugin API version required by this plugin.

source and author are reserved for future use.

tarball-url is the url from which the plugin tarball could be downloaded.

info-url is presented in the plugin GUI, a link for more information about his plugin.

summary Is a real short description of the plugin. Avoid the words plugin and OpenCPN here, that this is an OpenCPN plugin is obvious given the context.

description is a larger, multiline description presented in the UI on user request. It should be manually formattted into lines no longer than 40 characters to fit also on small screens.