+1 I recommend that you put somewhere in the wiki page the _reasons_ why minilang is deprecated (the ones you listed in this thread).
On Wed, Mar 29, 2017 at 6:12 PM, Michael Brohl <michael.br...@ecomify.de> wrote: > Hi all, > > thank you for your replies and comments to the proposal to deprecate > minilang in OFBiz. > > We had mostly +1's, some questions and remarks and no -1's. It was not an > official vote but I think we can take these results as a confirmation that > the community wants to follow the proposal, right? > > If there are any objections, please speak up now. I will wait for another > 5 days and if there are no objections I will apply lazy consensus and take > the next steps which would be: > > 1. create a Wiki page for the documentation and description of the > migration process and how mini lang will be replaced. > > 2. prominently state in the Wiki that minilang will be deprecated, e.g. in > [1] > > 3. put deprecation tags in the corresponding code > > 4. kindly ask contributors with open patches written in mini lang to > replace them by Java code [2] > > 5. start an initiative to replace existing mini lang code with Java code > where applicable. This needs some more planning and discussion which parts > we'll like to replace with Java code and which parts will better be > replaced by some kind of DSL (which we have to create first). > > Any other important steps you would see to get the initiative started? > Looking forward to you suggestions. > > Thanks and regards, > > Michael > > > [1] https://cwiki.apache.org/confluence/display/OFBADMIN/Mini+ > Language+-+minilang+-+simple-method+-+Reference > > [2] does anyone know a way to batch comment Jira issues like it is > possible in Redmine? > > > Am 18.02.17 um 10:17 schrieb Michael Brohl: > > 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 >> >> >> >> > >