Skip to content
This repository has been archived by the owner on Sep 9, 2021. It is now read-only.

[desktop-wallet][2000 USD] Plugin Discovery #11

Closed
alexbarnsley opened this issue Aug 20, 2019 · 2 comments · Fixed by ArkEcosystem/desktop-wallet#1501
Closed

[desktop-wallet][2000 USD] Plugin Discovery #11

alexbarnsley opened this issue Aug 20, 2019 · 2 comments · Fixed by ArkEcosystem/desktop-wallet#1501
Assignees
Labels
Difficulty: Advanced The issue requires advanced understanding of the code base.

Comments

@alexbarnsley
Copy link

About This Project

This Tier 0 project is to improve the current workflow of the plugin system, but also to implement a way of finding and installing new plugins. The current problem is that users of the Desktop Wallet have no way of finding new plugins and there is no central place to find them.

We will use the NPM repository to host plugins, making use of the keywords functionality. This can be done via an API request to NPM directly, for example. All official ARK Ecosystem plugins will be located within the @arkecosystem NPM organization and will have the same format (e.g. @arkecosystem/desktop-wallet-explorer). We will only be using NPM until the Plugin Registration transactions are available on the APN.

Plugins show now also be restricted (optional) by the wallet version using a minVersion property, similar to how NPM packages.

The UX will be based on the provided designs and will work as follows:

  • The header at the top will include:
    • The title "Plugins"
    • A search bar
    • Button to install a plugin
    • Button to install a plugin from URL
    • Button to install a plugin from file
  • Official ARK Ecosystem plugins
    • Will have a verified icon next to the author's name
    • Can be filtered when searching
  • Searching
    • Will show a new page with search results
    • Allows for filtering down the search results
    • It would be good to also offer the ability (if possible) to be able to choose older versions of plugins
  • There will be a predefined list of categories, which will be linked to the "keywords" in package.json (which is also found on NPM). Anything outside of this list will come under "other"
  • There will be an option to download a plugin from a particular URL, or be able to choose a plugin which has already been downloaded from the computer's file system
    • Determine the best way to do this (zip, tar, etc)
  • When viewing a plugin, all details should be provided
    • Logo
    • Name
    • Description
    • Version
    • Author
    • Permissions (including API whitelist requirements)
    • Keywords
    • etc
  • Managing plugins will be done by clicking on the installed plugins from the list. The popup will include:
    • A switch to enable/disable the plugin
    • A button to update (if available)
    • A button to remove (uninstall)
  • The ability to hot-reload plugins without having to reload the entire wallet to pick up any changes
  • Check for plugin updates daily, and on the loading of a profile, and notify the user as-and-when they are available (for installed and enabled plugins)
    • Permissions for plugins should be picked up and confirmed prior to updating (e.g. if a new permission is added to the update of a plugin, the new permission should be detailed before the plugin is updated)
  • There will be a centralized blacklist to filter out offensive plugins
    • Stored on a GitHub repo in JSON format
    • Allow wallet users to be able to report plugins (via GitHub or email)
    • Ability to override the blacklist via the search filters
    • Update the blacklist hourly or on each search, whichever is later
    • Cache the blacklist after each update

The difficulty level of this bounty is estimated as advanced. The reward for completion of this project is set at $2000 (paid in ARK Ѧ).

Requirements for completion:

  • Implement plugin discovery via NPM
  • Provide a simple-to-use interface for users
  • Unit tests for new pages/components
  • Don't impact the security of enabled plugins

Necessary Skills:

Applying For This Project

To apply for this project, please read more about the process below before leaving a comment with the following:

  1. A brief proposal relating to the project (e.g. Your experience, how you wish to approach the project, estimated time to completion, etc.)
  2. Your name and a contact email address (or another form of contact, eg. Slack username)

The Process

If your application for the project is successful we'll contact you using the details you provided, assign the project to you and mark it as in progress. You'll be required to check in regularly with the ARK team to discuss progress and development. We'll also use these updates to ensure that the PR is being completed to a satisfactory standard. If we determine that the project isn't being completed to a satisfactory standard and that this cannot be achieved with minor amends or within a satisfactory timeframe, we hold the right to dismiss the PR and reopen the project to other applicants.

To deliver the project your PR must be submitted to the respective repo. ARK repo maintainers will then leave comments and request amends if necessary. All amends requested by maintainers must be resolved before completion, and all projects must comply with our code standards and contribution guidelines (found at: https://docs.ark.io/guidebook/contribution-guidelines/). After you've submitted your project, we'll review against the brief to ensure it meets the criteria and deliverables.

Once your project is approved as complete a member of the ARK team will follow up to discuss payment. You'll need to submit an invoice and payment will be issued in (Ѧ) ARK (equivalent to the USD reward value assigned to the project), sent to an address of your choosing. We may need to request additional information regarding your identity in order to comply with our own internal Know Your Customer (KYC) guidelines.

By applying for this project you agree to the ARK Tier 0 terms and conditions outlined on this link: https://ark.io/tier-0-terms.

If you're unsuccessful in applying for this particular project, please consider applying for others. Thanks for your interest and good luck with your application!

@faustbrian faustbrian transferred this issue from ArkEcosystem/desktop-wallet Aug 20, 2019
@faustbrian faustbrian changed the title [2000$] Plugin Discovery [desktop-wallet][2000$] Plugin Discovery Aug 20, 2019
@faustbrian faustbrian added the Status: Available The issue is not assigned to anyone and available to be worked on. label Aug 20, 2019
@dated
Copy link

dated commented Aug 20, 2019

I hereby submit my application for this project.

Since first opening ArkEcosystem/desktop-wallet#1246 (Plugin Discovery) a lot of thought has been put into how this task can be designed and implemented. I am happy to see that some of my ideas, which have been discussed with the team's developers, were included in the final specifications for this project.

I am familiar with the inner workings of the wallet and the wallet's UI components, which will need to be extended by at least a dozen new components and services. Should my application be successfull, I will define milestones and dissect the specifications into clearly defined tasks to get a better idea on the necessary time to complete the project.

At this stage I'd say that the completion of this project should not take more than 4 weeks.

Edgar Goetzendorff / @dated [slack]

@alessiodf
Copy link

It's pretty much a no-brainer imo that Edgar is going to get this gig.

@alexbarnsley alexbarnsley added Status: In Progress The issue or pull request is being worked on. and removed Status: Available The issue is not assigned to anyone and available to be worked on. labels Aug 21, 2019
@faustbrian faustbrian changed the title [desktop-wallet][2000$] Plugin Discovery [desktop-wallet][2000 USD] Plugin Discovery Aug 22, 2019
@faustbrian faustbrian added the Difficulty: Advanced The issue requires advanced understanding of the code base. label Aug 23, 2019
@ghost ghost removed the Status: In Progress The issue or pull request is being worked on. label Dec 10, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Difficulty: Advanced The issue requires advanced understanding of the code base.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants