I agree, though I am biased, Apache OFBiz IS the best thing out there. However, 
I don't think OFBiz is the best thing that COULD be out there.

That said, I don't think that everyone should take the approach I am taking. If 
everyone did, there would be too much competition for me. On the other hand, if 
I personally did not take this approach... OFBiz would not exist.

-David


On Jan 25, 2011, at 2:19 PM, Ruth Hoffman wrote:

> David:
> Thanks for elaborating. IMHO, nothing you have outlined here is a show 
> stopper. What a shame that you can't see what others (many others...I'm 
> finding more each day) can clearly see: OFBiz is the best thing out there. It 
> may not be perfect in your eyes, but another framework isn't the answer. 
> IMHO, understanding how to work around any objections, being honest and open 
> about any limitations (if they really do exist) and remaining open to new 
> ways of thinking about OFBiz is the only way forward.
> 
> Regards,
> Ruth
> 
> On 1/25/11 4:53 PM, David E Jones wrote:
>> On Jan 25, 2011, at 6:02 AM, Ruth Hoffman wrote:
>> 
>>> On 1/25/11 2:06 AM, David E Jones wrote:
>>>> All of that said, now that Moqui is starting to take shape I find the 
>>>> OFBiz Framework to be cumbersome and inconsistent in many ways (things 
>>>> that are hard to fix, but that are not surprising given the pioneering 
>>>> history of the OFBiz Framework). Those funny quirky things are likely a 
>>>> turn-off to prospective developers and I'm hoping to remove that 
>>>> impediment to adopting the approach.
>>> David - you keep saying this..Please provide some examples of "cumbersome 
>>> and inconsistent" within the framework. And why not try and fix these? 
>>> Instead of reinventing the wheel. What "funny quirky" things have turned of 
>>> prospective developers? Do you have an specific examples?
>> Yes, I have mentioned these many times especially in the last 2-3 years. 
>> Some of them I have tried to fix in OFBiz itself and ran into rather large 
>> problems. These are not easy changes to make in a large and mature project 
>> like OFBiz, and after trying a few times I decided that a new framework was 
>> the only way forward (another thing I've written before and made very clear).
>> 
>> These are the things that led to many aspects of the design of Moqui, and 
>> the best summary of them is the document I wrote about the differences 
>> between the Moqui and OFBiz frameworks:
>> 
>> http://sourceforge.net/projects/moqui/forums/forum/1086127/topic/3597296
>> 
>> To sum up here are some of the major inconsistencies and annoyances in the 
>> current OFBiz framework that bug me frequently while I'm developing:
>> 
>> 1. XML actions are different in each widget and in the simple-methods; they 
>> share some underlying code but there are so many differences
>> 
>> 2. scriptlets and expressions are a messy combination of BeanShell, UEL, and 
>> Groovy and keeping track of which is a pain, plus the Groovy syntax and 
>> capabilities are SO much better than the others so I find myself almost 
>> always using ${groovy:...} instead of the default, and in annoying places 
>> like the form.field.@use-when attribute since it is always BeanShell I just 
>> use a set action to prepare a boolean and then check it in the use-when 
>> (BeanShell is HORRIBLE compared to groovy, especially when squeezed into XML 
>> attributes)
>> 
>> 3. the controller.xml file gets HUGE for larger applications, and if split 
>> it becomes harder to find requests and views; *Screen.xml files also tend to 
>> get HUGE with large numbers of screens in them; both are not organized in 
>> the same way as the application, also generally making things harder to 
>> find; views/screens and requests don't define incoming parameters so when 
>> doing request-redirect you have to specify the parameters to use in a larger 
>> number of places
>> 
>> 4. another on the topic of why so many files: service groups and 
>> simple-methods are just XML, why not include them inline in the service 
>> definition (especially for smaller services), and encourage fewer services 
>> per file
>> 
>> 5. loading of artifacts is not very lazy, meaning lots of unused screens, 
>> forms, services, entities and so on that are not used are loaded anyway; 
>> also many artifacts are difficult to reload by cache clearing and so that 
>> has limited support in OFBiz; this slows things down reloading lots of stuff 
>> in development, and results in more resources used than needed in production
>> 
>> 6. the deployment model of OFBiz is limited and the use of static fields for 
>> initialization makes it difficult to deploy in other ways; there are few 
>> init/destroy methods and object instances that would make more deployment 
>> models easier and more flexible; also because of this it is difficult to get 
>> data from other parts of the framework (for example the audit log stuff in 
>> the OFBiz Entity Engine uses ThreadLocal variables to pass userLoginId and 
>> visitId down since there is no other good way of doing it); in other words, 
>> the tools don't share a context
>> 
>> 7. no API for apps; the framework is made up of an enormous number of 
>> classes that follow a bunch of different "patterns" (in quotes because the 
>> use of the term is generous) because of various people "cleaning" things up 
>> over time (also in quotes because the use of the term is generous), and 
>> there is no distinction between the API that apps are intended to use and 
>> the internal implementation of that API; this has the nasty side effect of 
>> making it difficult to find the object and method you want, AND it makes 
>> backward compatibility problems REALLY nasty because it gets people 
>> believing that EVERY SINGLE object needs to ALWAYS be backward compatible... 
>> and that results in more and more piles of trash code lying around over 
>> time, and all of that code and differing patterns makes framework changes 
>> error-prone and unnecessarily difficult (and this is true for some of the 
>> app code in OFBiz too)
>> 
>> I should get back to work... there's a short list anyway...
>> 
>> The trick is how to solve these without abandoning backward compatibility, 
>> and requiring a refactor of much of the framework and then based on that the 
>> updating of massive numbers of application artifacts... and that is just the 
>> stuff in OFBiz itself... not including everything that everyone else has 
>> written outside the project that they may want to update. And, ALL of that 
>> would have to be retested. Plus, it would take so long to get all of this 
>> done in a branch with huge numbers of changes while others are making 
>> incremental changes in the trunk making it nearly impossible to merge the 
>> branch into the trunk, so it would basically be a fork anyway...
>> 
>> -David
>> 
>> 
>> 
> 

Reply via email to