[jira] [Commented] (OFBIZ-7972) Create a (PoC) plugin system for OFBiz based on Gradle

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (OFBIZ-7972) Create a (PoC) plugin system for OFBiz based on Gradle

Nicolas Malin (Jira)

    [ https://issues.apache.org/jira/browse/OFBIZ-7972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15489589#comment-15489589 ]

Taher Alkhateeb commented on OFBIZ-7972:
----------------------------------------

Hi Michael, thank you for the help, I will update the patch soon with your feedback as well as that of Gil's

You asked me a difficult question on versioning which I was thinking about a lot. In my current design I made OFBiz plugins themselves versioned using [Semantic Versioning 2.0.0|http://semver.org/] and you can have a very complex dependency tree with versions without a problem and it will all be resolved automatically. This is just good old maven combined with the power of Gradle that makes this whole system seamless.

OFBiz itself, however, is not versioned, so I do not have at the moment a solution to say that this plugin only works with OFBiz 16 and that plugin works with 15 and so on. The reasons for this problem:
- There is no file in OFBiz that tells us what is the current version of OFBiz
- Using subversion to keep track of versions in my opinion is a bad idea because it makes the solution brittle and dependent on tools instead of being part of the OFBiz solution. If we switch the version control system in the future then our solution breaks down.
- What about trunk? It's hard to make plugins dependent on trunk because trunk is this constantly changing thing.

So, I have no clear solution in my mind at the moment, but I am sharing my ideas to brainstorm together

> Create a (PoC) plugin system for OFBiz based on Gradle
> ------------------------------------------------------
>
>                 Key: OFBIZ-7972
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-7972
>             Project: OFBiz
>          Issue Type: Improvement
>    Affects Versions: Upcoming Branch
>            Reporter: Taher Alkhateeb
>            Assignee: Taher Alkhateeb
>            Priority: Minor
>              Labels: plugin, proof-of-concept, system
>         Attachments: OFBIZ-7972.patch
>
>
> This JIRA houses the attempt to create a plugin system for OFBiz based on gradle. The plugin system should have the following features:
> - It is independent of the version control system, file system, operating system and any other environment tools surrounding OFBiz. Instead, it should be fully integrated with OFBiz.
> - It should unify the way OFBiz is extended, both for official supported plugins and for third party plugins
> - The plugin system takes advantage of the concept of a "component" in OFBiz and utilize it as the building block for plugins
> - The plugin system supports the concepts of "Repository" and "Dependency Management". If possible, the plugin system will utilize these concepts directly from Gradle instead of writing them from scratch.
> The initial API for the plugin system will be small and expands as needed. The API should include the following gradle tasks:
> - createPlugin: creates a new plugin based on templates and place it in the plugins directory
> - installPlugin: Activate a plugin and run Install. Plugin must exist in /specialpurpose
> - uninstallPlugin: Deactivate a plugin and run its uninstall script
> - publishPlugin: publish a plugin to local maven repository
> - pullPlugin: download a plugin with its dependencies (plugins) from a repository and install them



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)