TAG Meeting Agenda February 10th 2016 8pm UTC

The next scheduled TAG Meeting is February 10th 2016 @ 8pm UTC.

Agenda items

To properly address LDEV-449 I think LDEV-401 needs to be addressed first?

Can I propose LDEV-715 too? (In self-interest as I raised it)

would like to see LDEV-42 and other simple language improvements prioritised at some stageā€¦ still ā€˜newā€™ even with supportā€¦ yet new fancy stuff most will never use is getting priorityā€¦

I also er LDEV-720 something Iā€™ve stopped adding to trackers for listDeleteAt(string,-1) to remove the last element or listDeleteAt(string,-3) to remove the third last element in a listā€¦ #longtimefrustration having to use listLen(string)-1 all the time grrrr. glaring omission.

just found LDEV-520 - is that a joke that itā€™s still outstanding on basic IMAP support for folders, yet weā€™re having meetings about new functionalityā€¦ move the whole 1980ā€™s email out of adminā€¦ introduce 2016 ā€˜messagingā€™ (which includes plugin with current functionality for backward applications compatibility, allowing for a breath of fresh air in this stale part of the admin)

there are a few basic lang updates there in the tracker that can be knocked off easily and would make even 4.5 coders a sigh of relief after years of waitingā€¦ 42 is an example, as is 520

@simonhooker suggested I add this here, in case it can be picked up for the next meeting:

Cheers.

Re: LDEV-42 - Iā€™m neutral-to-positive on these (I donā€™t see enough value in them to be part of the core language but I can see why folks might appreciate them).

Re: LDEV-720 - Iā€™m against DeleteAt() ā€“ I think theyā€™re horrible methods (too specific) and Iā€™m against encouraging more list functions anyway. The negative index in other functions thoā€™, yes, absolutely makes sense.

Re: LDEV-520 - Like Iā€™ve said there, move to an extension, get the community to contribute.

Thanks for all the additions guys. Iā€™ve add them to the agenda for today.

1 Like

Can you elaborate on this?

We asked the LAS management board for some clarification on the direction of LuceeLang and where it fell in the LAS priorities. Our discussion on their reply will be in the meeting minutes from last week that @simonhooker is working on. Iā€™m also checking into making our private discussion about the matter public just to help show the conversation.

Cheers Brad / Simon / TAG

At present not all votes are finalised - the current counts reflect votes currently cast

Date/Time: 10th February 2016 @ 20:00 UCT
In Attendance: Brad Wood, Simon Hooker, Dominic Watson, Mark Drew, Micha Offner, Sean Corfield
Absent: Igal Sapir, Kai Koenig, Luis Majano

Summary of votes taken in this meeting
Full details of the discussions surrounding these tickets can be found in the minutes below

  • LDEV-449 - Redefining truthy and falsey values
    • Null - Accept ( 7 - 0 , 2 abstentions )
    • Number - Accept ( 6 - 0 , 3 abstentions )
    • String ( ā€œā€ throws error ) - Reject ( 6 - 0 , 3 abstentions )
    • String ( ā€œā€ returns false ) - Accept ( 4 - 2 , 3 abstentions )
    • Array - Accept ( 6 - 0 , 3 abstentions )
    • Struct - Accept ( 6 - 0 , 3 abstentions )
    • Object - Accept ( 6 - 0 , 3 abstentions )
  • LDEV-632 - Delete installed SSL certs within the UI - Accept ( 9 - 0 )
  • LDEV-642 - missing Array Splice function - Reject ( 7 - 2 )
  • LDEV-689 - New function structImmerse() - Reject ( 7 - 2 )
  • LDEV-698 - Make retry settings for email sending configurable - Accept ( 9 - 0 )
  • LDEV-709 - struct.clone() does not reliably preserve types of cloned child fields - Accept ( 9 - 0 )
  • LDEV-715 - Ability to create a Cache Connection from Application.cfc - Accept ( 9 - 0 )
  • LDEV-42 - Array methods: shift(), unshift(), push(), pop(), splice() - Reject ( 5 - 4 )
  • LDEV-720 - Allow Negative Index for ListDeleteAt and ArrayDeleteAt - Accept ( 9 - 0 )
  • LDEV-530 - Enhance CFIMAP Tag - Accept ( 5 - 4 )

