> On 19 Apr 2015, at 22:31, Hans Bakker <mailingl...@antwebsystems.com> wrote:
> 
> Again, as discussed at the ApacheCon in Austin we should start setting up a 
> plan how to best move the ERP application to the Moqui framework. Moqui 
> should not be part of the Apache foundation however the ERP application 
> should remain there.
> 
> Not only will it improve development of the ERP system but also will 
> establish a clean separation between application and frameworks and hopefully 
> getting David Jones back into the project.
> 
> Yes, I realize i open the pandora box :-) but we need to make some major 
> decisions....

I'll write this general reply with my OFBiz hat on, not my Moqui one. For Moqui 
Framework being used by OFBiz would be fantastic. It would bring a lot of well 
needed use and attention to the project and get it to a level that would take 
much longer with the current pace of growth. The growth is increasing, but it's 
nothing like the early years of OFBiz when the marketplace was so different... 
at that time OFBiz was unique as there weren't many feature-rich open source 
ecommerce or ERP systems, especially not in Java! I still find it amazing that 
OFBiz took off as much as it did... I was 23 years old when I started it, and 
only had 2 years of full-time development work behind me, and only 1 year of 
that was on ecommerce and ERP systems. Andrew had more experience with custom 
ecommerce development, but mostly in Perl IIRC.

Anyway, enough nostalgia, back to the present.

Using Moqui Framework in OFBiz would involve some really significant changes. 
The Moqui API is much cleaner (and everything is available through the single 
ExecutionContext class), but much different from the scattered static classes 
of the OFBiz framework. It may be possible to refactor much of the code with 
some regex search/replace wizardry, but there is a LOT of code in OFBiz to 
change.

The data model and to some extent service definitions would be easy. I have 
some FTL templates for transforming those that I'd be happy to share (they are 
in a private repo right now). I used these to create the little Moqui component 
that has the OFBiz data model from version 10.04 which I used with a client to 
run a sort of OFBiz/Moqui hybrid. On that note... if anyone wants to experiment 
with this that might be a good place to start: get the latest data model 
definitions in a Moqui component, deploy the Moqui WAR in the same servlet 
container as OFBiz (just drop it in an OFBiz component) and then run them in 
parallel accessing the same DB and play with migrating a few screens/etc.

IMO the biggest questions/concerns should be:

1. the significant effort required to do the migration
2. the impact on current users and applications

OFBiz would end up as a very different beast after such changes, there is no 
way around it. For example screen hierarchies, nesting, and URLs are handled 
totally different in Moqui. There are some very cool newer open source tools 
used in Moqui, and some cool features in Moqui that don't (yet) exist in OFBiz, 
and many of the more advanced and recent ones aren't mentioned here, but this 
is a basic list of fundamental differences between the two frameworks (see the 
"OFBiz: How does it compare to Moqui?" section near the bottom):

http://www.moqui.org/framework/index.html

OFBiz could do a custom set of FTL macros to transform screens and forms into 
HMTL/etc, but OOTB the UI is very different. This isn't just look and feel but 
also the approach to UI design. For example there are no lookup windows, other 
widgets and approaches are used instead (though those could be added... I just 
haven't found the need compared with other approaches that are often cleaner 
and easier for users). Looking at the demo server you'll see the big 
differences pretty quickly:

http://demo.moqui.org/

To go a deeper the Moqui book covers most of the framework and is available 
here:

http://www.moqui.org/MakingAppsWithMoqui-1.0.pdf

Is it a good idea? I'm not sure about that. Both concerns 1 and 2 above are a 
big deal. It would be a huge change for OFBiz users and not in any way 
backwards compatible. Not only the code in OFBiz but also all custom code built 
on OFBiz would have to be changed to update to the newest versions. Given the 
community and user driven reality of OFBiz, my guess is that the current 
architecture would never be fully abandoned and would live on into the 
foreseeable future with both bug fixes and new features going into it.

On the other hand the growth potential is pretty substantial. Code in OFBiz 
would end up being much cleaner and smaller. Security (especially authz) could 
be ripped out of thousands of places and put in simple database configuration. 
There would be better ability to handle custom and generic RESTful and other 
web services. Elasticsearch is there ready to use for both full text search and 
analytics (ie using Elasticsearch as a distributed and efficient OLAP data 
store... with ETL done through simple mapping configuration as opposed to 
custom code). New developers would be able to get started much faster and work 
more efficiently, and experienced developers would be able to build custom apps 
faster than they've ever experienced. With Moqui and Mantle already to a pretty 
good place last fall I was able to build a 400 form ERP application in about 4 
months working full time, and now Moqui/Mantle are far better because of this 
and other efforts going on so the time would be even less.

To muddy the waters more: the data model, logic, and UI in OFBiz have a lot of 
room for improvement. I made dozens of general changes, resulting in hundreds 
of physical changes, to the OFBiz data model when rewriting it for the Mantle 
Business Artifacts project. Most, but not all, of the general changes are 
listed here:

https://github.com/moqui/mantle/blob/master/mantle-udm/Planning.txt

On top of that there is the logic layer. Mantle has a 100% service logic layer 
unlike the object/service hybrid in OFBiz. There is a LOT of functionality for 
order processing in OFBiz, including a few features still not implemented in 
Mantle (though Mantle does have a few that aren't in OFBiz), but that part of 
OFBiz is one of the most difficult and error-prone parts to work on or 
customize. I've been on various contracts where they gave up making changes 
there so wanted to hire it out... and I've turned down a few because I hate 
working on it too! The Mantle approach gets rid of the whole ShoppingCart 
object idea (and the various related objects and services to get it to do 
general stuff) and just puts the cart in the database as a tentative order. 
This eliminates the need for many thousands of lines of code, and makes it more 
flexible and faster at the same time.

This is where I question whether it is a good idea to just replace the 
framework and leave all else as-is in OFBiz. I know very well that bringing 
this up is likely to stall the discussion and reduce the chances of OFBiz ever 
using Moqui, and the great thing for Moqui and OFBiz that it could be. Still, 
the effort required to do that migration is significant and IMO it would be far 
less effort to start with Moqui and Mantle and basically rewrite OFBiz to be a 
comprehensive business automation application suite, just as it is now, but 
cleaned up and streamlined for both developers and end-users in ways that are 
only dreamed of for OFBiz right now.

How long would that take? Depending on how many people are interested and get 
involved and how quickly they come up to speed on Moqui and Mantle (the book 
linked to above can help a lot with this, it covers the basics of Mantle too), 
my guess is that it could be to an alpha state and do everything OFBiz 
currently does and more (on the app level at least) within 6 months. IMO the 
result would be enough to compete well with projects like Odoo that are 
currently leapfrogging OFBiz... but are a serious pain to customize compared to 
OFBiz, and every single one has more restrictive licensing and are corporate 
backed as opposed to community driven.

This could be shorted with a starting point for the applications, and if there 
was enough interest theres a chance that I could release the more generic parts 
of this Moqui-based ERP system that I'm working on. I've already gone through 
the effort of splitting out the generic screens into an application that runs 
on its own, and the industry specific ERP that I'm working on simply extends it 
with additional forms, screens, services, and a few entities (really not bad 
for an industry where generic ERP systems have totally failed to the very 
different practices and business processes common in the industry, so nearly 
all market share is in industry specific systems).

I know that's more than 2 cents of thoughts, even if it may only be worth that. 
;) For those who have been around a while you know this sort of LONG email is 
consistent with my oft lamented style... hopefully it will that will at least 
bring a few chuckles and maybe some eye-rolling in fond remembrance of novel 
length mailing list threads.

-David


Reply via email to