True.

But would you not like it that this refactoring isn't a factor when a
comparison between a release and trunk shows that trunk is performing worse
than a release?

Pierre Smits

*ORRTIZ.COM <http://www.orrtiz.com>*
Services & Solutions for Cloud-
Based Manufacturing, Professional
Services and Retail & Trade
http://www.orrtiz.com

On Sat, Jan 17, 2015 at 10:44 PM, Adrian Crum <
adrian.c...@sandglass-software.com> wrote:

> Comparisons can be done on any branch.
>
> Adrian Crum
> Sandglass Software
> www.sandglass-software.com
>
> On 1/17/2015 1:40 PM, Pierre Smits wrote:
>
>> Hi Adrian,
>>
>> I am inclined to say that any code improvement that removes quirkiness in
>> current code or unpredictable behaviour while at the same time helping
>> contributors to develop better solutions deserves a +1.
>>
>> However I have some concerns regarding the approach you're following.
>>
>> First, as we can expect that the quirkiness in current widget code is
>> being
>> utilized in various places in the dependent components, refactoring the
>> widget code can lead to a multitude of issues regarding Screens and Forms
>> in those components. I truly hope this will be as bad as I fear.
>>
>> Secondly, refactoring the widget code will have an impact on performance.
>> I
>> am sure we all hope (and some will expect it to be so) it is a positive
>> effect, but we can't tell - at this moment in time - what it will be.
>>
>> Given the two concerns I would rather have seen that the refactoring was
>> taking place in a separate development branch than in trunk. Having it
>> done
>> that way we would have the opportunity to compare the performance aspects
>> of the refactored code against trunk (e.g. with Apache jMeter and such),
>> and if favourable have another argument to tell to the users of old
>> releases.
>>
>> Also while having the refactoring taking place in the development branch,
>> we can not only isolate the aspects of my first concern (development
>> branch
>> issues vs trunk issues), but we will be able to better explain what the
>> effects of the refactoring could be visavis (potential) issues of the
>> users
>> of old versions considering upgrading.
>>
>> Best regards,
>>
>>
>> Pierre Smits
>>
>> *ORRTIZ.COM <http://www.orrtiz.com>*
>>
>> Services & Solutions for Cloud-
>> Based Manufacturing, Professional
>> Services and Retail & Trade
>> http://www.orrtiz.com
>>
>> On Sat, Jan 17, 2015 at 6:46 PM, Adrian Crum <
>> adrian.c...@sandglass-software.com> wrote:
>>
>>  Some time ago I started working on the screen widget thread safety. There
>>> were many places in code where widget models were being modified during
>>> rendering - resulting in unpredictable behavior, and in some cases it
>>> resulted in users having access to data they shouldn't be able to see.
>>>
>>> While doing that work, I was overwhelmed by the quantity of source code.
>>> The screen widget library was built using a lot of copy-and-paste -
>>> instead
>>> of extracting and reusing common things. Scott started working on reusing
>>> widget code, but that was just a small beginning.
>>>
>>> In a recent commit, I continued his work and made some more things
>>> reusable.
>>>
>>> Next, I would like to reorganize the source code folder structure. Here
>>> is
>>> what I have pictured:
>>>
>>> org/ofbiz/widget
>>>    artifact (Artifact Info classes)
>>>    cache (Widget cache classes)
>>>    model (Widget models)
>>>    renderer (Widget renderers)
>>>      macro
>>>      html
>>>      xml
>>>
>>> I think the simplified folder structure makes more sense and it will make
>>> it easier to locate classes.
>>>
>>> After that, I would like to add error checking code to the widget models
>>> -
>>> similar to what I did in Mini-Language. Right now, errors in widget XML
>>> are
>>> (sometimes) logged and widget parsing continues. If a developer does
>>> something wrong, they will not know it unless they check the logs. I
>>> would
>>> like to change the behavior so widget XML errors throw an exception with
>>> a
>>> detailed error message that includes the XML file name and line number
>>> where the error occurred. I believe this will benefit developers by
>>> making
>>> it clear when they have done something wrong.
>>>
>>> Finally, I would like to extract list functionality from the form widget
>>> and create a new grid widget. So, instead of a form widget representing a
>>> single data entry form OR a list, it will ONLY represent a single form.
>>> If
>>> you want a list, you use the grid widget. Initially, this change will be
>>> backwards-compatible - the XML parser will accept a <form> element for
>>> both
>>> types and it will create the correct model based on the type attribute.
>>>
>>> Overall, my goal is to make screen widgets more developer-friendly, and
>>> also to make it easier to innovate in the screen widget component.
>>>
>>> After all of this work is completed, I would like to backport it to the
>>> R14 branch.
>>>
>>> Comments are welcome.
>>>
>>>
>>> --
>>> Adrian Crum
>>> Sandglass Software
>>> www.sandglass-software.com
>>>
>>>
>>

Reply via email to