Meeting minutes

  1. Approve meeting minutes from last meeting
  2. Discuss LAS response to direction on LuceeLang
    • TAG discussed the response from LAS management board.
    • Further discussion about ACF-Lucee compatibility and where it should be acceptable to break compatibility
    • Until further notice, the TAG will discuss whether changes will be made to CFML
    • Action: Additional categorisation to be added to Jira to help make it clearer what aspect of Lucee is going to be affected by a change.
  3. Access Modifiers for variables
    • http://docs.lucee.org/guides/lucee-5/access-modifiers.html
    • Community expressed concerns that declaring a scoped variable as private or public makes no sense.
    • The precedent for this was set by functions which are also defined in the ā€˜thisā€™ scope however have access modifiers implemented.
    • Opinion expressed that this is an ACF incompatiblity and something that is halfway towards Java.
    • ā€˜private lastnameā€™ should create ā€˜variables.lastnameā€™ but ā€˜private this.lastnameā€™ should be a compiler error. Similarly ā€˜public lastnameā€™ could create ā€˜variables.lastnameā€™.
    • There is already functionality that allows the default access modifier for the ā€˜thisā€™ scope.
    • Action: Simon to create a ticket and add to the voting list for this meeting to decide on whether or not to remove this feature from Lucee 5.0
    • Action: Simon to create a ticket to discuss how to implement this feature ( this assumes a ā€œRejectā€ vote on previous ticket )
  4. Review enhancement tickets
    • A selection of existing proposals and enhancements were selected for review during this TAG meeting. Not all selected tickets were able to be discussed within the time allowed.
    • LDEV-449 - Redefining truthy and falsey values
      • Discussion
        • This change will allow handling where at present an illegal exception is shown.
        • The expected behavior will need careful documentation to ensure it is clear how it would function differently to ACF.
        • Potential for users to be able to override the default behavior to enable users to customise how data types are parsed when converted to boolean. This option was met with criticism.
      • Conclusion
        • Action Subtasks to be raised for each data type and votes to be taken for each data type sub-task
        • Vote taken for each sub-type
          • Null - Accept ( 7 - 0 , 2 abstentions )
          • Number - Accept ( 6 - 0 , 3 abstentions )
          • String ( ā€œā€ throws error ) - Reject ( 6 - 0 , 3 abstentions )
          • String ( ā€œā€ returns false ) - Accept ( 4 - 2 , 3 abstentions )
          • Array - Accept ( 6 - 0 , 3 abstentions )
          • Struct - Accept ( 6 - 0 , 3 abstentions )
          • Object - Accept ( 6 - 0 , 3 abstentions )
    • LDEV-632 - Delete installed SSL certs within the UI
      • Discussion
        • This is not anything new to the language, just a new feature that should be added into the menu
      • Conclusion
        • Vote taken - Accept ( 9 - 0 )
    • LDEV-642 - missing Array Splice function
      • Discussion
        • Concerns on similarity in name between slice() and splice()
        • The same functionality can be achieved using the existing functions, splice() as part of the core could be seen as superfulous
        • Just because other languages have a function doesnā€™t mean Lucee needs to have the exact same function
      • Conclusion
        • Vote taken - Reject ( 7 - 2 )
    • LDEV-689 - New function structImmerse()
      • Discussion
        • Concern about how sub-array elements would be handled
        • Generally seen as something that should be achieved with a user defined function rather than a part of the general language
      • Conclusion
        • Vote taken - Reject ( 7 - 2 )
    • LDEV-698 - Make retry settings for email sending configurable
      • Discussion
        • This ticket is for a new attribute on the cfmail tag
        • A precedent for this logic exists in cfthread
      • Conclusion
        • Vote taken - Accept ( 9 - 0 )
    • LDEV-709 - struct.clone() does not reliably preserve types of cloned child fields
      • Discussion
        • This ticket appears to be more of a bug
        • Dev explained how the clone function behaves and why this is a problem.
        • There is not a simple fix for this
        • Similar to the functionality requested in LDEV-689 but different in that an exact copy is desired rather than having any concern about how to handle key conflicts
        • Option 4, calling clone only if ā€œdeepCopyā€ is set to true, suggested as a solution and put to a vote.
      • Conclusion
        • Vote taken - Accept ( 9 - 0 )
        • Action: Documentation to be updated to more clearly communicate the behavior of cloning
    • LDEV-715 - Ability to create a Cache Connection from Application.cfc
      • Discussion
        • Certain settings canā€™t be applied to the Application.cfc due to chicken-and-egg issues. Application.cfc can only cover runtime behavior.
        • Opinion in favour of allowing every runtime setting be able to be configured in the Application.cfc
      • Conclusion
        • Vote taken - Accept ( 9 - 0 )
        • Action: Create a matrix of features in the admin that could be exposed as configurable into the Application.cfc
    • LDEV-42 - Array methods: shift(), unshift(), push(), pop(), splice()
      • Discussion
        • Similar sentiment to LDEV-642 in that most of this functionality is available using existing functionality
        • Reluctance to add in a lot more array functions
        • Parallels drawn between how PHP has many functions that fundamentally perform the same functionality
        • This could be created as an extension
      • Conclusion
        • Vote taken - Reject ( 5 - 4 )
    • LDEV-720 - Allow Negative Index for ListDeleteAt and ArrayDeleteAt
      • Discussion
        • Intended to remove the reliance on having to retrieve list/array length in order to remove the last element.
        • Some opinion against implementing on lists however support for implementing on both list and array for consistency
        • Strong opinion against ā€œlastā€ as a magic word, support for numeric arguments only
      • Conclusion
        • Vote taken - Accept ( 9 - 0 )
        • Action: Add a ticket to allow discussion of making Left/Right(0) return an empty string.
    • LDEV-530 - Enhance CFIMAP Tag
      • Discussion
        • This ticket is mostly about improving parity with ACF, so more of a compatibility issue.
        • Opinion in favour of moving cfimap into an extension.
        • Some opinions that the ACF implementation is not perfect
      • Conclusion
        • Vote taken - Accept ( 5 - 4 )
  5. Date of next meeting 2016-02-24, 20:00 UTC