Hello Taher,

Thanks for getting back.

I think we are very much aligned on where we want to go but we have different perspectives on where we are in regards to OFBiz.

I will motivate my reply inline:

On 29.11.2021 10:36, Taher Alkhateeb wrote:
Hello,

I may be misunderstanding your point, but ofbiz is already broken down to sub-projects and the sub-projects are defined from the framework itself (check common.gradle). And it is possible to publish ofbiz parts separately, and also possible to isolate dependencies in each project and it is already done for some components. We also do already have a plugin mechanism that allows you to publish things separately.


I disagree with your statement above.
From my experience ofbiz is not split up in separate modules.
If you read https://issues.apache.org/jira/browse/OFBIZ-12308 and comments from https://github.com/apache/ofbiz-framework/pull/319 you will see what I mean.

There are circular dependencies between modules - so they are not split up.

Also if you look at https://issues.apache.org/jira/browse/OFBIZ-12263 you can't build plugins that use other repositories, unless you add those repos (and I believe also dependencies) to OFBIz.
Basically you can't publish binary plugins easily IMO.

In order to fix these I believe we need to use gradle sub-projects and have a full fledged build.gradle in each directory (full fledged gradle project) complete with dependencies.


Maybe there is little value now in working on Gradle beyond basic maintenance. The real hard-work that is probably badly needed is in breaking down the components themselves into layers that makes it easy to extend the framework at multiple levels. And to get rid of many things that piled up over the years. If you can get the system to work well at each of the below layers then extensibility might become an easier problem:

1. framework

2. data model -> framework

3. data-model services -> data -model

5. data-model UI -> data-model & data-model services

6. applications (I don't mean accounting, party, but rather a full application that utilizes the above layers)

7. plugins (pick and choose whatever layers needed)

My 2 cents.

I do agree we should allow multiple aggregation of these modules in different configurations.
That will allow us to build custom OFBiz distributions.

As I stated in https://github.com/apache/ofbiz-framework/pull/319 , this is not possible since modules are interconnected (circular dependencies) and you can't split them apart.

You can't publish and independently use framework/entities or services or base because they use classes from each other.

Also the gradle build system is highly customized and hence not very friendly to new developers because - since they need to understand the 1000+ lines of custom build code.

My proposal on this part is to:

* Drop dynamic project add via activeComponents (maybe keep for plugins ?!)
* Use standard build.gradle in every project - static project composition
* Gradually refactor code -> move dependencies into each sub-project
* Deprecate framework/start and replace with top level ofbiz-start gradle project that will depend and aggregate ofbiz modules and build the app. This will be the deliverable and also example on how to build your own ofbiz distribution.

People should be able to customize or create their own copy of this project to have a custom OFBiz distribution with whatever modules and configuration they desire. If we publish jars for modules, this project could be anywhere on git(hub).


Cheers,

Taher Alkhateeb

Regards,
--
Eugen Stan

+40770 941 271  / https://www.netdava.com
begin:vcard
fn:Eugen Stan
n:Stan;Eugen
email;internet:eugen.s...@netdava.com
tel;cell:+40720898747
x-mozilla-html:FALSE
url:https://www.netdava.com
version:2.1
end:vcard

Reply via email to