Skip to content

Add add-on store conventions for manifest to developer guide#15888

Merged
seanbudd merged 3 commits into
masterfrom
addAddonStoreConventions
Dec 10, 2023
Merged

Add add-on store conventions for manifest to developer guide#15888
seanbudd merged 3 commits into
masterfrom
addAddonStoreConventions

Conversation

@seanbudd

@seanbudd seanbudd commented Dec 7, 2023

Copy link
Copy Markdown
Member

Link to issue number:

None

Summary of the issue:

The add-on store adds additional requirements to manifest files for add-ons.
These should be explained in the developer guide.

Description of user facing changes

  • Add explanation for convention for add-on version numbers.
  • Add convention for add-on ID to be lowerCamelCase.
  • Add https convention for URL

@seanbudd seanbudd requested a review from a team as a code owner December 7, 2023 05:29
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t Outdated
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t Outdated
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t Outdated
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t Outdated
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t Outdated
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t Outdated
- version (string): The version of this add-on; e.g. 2.0. (Mandatory)
- author (string): The author of this add-on, preferably in the form Full Name <email address>; e.g. Michael Curran <mick@kulgan.net>. (Mandatory)
- name (string, required): A short unique name for the add-on.
This is used to differentiate add-ons internally and is not shown to the user.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we also note that it is used when checking if the given add-on is in the store and can be updated? It may also be worth mentioning that if the name does not comply with the recommended standards, renaming an add-on for the store submission means that user is not offered updates if they have installed it externally previously, and should not be done.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this case covered by the explanation that it is used to differentiate add-ons? A consequence of that would be a different add-on ID is treated as a different add-on.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this targets developers perhaps this is indeed sufficient. If someone complains documentation can always be improved.

@seanbudd

seanbudd commented Dec 8, 2023

Copy link
Copy Markdown
Member Author

@XLTechie @CyrilleB79 - I think I have addressed all review comments now

@AppVeyorBot

Copy link
Copy Markdown

See test results for failed build of commit c9b1111e75

Comment thread projectDocs/dev/developerGuide/developerGuide.t2t Outdated
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t
Comment thread projectDocs/dev/developerGuide/developerGuide.t2t
Co-authored-by: Luke Davis <8139760+XLTechie@users.noreply.github.com>

@CyrilleB79 CyrilleB79 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

- For a user to be able to update to this add-on, the version must be greater than the last version uploaded.
- Add-on versions are expected to be unique for the addon name and channel, meaning that a beta, stable and dev version of the same add-on cannot share a version number.
This is so there can be a unique ordering of newest to oldest.
- The suggested convention is to increment the patch version number for dev versions, increment the minor version number for beta versions, and increment the major version number for stable versions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, still a remark; let me know if it should be discussed out of this PR though.

The suggested add-on versionning is still unclear to me.

What versions would you suggest for the following releases, all before 2024.1 stable release?

  1. First stable release of MyAddon, compatible with 2023.3 but not with 2024.1
  2. Dev release of MyAddon implementing compatibility with 2024.1 (including incompatible changes)
  3. Stable release on top of the first stable, containing a hotfix (e.g. due to external change such as new Windows update)
  4. Dev release on top of the last dev, containing the same hotfix.

@seanbudd seanbudd Dec 10, 2023

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you don't want to follow the conventions exactly, this should be fine, particularly if (2) is a major update to the add-on: 1.0.0, 2.0.0, 1.0.1, 2.0.1

However, I think the convention ordering might still be fine/better: 1.0.0, 1.0.1, 2.0.1, 2.0.2 or 1.0.0, 1.0.1, 2.0.0, 2.0.1

This ensures:

  • (2) will not update to (3) without a user overriding compatibility
  • (2) and (4) won't show up to users on 2023.3 if they have a minimum API version of 2024.1
  • If all 4 releases have cross 2023.3/2024.1 compatibility, a user can be encouraged to update to each sequential version (e.g. (3) if (4) takes a while to be released).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you don't want to follow the conventions exactly, this should be fine, particularly if (2) is a major update to the add-on: 1.0.0, 2.0.0, 1.0.1, 2.0.1

However, I think the convention ordering might still be fine/better: 1.0.0, 1.0.1, 2.0.1, 2.0.2

This ensures:

* (2) will not update to (3) without a user overriding compatibility

* (2) and (4) won't show up to users on 2023.3 if they have a minimum API version of 2024.1

* If all 4 releases have cross 2023.3/2024.1 compatibility, a user can be encouraged to update to each sequential version (e.g. (3) if (4) takes a while to be released).

OK. I understand now the recommended scheme: it's important to note that in the recommended scheme, the minor version number does not turn back to 0 when increasing the major version number. It would be nice to have an example since I had not it in mind and I do not know any current add-on following this scheme.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this could be improved by saying version numbers can also be arbitrarily increased for "base" major addon update releases. e.g 1.x.x dev/beta/stable becomes 2.0.0 stable

@seanbudd seanbudd Dec 10, 2023

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also note that we will be able to abandon this convention for a simpler one, if we can include a patch number and a separate version display string

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@CyrilleB79, I try to follow this scheme in all my add-ons. Hope it"s well followed, unless some mistake from my part. You may search nvdaes in the store to see some examples, and if something is wrong I"ll try to fix it in the future, since my intention was allways to follow this convention for versions and channels.

seanbudd pushed a commit to nvaccess/addon-datastore-transform that referenced this pull request Dec 10, 2023
Found while reviewing nvaccess/nvda#15888

Issue
NVDA API version json file does not cover all existing NVDA versions. These ones minor versions are missing:

2018.4.1
2019.1.1
2019.2.1
2019.3.1
I doubt any add-on is impacted by these missing minor versions. But for completeness and clarity, it's better to have them covered.

Solution
Fix the description of API 0.0.0 so that 2018.4.1 is covered
Added API for 2019.1.1 and 2019.2.1
Fixed description of 2019.3 to include also 2019.3.1. No API is added for this version since it contains only new translations; it is worth noting that this version is not listed in NVDA's change log.
@seanbudd seanbudd merged commit c048740 into master Dec 10, 2023
@seanbudd seanbudd deleted the addAddonStoreConventions branch December 10, 2023 22:25
@nvaccessAuto nvaccessAuto added this to the 2024.1 milestone Dec 10, 2023
seanbudd pushed a commit to nvaccess/addon-datastore that referenced this pull request Mar 17, 2026
Found while reviewing nvaccess/nvda#15888

Issue
NVDA API version json file does not cover all existing NVDA versions. These ones minor versions are missing:

2018.4.1
2019.1.1
2019.2.1
2019.3.1
I doubt any add-on is impacted by these missing minor versions. But for completeness and clarity, it's better to have them covered.

Solution
Fix the description of API 0.0.0 so that 2018.4.1 is covered
Added API for 2019.1.1 and 2019.2.1
Fixed description of 2019.3 to include also 2019.3.1. No API is added for this version since it contains only new translations; it is worth noting that this version is not listed in NVDA's change log.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants