diff options
author | David Robillard <d@drobilla.net> | 2013-02-09 03:11:31 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2013-02-09 03:11:31 +0000 |
commit | 4ee92b42cbbb5ba43ddf7536b71811195b025900 (patch) | |
tree | d80bb14019bac015bdaf47d03cfb6805762060ef | |
parent | 670089dc2a1600551ee0331f4ad13af24f359199 (diff) | |
download | lv2-4ee92b42cbbb5ba43ddf7536b71811195b025900.tar.xz |
Reserve minor version 0 for unstable development plugins (fix #9).
-rw-r--r-- | lv2/lv2plug.in/ns/lv2core/lv2core.doap.ttl | 2 | ||||
-rw-r--r-- | lv2/lv2plug.in/ns/lv2core/lv2core.ttl | 54 |
2 files changed, 24 insertions, 32 deletions
diff --git a/lv2/lv2plug.in/ns/lv2core/lv2core.doap.ttl b/lv2/lv2plug.in/ns/lv2core/lv2core.doap.ttl index 25cace6..4fe9f3a 100644 --- a/lv2/lv2plug.in/ns/lv2core/lv2core.doap.ttl +++ b/lv2/lv2plug.in/ns/lv2core/lv2core.doap.ttl @@ -27,6 +27,8 @@ rdfs:label "Set range of lv2:designation to lv2:Designation." ] , [ rdfs:label "Make lv2:Parameter rdfs:subClassOf rdf:Property." + ] , [ + rdfs:label "Reserve minor version 0 for unstable development plugins." ] ] ] , [ diff --git a/lv2/lv2plug.in/ns/lv2core/lv2core.ttl b/lv2/lv2plug.in/ns/lv2core/lv2core.ttl index c339343..8bfd6ec 100644 --- a/lv2/lv2plug.in/ns/lv2core/lv2core.ttl +++ b/lv2/lv2plug.in/ns/lv2core/lv2core.ttl @@ -312,12 +312,11 @@ lv2:minorVersion rdfs:range xsd:nonNegativeInteger ; rdfs:label "minor version" ; lv2:documentation """ -<p>The minor version of an LV2 Resource. This property is used (along with -lv2:microVersion) by hosts to distinguish different versions of a compatible -resource, e.g. to load only the bundle with the most recent version.</p> -<p>The version of an LV2 resource is composed of two fields: minor version, -and micro version. These have the usual semantics:</p> +<p>The minor version of an LV2 Resource. This, along with lv2:microVersion, is +used to distinguish between different versions of the <q>same</q> resource, +e.g. to load only the bundle with the most recent version of a plugin. An LV2 +version has a minor and micro number with the usual semantics:</p> <ul> <li>The minor version MUST be incremented when backwards (but not @@ -328,24 +327,19 @@ plugin.</li> compatibility at all, e.g. bug fixes or documentation updates.</li> </ul> -<p>Note there is deliberately no concept of a major version: all versions of an -LV2 resource with a given URI are by definition backwards compatible. More -precisely: replacing a resource with a newer version of that resource MUST NOT -break anything. If a change is made which breaks this rule, the URI -of the resource MUST be changed. In contexts where a full (e.g. <a -href="http://semver.org">SemVer</a> conformant) version number is required, the -major version of all released LV2 resources is 1.</p> +<p>Note there is deliberately no major version; all versions with the same URI +are compatible by definition. Replacing a resource with a newer version of +that resource MUST NOT break anything. If a change violates this rule, then +the URI of the resource (which serves as the major version) MUST be +changed.</p> -<p>Plugins and extensions MUST adhere to the following rules:</p> +<p>Plugins and extensions MUST adhere to at least the following rules:</p> <ul> <li>All versions of a plugin with a given URI MUST have the <q>same</q> set of mandatory (i.e. not lv2:connectionOptional) ports with respect to lv2:symbol -and rdf:type. In other words, every port on a specific version of a plugin has -a lv2:symbol and a set of rdf:types; all future versions of that plugin are -guaranteed to have a port with the same lv2:symbol and at least those -rdf:types. New types may be added only if doing so does not break -compatibility, i.e. if old hosts will continue to work correctly with the new -plugin.</li> +and rdf:type. In other words, every port on a particular version is guaranteed +to exist on a future version with same lv2:symbol and at least those +rdf:types.</li> <li>New ports MAY be added without changing the plugin URI if and only if they are lv2:connectionOptional and the minor version is incremented.</li> @@ -353,31 +347,27 @@ are lv2:connectionOptional and the minor version is incremented.</li> <li>The minor version MUST be incremented if the index of any port (identified by its symbol) is changed.</li> -<li>All versions of an extension MUST be compatible in the sense that an +<li>All versions of a specification MUST be compatible in the sense that an implementation of the new version can interoperate with an implementation of any previous version.</li> </ul> -<p>(Note these rules are not necessarily exhaustive)</p> - <p>Anything that depends on a specific version of a plugin (e.g. a serialisation that references ports by index) MUST refer to the plugin by both -URI and version. However, implementations should be tolerant and extensions +URI and version. However, implementations should be tolerant and extensions should be designed such that there is no need to do this (e.g. indices should only be meaningful for a particular plugin <em>instance</em> at run-time).</p> <p>When hosts discover several installed versions of a resource, they SHOULD warn the user and load only the most recent version.</p> -<p>An odd minor <em>or</em> micro version indicates that the resource is a -possibly unstable development version. Hosts and tools SHOULD clearly indicate -this wherever appropriate. Several versions of a resource with an odd version -may exist; i.e. it is acceptable to work on a development version of a resource -(e.g. in source control) without worrying about version numbers as long as -either the minor or micro version is odd.</p> - -<p>This property describes half of a resource version. See lv2:minorVersion -for the description of the other half.</p> +<p>An odd minor <em>or</em> micro version, or minor version zero, indicates +that the resource is a development version. Hosts and tools SHOULD clearly +indicate this wherever appropriate. Minor version zero is a special case for +pre-release development of plugins, or experimental plugins that are not +intended for stable use at all. Hosts SHOULD NOT expect such a plugin to +remain compatible with any future version. If possible, hosts SHOULD hide such +plugins from users unless an <q>experimental</q> option is enabled.</p> """ . lv2:microVersion |