Uploaded image for project: 'Forge'
  1. Forge
  2. FORGE-286

Forge needs a de-centralized plugin distribution and repository system

    XMLWordPrintable

Details

    Description

      There is no disputing the value of this type of feature, as has been shown with App-stores of all kinds. This would be relatively simple to implement as a Maven-based system, delegating all of the artifact resolution and dependency management to Maven.

      Features Forge would need to provide:

      1) Built-in plugins and native APIs to search/install/remove/update plug-ins (easy using forge Resource APIs + Aether to add/remove JARs.) This internal plugin/commands could be called "forge" for simplicity

      ------------------------------------------------------------------------------------------
      $ forge plugin-find prettyfaces

      Forge found the following plugins in specified repositories: <--- notice the 'forgeplugin' classifier used to identify forge plugins from other artifacts.

      $ forge plugin-install prettyfaces --version 3.1.0

      **SUCCESS** [prettyfaces] plugin was successfully installed. You will need to restart forge to see these changes.

      $ forge plugin-list

      Listing installed plugins:

      • prettyfaces [3.1.0]
      • forge-scaffold [1.0.0.Alpha1]
      • forge-javaee6 [1.0.0.Alpha1]
      • home-control [1.0.0.Alpha1]

      $ forge plugin-remove prettyfaces

      Are you sure you you want to remove the plugin(s) [prettyfaces] [Y,n]? Y
      **SUCCESS** [prettyfaces] plugin was successfully removed. You will need to restart forge to see these changes.

      ------------------------------------------------------------------------------------------

      2) Plugin repository management (add/remove/edit/list current plugin repository targets.)

      ------------------------------------------------------------------------------------------
      $ forge repo-list

      Currently using the following plugin repositories:

      $ forge repo-add http://jboss.org/forge/repository/ <-- These two will be KEY, we NEED THESE to happen
      $ forge repo-add http://javaee.org/forge/repository/

      $ forge repo-list

      Currently using the following plugin repositories:

      $ forge repo-del 5

      **SUCCESS** removed repository http://javaee.org/forge/repository/. Plugins installed from this repository will no longer be auto-updated, and can be removed using [forge plugin-remove

      {plugin-id}

      ]

      ------------------------------------------------------------------------------------------

      3) Auto-update functionality

      Periodically search for updates to existing plugins (or search on request) - ask users if they would like to see a list of updates or perform an automated update / update individual plugins.

      4) A meta-data system of identifying compatible versions of plugins w/running version of forge.

      Possibly need to create a maven packaging type and build plugin in order to facilitate this type of additional metadata and artifact resolution. (Or could require a <classifier>forgeplugin</classifier>. We already have the maven GAV (GroupId : ArtifactId : Version) information. Supplemented with this classifier, we could easily identify forge plugins from other artifacts in maven.

      Attachments

        Issue Links

          Activity

            People

              lincolnthree Lincoln Baxter III (Inactive)
              lincolnthree Lincoln Baxter III (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: