Plugin System #316

Open
TheJaredWilcurt opened this Issue Jan 6, 2017 · 0 comments

Projects

None yet

1 participant

@TheJaredWilcurt
Member

General idea

Scout-App could potentially support a plugin system. To allow for easier adding of new features. For example, plugins could be dynamically loaded into the app and shown as tabs:

Mockup showing tabs


Project Structure

I imagine a plugin's folder structure would look like this:

folder structure

The package.json would include specific attributes like:

"scout": {
    "version": "2.12.12",
    "start": "index.html"
},
  • version = which version of Scout-App it works with.
  • scout-start = The file Scout-App should load into the app.

Acquiring Plugins

There could be a Plugins modal available from the top navigation. It could download a list of available plugins for your version of Scout-App and allow you to download and install them fairly easily.

Alternatively, we could allow users to drag and drop .zip files into the app to have it auto install. However this puts more effort on the part of the user and would require more safety checks and warning messages if the plugin version is not compatible with that version of Scout-App, or if the zip file is not formatted properly.


Potential problems:

  • Localizing plugins - Do they get localization keys like the rest of the app? How do we enforce this?
  • Maintaining plugins - We cannot link dynamically to other people's repos, due to security risks. If they're account got hacked and someone modified the code to be malicious, it could do a lot of damage, since they could run any executable or delete or create any file on a user's computer. We would need to have a plugins repo under the scout-app organization or something similar.
  • Redundant data - Since each plugin would ship with it's own node_modules folder (if needed), then multiple plugins could potentially have the same dependencies and bloat download sizes (not a huge deal).

Project Management

This would require creating some tutorials and additional documentation to help developers create plugins.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment