As a general guideline, you should stick to the following rules:
- Set your minVersion in your targetApplication block to the lowest version of Pale Moon that your extension fully supports:
- Use a full, 3-part version number, e.g. 27.0.0, not "27" or "27.0".
- If you want to indicate minimum compatibility with all versions in a specific milestone, use .0.0a1 (e.g. 27.0.0a1). This is needed because otherwise any pre-releases (alpha/unstable, beta, etc.) will not be considered compatible. The VersionComparator considers 27.0.0a1 to be less than 27.0.0; if you're used to direct string comparisons, this may seem incorrect, but that's how this thing works
- Set your maxVersion in your targetApplication block to the highest known and existing milestone version of Pale Moon that you can reasonably expect the extension to support.
- When indicating guaranteed compatibility with everything in a certain milestone (common), use a single asterisk after the milestone, e.g. 27.*
- You should only use a higher milestone version if there is a reasonable assumption based on published/discussed information that the higher milestone will, in fact, support your extension.
- You should never use * to indicate maximum compatibility ("all versions in the future, forever"). Although it's a quick way of saying "I never expect this to stop working", it is problematic from a technical point of view (see below) since you cannot guarantee that the extension will be compatible with what might be a completely different platform of a new milestone, and your extension can in that case break the browser. Using an existing version with an asterisk is not necessarily a problem because extensions are assumed to be forward compatible unless specified otherwise. This has been the case sine v11 or so.
- If your extension relies very heavily on specifics of the user interface (e.g. complete themes), you may want to use small version ranges corresponding specifically to major updates, and enable "strictCompatibility" in install.rdf:
Code: Select all
<em:strictCompatibility>true</em:strictCompatibility>
- To allow point releases and security updates, you should at most indicate 2 version parts for your maxVersion, e.g. 27.2.*, so these updates can always be installed without making your extension incompatible.
The way the extension installer handles extension versions, it will accept extensions that have a lower maxVersion than the current application version unless "strictCompatibility" is set. This means that even if your maxVersion is 27.*, people can still install it on 28.0 or 29.0, for example. At the same time, it allows for control mechanisms to be used to stop incompatible versions from being installed or enabled if they are really not compatible (e.g. if the browser core has significantly changed that makes certain versions have a hard incompatibility). If you would use * instead, there is no way for the extension installer to know, and it will happily install completely incompatible extensions as a result, assuming full compatibility with whatever version of the browser is being used.