Skip to content

Plugins: Discussion of design #306

@shmolf

Description

@shmolf

Plugins: Some want them, all need them [see your local physician for details]

I think plugins could help expand and encapsulate functionality in the new application.

If one user wants charts, and another wants WordPress sync support, then all users should not be subjected to load time and functionality where not desired. For if one JS function fails, it could at least disrupt other functionality.

This begs the question of how to design, implement, and assign responsibility for various plugins.

The foundation of a plugin system needs to consider numerous points of conflict of views, and enable independent plugins that can share resources, whilst not disabling another (except where dependencies lay).

I myself have my own considerations, but this issue is to open a topic for other's points of view to declare their thoughts.

  • versioning
    • The app may update in a version that conflicts with a plugin.
      • should the app decline the update because of an installed plugin? Or could the app update and disable the plugin, and any dependent plugins.
  • encapsulation
    • Typically with ES6, JS Modules, TypeScript, there's more encapsulation so one plugin (app) doesn't conflict with another.
      • Should plugins ever depend on the existence of sibling plugins?
      • Should the failure of one plugin block or close the application from continuing?
        • The obvious answer may be "No", but if the plugin is as vital as an "auto-save" or "auto-sync", then something like an application block might signify an issue before the user assumes everything is okay.
      • Should there be resource restrictions?
        • A plugin may require more rendering power. This could slow down the application with machines using onboard-graphics processors. Those with independent cards may not care.
  • other considerations not disclosed here

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions