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

Forge needs a de-centralized plugin distribution and repository system

    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.

        Gliffy Diagrams

          Issue Links

            Activity

            Hide
            lincolnthree Lincoln Baxter III added a comment -

            This has been partially implemented via:

            $ forge find-plugin *
            $ forge insall-plugin theplugin

            https://raw.github.com/forge/plugin-repository/master/repository.yaml

            We still need a way of automating the repository management tasks, and providing alternate repositories.

            We can open additional issues for enhancements.

            Show
            lincolnthree Lincoln Baxter III added a comment - This has been partially implemented via: $ forge find-plugin * $ forge insall-plugin theplugin https://raw.github.com/forge/plugin-repository/master/repository.yaml We still need a way of automating the repository management tasks, and providing alternate repositories. We can open additional issues for enhancements.
            Hide
            alceu Alceu Medeiros added a comment -

            As discussed in IRC channel with development team, to provide a forge plugin is required git as project repository, and to publish in a intranet needs a new repository.yaml file. It would be nice if we have a decentralized repository system, that doesn't depends on the project repository, opening possibilities to SVN, for example. I think the best solution is to delegate all of the artifact resolution and dependency management to Maven, as mentioned in this thread.

            Show
            alceu Alceu Medeiros added a comment - As discussed in IRC channel with development team, to provide a forge plugin is required git as project repository, and to publish in a intranet needs a new repository.yaml file. It would be nice if we have a decentralized repository system, that doesn't depends on the project repository, opening possibilities to SVN, for example. I think the best solution is to delegate all of the artifact resolution and dependency management to Maven, as mentioned in this thread.
            Hide
            lincolnthree Lincoln Baxter III added a comment -

            Hey Alceu, in case I have forgotten, are you interested in developing the Maven plugin installation feature?

            Show
            lincolnthree Lincoln Baxter III added a comment - Hey Alceu, in case I have forgotten, are you interested in developing the Maven plugin installation feature?
            Hide
            lincolnthree Lincoln Baxter III added a comment -

            I can assign this issue to you if that's the case!

            Show
            lincolnthree Lincoln Baxter III added a comment - I can assign this issue to you if that's the case!
            Hide
            lincolnthree Lincoln Baxter III added a comment -

            This has been solved via Furnace Manager. The Repository will be implemented as part of the Forge 2 website launch.

            Show
            lincolnthree Lincoln Baxter III added a comment - This has been solved via Furnace Manager. The Repository will be implemented as part of the Forge 2 website launch.

              People

              • Assignee:
                lincolnthree Lincoln Baxter III
                Reporter:
                lincolnthree Lincoln Baxter III
              • Votes:
                1 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Development