Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add-on store: add ability to evaluate add-ons from NVDA #15576

Closed
nvdaes opened this issue Oct 4, 2023 · 38 comments · Fixed by #15756
Closed

add-on store: add ability to evaluate add-ons from NVDA #15576

nvdaes opened this issue Oct 4, 2023 · 38 comments · Fixed by #15756
Labels
feature/addon-store Features / behavior of the add-on Store p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Milestone

Comments

@nvdaes
Copy link
Sponsor Contributor

nvdaes commented Oct 4, 2023

Is your feature request related to a problem? Please describe.

Add-ons don't require subjective reviews to be included in the store, and feedback can be sent directly to authors. This makes difficult to find feedback about add-ons from other users/code reviewers, specially if an add-on seems to be OK.

Describe the solution you'd like

In the actions menu for each add-on, it should be possible to open the issue corresponding to the add-on, or a GitHub discussion, which seems to make easier to be translated into other languages thanks to a GitHub feature, so that people can informa that an add-on is right, and users can consult this knowing the reviewer who provided the feedback.

Describe alternatives you've considered

The add-ons mailing list can be used, and also reviewers may post comments on different websites, encouraging people to use the store and specific add-ons.

Additional context

I've read negative comments by people complaining about the fact that the store can not be secure since add-ons are approved automatically, thoug seems that people previously complained since when add-ons were reviewed, some of them weren't accepted or considered.

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 4, 2023

For now, I don't find a way to programatically convert an issue to a discussion. But imo the issue number, or the corresponding PR, maybe stored in the json metadata file of each add-on, so that the URL can be opened from the actions menu. Also, reactions maybe used to make easy to speakers of different languages to understand if reviewers think that the add-on is right, and this maybe documented.
If this is triaged, I think that, since the json schema may change, this should be added in 2024.1 or in a breaking release, and the numberIssue field maybe optional.
If this is triaged, I may help with this, for example adding a new field in the json schema of addon-datastore-validation repo, trying to add an option in the actions menu of the store in NVDA, and addin this to GitHub workflows in addon-datastore repo, or I can take care of a subset of these tasks.

@nvdaes

This comment was marked as resolved.

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 4, 2023

cc @jcsteh due to the following quotation, in case you want to provide feedback about the store.
Im finishing my preparation for a talk about the store, and I wanted to give an overview about hystorical facts that I consider important about the website and repos related to the store and code reviews. Then I have remembered a message sent by you (Jamie) about lowering barriers regarding add-ons maintenance and publication. In that long message sent to freelists, you said on 30 Jan 2015:

  1. It would be good to have ways to rate add-ons, feature popular or
    extremely high quality add-ons, etc. so users have some indication of
    popularity/quality.

I clarify that I'm not very convinced about promoting popular add-ons since other ones maybe better, so I'd prefer to talk about quality and not popularity, but my proposal is to provide a way to see reactions and who reviewed add-ons.

@XLTechie
Copy link
Contributor

XLTechie commented Oct 5, 2023 via email

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 5, 2023 via email

@seanbudd
Copy link
Member

seanbudd commented Oct 6, 2023

This has been a requested a couple times, and we have an internal issue for this.

If we are to use GitHub, I think the simplest way would be to use GitHub discussions in nvaccess/addon-datastore.
We could generate a discussion on submission for each add-on ID and a new comment for each version.

Though, the best way to do this would be if NV Access creates our own server backend and reviews exist within the store.
However, this would be a major piece of work and is unlikely to be completed in the near future.

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 6, 2023 via email

@seanbudd seanbudd added p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation. feature/addon-store Features / behavior of the add-on Store labels Oct 6, 2023
@ruifontes
Copy link
Contributor

To simplify things, why not allow submitters, or only trusted submitters, to put a "Thumb up" or "Thumb down"?
And for all users, a "like" or "don't like"?
And show the number of each option?

@seanbudd
Copy link
Member

seanbudd commented Oct 6, 2023

@nvdaes

I would avoid generating a discussion for each submission and instead use one per add-on ID and a comment per version.
One per submission could get very noisy, and most reviews would be better centralised to an add-on itself not a particular version. People will miss reviews if it's a different discussion per version.

We also need to add this to the metadata and implement an add-on action in NVDA to open the reviews page.

@seanbudd
Copy link
Member

seanbudd commented Oct 6, 2023

I would also suggest waiting until this discussion pans out before starting implementation

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 6, 2023 via email

@seanbudd
Copy link
Member

seanbudd commented Oct 6, 2023

It also might be worth testing the different discussion types. "Q&A" (reviews are oriented around voting more) or "Polls" (to rate the add-on) might be worth trying out

@ruifontes
Copy link
Contributor

One question:
The review will be about security, code quality, functionality or what?
I still remember the discussions about NVDAExtensionGlobalPlugin add-on...
It is a very complex add-on? Sure it is...
Patch too much NVDA functions? Yes, it does...
It is usefull? Yes, it is...
How it should be classified?

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 6, 2023 via email

@XLTechie
Copy link
Contributor

XLTechie commented Oct 6, 2023 via email

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 6, 2023

I think that General category is easier to use. Also, for reference, here's a
GitHub action to create discussions
Also, I've managed to create a discussion with GitHub script action, making a call to API Graphql.

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 8, 2023

I've created a discussion also using the linked GitHub Action, not just GitHub Script, and it's great since it can return the discussion url aid. But we should use the announcement category, not the General one, so just maintainers can create discussions under this category. Then we may use the add-on id as the title,to check if a discussion for this particular add-on exists or not.

@ruifontes
Copy link
Contributor

ruifontes commented Oct 8, 2023 via email

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 8, 2023

Hi Rui. You wrote:

If I understand well, maintainers of a specific add-on can create
a discussion to that add-on...
But, lets suppose I create a discussion for one of our add-ons...
next day some reviewer, with or without reason, submit a very
negative review...
I, as owner of the discussion, can delete this comment, right?

No, I meant maintainers of addon-datastore repo, not add-on maintainers. The discussion would be created automatically after an issue to osubmit an add-on is opened. The announcement category would ensure that we can list discussion in that category with the title set to the add-on id. If we don't use the announcements category, everyone may create discussion with a title set to add-on ids, so it would be difficult to search for the discussion related to an add-on via GitHub Actions.

@ruifontes
Copy link
Contributor

ruifontes commented Oct 8, 2023 via email

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 8, 2023

I think that, instead of trying to list and filter all discussions under the announcement category, maybe better to find the add-on id of the submission and maintain a discussions.json file in the root of the repo, similar to submitters.json, to find out if the corresponding discussion exists. So, the first PR for this maybe done in the datastore repo. I'm discussing this here in case feedback is provided before proceeding with a PR.

@seanbudd
Copy link
Member

seanbudd commented Oct 8, 2023

That system makes sense @nvdaes

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 10, 2023

I'm stucked trying to add a comment to an existing discussion. Creating the discussion if it doesn't exists and save the discussion ID and discussion URL associated with each addon id seems easier.
If someone wants to get a look, we may make a better progress.

GitHub workflow to add discussion and comment

Here's the workflow run

Here's the created discussion

@seanbudd
Copy link
Member

@nvdaes - does the action we use to add comments to issues and pull requests not work for discussions? My assumption is that it should be the same to add a comment to a discussion as adding to an issue. This should be much easier

https://github.com/marketplace/actions/create-or-update-comment

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 11, 2023 via email

@seanbudd
Copy link
Member

seanbudd commented Oct 11, 2023

Shouldn't the comment be created after the discussion is created?

@seanbudd
Copy link
Member

seanbudd commented Oct 11, 2023

@nvdaes I think the parameters fed in https://github.com/nvdaes/addon-datastore/blob/master/.github/workflows/checkAndSubmitAddonMetadata.yml#L253C13-L253C33 should be encapsulated in quotes, e.g.

addDiscussionComment(input: {body: "17.0.0", discussionId: "D_kwDODeDxhs4AV09t", clientMutationId: "GitHub Script action"}) {\n' +

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 11, 2023 via email

@seanbudd
Copy link
Member

@nvdaes I think the parameters fed in https://github.com/nvdaes/addon-datastore/blob/master/.github/workflows/checkAndSubmitAddonMetadata.yml#L253C13-L253C33 should be encapsulated in quotes, e.g.

addDiscussionComment(input: {body: "17.0.0", discussionId: "D_kwDODeDxhs4AV09t", clientMutationId: "GitHub Script action"}) {\n' +

This should fix the issue you raise here

I'm stucked trying to add a comment to an existing discussion. Creating the discussion if it doesn't exists and save the discussion ID and discussion URL associated with each addon id seems easier.

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 11, 2023 via email

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 11, 2023

Finally the comment has been created. I think that one problem was that in the payload we need to specify comment { body } or other fields, but not just the word comment, in contrast with clientMutationId, which is not an object.
The workflow is linked above, now modified, and here's the discussion with the comment.

Please let me know how to specify the repository id and category id for nvaccess/addon-datastore. For example, you may want to store this data as secrets.
Also, we may change the json schema in addon-datastore-validation, or NVDA may just request the discussions.json file. In this case, the json schema won't need to be changed and the discussion URL would be an independent information not linked to add-on metadata.

@seanbudd
Copy link
Member

The repository ID should be fetchable depending on the context that the action is run in.

I can create a category soon, but I'd like to consider using the polls feature. Being able to vote on ratings out of 5 for an add-on would be useful in my opinion, and I don't understand the negatives in using this discussion type.

@seanbudd
Copy link
Member

I think we should add it to the metadata so that a user can open the reviews from the add-on store.

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 11, 2023 via email

@seanbudd
Copy link
Member

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 11, 2023 via email

@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Oct 11, 2023

@seanbudd , I've created pr nvaccess/addon-datastore#1757

seanbudd pushed a commit to nvaccess/addon-datastore that referenced this issue Nov 1, 2023
Related to nvaccess/nvda#15576

Summary of the issue
Add-ons submitted to the store don't require a previous human review, though some checks are performed automatically to ensure conformance with a predefined json schema, and to avoid the acceptance of add-ons which declare to be tested with non existing API versions.
Though security cannot be warranted, a known place to make and consult human reviews can be provided. This maybe useful to search for feedback of users and reviewers before installing an add-on.

Development process
GitHub Actions have been used to create a discussion for each addonId, and a comment for each submission (add-on version),after add-on metadata is merged to the main branch of the addon-datastore repo.

Some info about created discussions, associated with add-on ids, will be stored in a discussions.json file.

Also, the URL corresponding with the comment for each submission will be stored in the add-on metadata.
@nvdaes
Copy link
Sponsor Contributor Author

nvdaes commented Nov 2, 2023

@seanbudd , thanks for merging pr 1757 in addon-datastore repo. I've submitted readFeeds 26.0.0, and the corresponding discussion has been created at

nvaccess/addon-datastore#1942

I'll try to submit other related pull requests.

seanbudd pushed a commit that referenced this issue Nov 12, 2023
Closes #15576

Summary of the issue:
The add-on store doesn't have a mechanism to see and provide feedback for add-ons.

Description of user facing changes
Now, it's possible to open a webpage to provide or see feedback for add-ons from an action added to the add-on store.
The review URL is shown in the details panel for add-ons including a reviewUrl in metadata.
Description of development approach
An action has been added to provide feedback for add-ons, in a similar way to the approach followed for the license URL. Also, this has been added to the details panel.
@nvaccessAuto nvaccessAuto added this to the 2024.1 milestone Nov 12, 2023
seanbudd pushed a commit that referenced this issue Dec 6, 2023
Part of issue #15576.

Summary of the issue:
Now, add-ons can be reviewed from GitHub discussions, linked in the Available add-ons tab of the store.

Description of user facing changes
This improves documentation for this feature:

Explained that this action can be found in the Available add-ons tab.
Remove reference to comment on addon versions, since comments aren't longer added to add-ons metadata.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature/addon-store Features / behavior of the add-on Store p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants