+1

Thank you Michael for the well thought proposal.

Jacopo

On Sat, Feb 18, 2017 at 10:17 AM, Michael Brohl <michael.br...@ecomify.de>
wrote:

> Hi everyone,
>
> we are currently working hard to make OFBiz a modern, quality, robust and
> easy to use framework.
> There are several ongoing initiatives like refactoring the core, UX,
> changing the build and plugin system and cleaning up the javadocs, only to
> mention a few.
>
> In mini lang I see another part of our project which needs a
> refactoring/change. Here are some reasons:
>
> - Programming in XML is hard to deal with when it comes to refactoring.
>
> - The "code" cannot be debugged and is hard to review and maintain.
>
> - It is slower because of the overhead of parsing and processing XML
> documents
>
> - It is highly verbose, even so more than Java!
>
> - It is difficult to reason about because everything appears as a string
> (variables, maps, objects, etc ...) which makes it very difficult to know
> where something was declared or modified
>
> - It is highly error prone and brittle (again due to string declarations)
>
> - It is not a full programming language (unlike groovy, or any other
> language that supports a DSL). Thus it has many limitations that forces the
> developer to write many more lines of code to achieve the same result.
>
> - The code is not reusable (limitation of the DSL)
>
> - The code is not composable (limitation of the DSL)
>
> - Minilang depends on a lot of Java constructs (implementations, not
> interfaces) that require refactoring, making any improvements to the core
> API more challenging
>
> - Minilang is used inconsistently (different DSL in widgets, services and
> entities). Hence, we need to keep only a minimal DSL to declare things only.
>
>
> We already have Java based implementations for services and events and
> there are ideas to implement a Groovy DSL which can be used as easy (or
> easier) as mini lang and does not have the above mentioned flaws.
>
> I therefore like to propose to deprecate the mini lang implementation
> which means:
>
> 1. there will be no new implementations based on mini lang accepted to go
> into the code base.
>
> 2. mini lang and mini lang code will be maintained with bug and security
> fixes for backwards compatibility and to support existing adopters relying
> on mini lang.
>    There will be no new features though.
>
> 3. we will continously replace the mini lang implementations with Java
> and/or Groovy code. This will be another good opportunity for contributors
> to engage in the project.
>
>
> This will certainly be a longer process and we will not stop support for
> mini lang but I think we should avoid to add more mini lang implementations
> to the project.
>
> What do you think?
>
> Regards,
>
> Michael
>
>
>
>

Reply via email to